package NET.worlds.scape; import NET.worlds.console.Console; import NET.worlds.console.ImageCanvas; import NET.worlds.console.PolledDialog; import NET.worlds.network.URL; import java.awt.Button; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Label; import java.util.Vector; public class InventoryDialog extends PolledDialog { private InventoryList rightWristItems_; private ImageCanvas rightWristIcon_; private InventoryList leftWristItems_; private ImageCanvas leftWristIcon_; private InventoryList headItems_; private ImageCanvas headIcon_; private InventoryList rightAnkleItems_; private ImageCanvas rightAnkleIcon_; private InventoryList leftAnkleItems_; private ImageCanvas leftAnkleIcon_; private Button okButton_; private Button cancelButton_; private Frame parent_; private static final URL defaultImageURL = URL.make("home:..\\default.gif"); private static Object lastPosAndSize; public InventoryDialog(Frame frame) { super(frame, null, Console.message("Inventory"), true); InventoryManager im = InventoryManager.getInventoryManager(); Vector equippableItems = im.getEquippableItems(); Vector equippedItems = im.getEquippedItems(); this.parent_ = frame; this.rightWristItems_ = new InventoryList(); this.leftWristItems_ = new InventoryList(); this.headItems_ = new InventoryList(); this.rightAnkleItems_ = new InventoryList(); this.leftAnkleItems_ = new InventoryList(); this.rightWristIcon_ = new ImageCanvas(defaultImageURL); this.leftWristIcon_ = new ImageCanvas(defaultImageURL); this.headIcon_ = new ImageCanvas(defaultImageURL); this.leftAnkleIcon_ = new ImageCanvas(defaultImageURL); this.rightAnkleIcon_ = new ImageCanvas(defaultImageURL); this.okButton_ = new Button("Ok"); this.cancelButton_ = new Button("Cancel"); for (int i = 0; i < equippableItems.size(); i++) { EquippableItem item = (EquippableItem)equippableItems.elementAt(i); switch (item.getBodyLocation()) { case 4: this.headItems_.add(item); break; case 8: this.rightWristItems_.add(item); break; case 13: this.leftWristItems_.add(item); break; case 17: this.rightAnkleItems_.add(item); break; case 21: this.leftAnkleItems_.add(item); } } for (int i = 0; i < equippedItems.size(); i++) { EquippableItem item = (EquippableItem)equippedItems.elementAt(i); switch (item.getBodyLocation()) { case 4: this.headItems_.selectItem(item); break; case 8: this.rightWristItems_.selectItem(item); break; case 13: this.leftWristItems_.selectItem(item); break; case 17: this.rightAnkleItems_.selectItem(item); break; case 21: this.leftAnkleItems_.selectItem(item); } } this.ready(); } @Override protected void build() { this.setBackground(Color.cyan); this.setForeground(Color.black); GridBagLayout gbag = new GridBagLayout(); this.setLayout(gbag); GridBagConstraints c = new GridBagConstraints(); Font f1 = new Font(Console.message("ConsoleFont"), 1, 18); Font f2 = new Font(Console.message("ConsoleFont"), 0, 12); Label invLabel = new Label("Inventory"); c.gridx = 2; c.gridy = 0; c.weightx = 3.0; invLabel.setFont(f1); this.add(gbag, invLabel, c); Label rwLabel = new Label("Right Hand"); c.gridx = 4; c.gridy = 4; c.weightx = 1.0; rwLabel.setFont(f2); this.add(gbag, rwLabel, c); c.gridy = 5; c.weighty = 1.0; this.rightWristItems_.setFont(f2); this.add(gbag, this.rightWristItems_, c); c.gridx = 3; c.gridy = 5; c.weighty = 1.0; c.weightx = 1.0; this.add(gbag, this.rightWristIcon_, c); Label lwLabel = new Label("Left Hand"); c.gridx = 0; c.gridy = 4; c.weighty = 1.0; lwLabel.setFont(f2); this.add(gbag, lwLabel, c); c.gridy = 5; c.weighty = 1.0; this.leftWristItems_.setFont(f2); this.add(gbag, this.leftWristItems_, c); c.gridx = 1; c.gridy = 5; c.weighty = 1.0; c.weightx = 1.0; this.add(gbag, this.leftWristIcon_, c); Label headLabel = new Label("Head"); c.gridx = 2; c.gridy = 2; c.weighty = 1.0; headLabel.setFont(f2); this.add(gbag, headLabel, c); c.gridy = 3; c.weighty = 1.0; this.headItems_.setFont(f2); this.add(gbag, this.headItems_, c); c.gridx = 2; c.gridy = 4; c.weighty = 1.0; c.weightx = 1.0; this.add(gbag, this.headIcon_, c); Label raLabel = new Label("Right Foot"); c.gridx = 4; c.gridy = 6; c.weightx = 1.0; raLabel.setFont(f2); this.add(gbag, raLabel, c); c.gridy = 7; c.weighty = 0.0; this.rightAnkleItems_.setFont(f2); this.add(gbag, this.rightAnkleItems_, c); c.gridx = 3; c.gridy = 7; c.weighty = 1.0; c.weightx = 1.0; this.add(gbag, this.rightAnkleIcon_, c); Label laLabel = new Label("Left Foot"); c.gridx = 0; c.gridy = 6; c.weighty = 1.0; laLabel.setFont(f2); this.add(gbag, laLabel, c); c.gridy = 7; c.weighty = 0.0; this.leftAnkleItems_.setFont(f2); this.add(gbag, this.leftAnkleItems_, c); c.gridx = 1; c.gridy = 7; c.weighty = 1.0; c.weightx = 1.0; this.add(gbag, this.leftAnkleIcon_, c); c.gridx = 0; c.gridy = 10; c.weightx = 2.0; c.weighty = 1.0; this.okButton_.setFont(f2); this.add(gbag, this.okButton_, c); c.gridx = 4; c.gridy = 10; this.cancelButton_.setFont(f2); this.add(gbag, this.cancelButton_, c); this.setSize(360, 300); } @Override public synchronized boolean done(boolean confirmed) { Vector equippedItems = new Vector(); EquippableItem eItem; if ((eItem = this.rightWristItems_.getSelected()) != null) { equippedItems.add(eItem); } if ((eItem = this.leftWristItems_.getSelected()) != null) { equippedItems.add(eItem); } if ((eItem = this.headItems_.getSelected()) != null) { equippedItems.add(eItem); } if ((eItem = this.leftAnkleItems_.getSelected()) != null) { equippedItems.add(eItem); } if ((eItem = this.rightAnkleItems_.getSelected()) != null) { equippedItems.add(eItem); } if (confirmed) { InventoryManager im = InventoryManager.getInventoryManager(); im.setEquippedItems(equippedItems); } return super.done(confirmed); } @Override public boolean handleEvent(java.awt.Event event) { return super.handleEvent(event); } @Override public boolean action(java.awt.Event event, Object what) { Object target = event.target; URL imageURL = defaultImageURL; if (target == this.leftWristItems_) { InventoryItem item = this.leftWristItems_.getSelected(); if (item != null) { imageURL = item.getItemGraphicLocation(); } this.setIcon(this.leftWristIcon_, imageURL); return true; } else if (target == this.rightWristItems_) { InventoryItem item = this.rightWristItems_.getSelected(); if (item != null) { imageURL = item.getItemGraphicLocation(); } this.setIcon(this.rightWristIcon_, imageURL); return true; } else if (target == this.headItems_) { InventoryItem item = this.headItems_.getSelected(); if (item != null) { imageURL = item.getItemGraphicLocation(); } this.setIcon(this.headIcon_, imageURL); return true; } else if (target == this.leftAnkleItems_) { InventoryItem item = this.leftAnkleItems_.getSelected(); if (item != null) { imageURL = item.getItemGraphicLocation(); } this.setIcon(this.leftAnkleIcon_, imageURL); return true; } else if (target == this.rightAnkleItems_) { InventoryItem item = this.rightAnkleItems_.getSelected(); if (item != null) { imageURL = item.getItemGraphicLocation(); } this.setIcon(this.rightAnkleIcon_, imageURL); return true; } else if (target == this.okButton_) { return this.done(true); } else { return target == this.cancelButton_ ? this.done(false) : false; } } private void setIcon(ImageCanvas ic, URL newLoc) { ic.setNewImage(newLoc, this.getGraphics()); this.repaint(); } @Override public void savePosAndSize(Object state) { lastPosAndSize = state; } @Override public Object restorePosAndSize() { return lastPosAndSize; } @Override public boolean keyDown(java.awt.Event event, int key) { return key == 27 ? this.done(false) : super.keyDown(event, key); } @Override protected synchronized void activeCallback() { this.notify(); } }