import java.awt.Panel; import java.awt.Label; import java.awt.Canvas; import java.awt.Color; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.MediaTracker; import java.io.DataInputStream; import java.awt.Font; public class statusPne extends Panel implements constants { private pClient parent = null; GridBagLayout paneLayout = new GridBagLayout(); GridBagLayout energyLayout = new GridBagLayout(); GridBagLayout strengthLayout = new GridBagLayout(); GridBagLayout quicknessLayout = new GridBagLayout(); private Panel titlePane = new Panel(); private headPne titleCanvas = new headPne("Welcome to Phantasia!"); private Panel statsPane = new Panel(); private Panel energyPane = new Panel(); private titlePne energyLabel = new titlePne("Energy"); private barGraph energyGraph = new barGraph(); public imagePne shieldImage = null; private numberPne shieldLabel = new numberPne("0"); private Panel strengthPane = new Panel(); private titlePne strengthLabel = new titlePne("Strength"); private barGraph strengthGraph = new barGraph(); private imagePne swordImage = null; private numberPne swordLabel = new numberPne("0"); private Panel quicknessPane = new Panel(); private titlePne quicknessLabel = new titlePne("Speed"); private barGraph quicknessGraph = new barGraph(); private imagePne quicksilverImage = null; private numberPne quicksilverLabel = new numberPne("0"); private Panel treasurePane = new Panel(); private Panel manaPane = new Panel(); private imagePne manaImage = null; private numberPne manaLabel = new numberPne("0"); private Panel levelPane = new Panel(); private imagePne levelImage = null; private numberPne levelLabel = new numberPne("0"); private Panel goldPane = new Panel(); private imagePne goldImage = null; private numberPne goldLabel = new numberPne("0"); private Panel gemsPane = new Panel(); private imagePne gemsImage = null; private numberPne gemsLabel = new numberPne("0"); private Panel equipmentPane = new Panel(); private imagePne cloakImage = null; private imagePne blessingImage = null; private imagePne crownImage = null; private imagePne palantirImage = null; private imagePne ringImage = null; private imagePne virginImage = null; private String name; /* player name */ private String location; /* player location */ public statusPne(pClient c) { GridBagConstraints constraints = new GridBagConstraints(); parent = c; shieldImage = new imagePne(parent); swordImage = new imagePne(parent); quicksilverImage = new imagePne(parent); manaImage = new imagePne(parent); levelImage = new imagePne(parent); goldImage = new imagePne(parent); gemsImage = new imagePne(parent); cloakImage = new imagePne(parent); blessingImage = new imagePne(parent); crownImage = new imagePne(parent); palantirImage = new imagePne(parent); ringImage = new imagePne(parent); virginImage = new imagePne(parent); constraints.insets.top = 2; constraints.insets.bottom = 2; constraints.insets.left = 2; constraints.insets.right = 2; setBackground(backgroundColor); /* START MAIN PANE LAYOUT */ setLayout(paneLayout); constraints.gridx = 1; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; paneLayout.setConstraints(titleCanvas, constraints); add(titleCanvas); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 3; constraints.weightx = 1; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; paneLayout.setConstraints(statsPane, constraints); add(statsPane); constraints.gridx = 1; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; paneLayout.setConstraints(treasurePane, constraints); add(treasurePane); constraints.gridx = 1; constraints.gridy = 2; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 1; constraints.fill = GridBagConstraints.BOTH; constraints.anchor = GridBagConstraints.CENTER; paneLayout.setConstraints(equipmentPane, constraints); equipmentPane.setBackground(backgroundColor); add(equipmentPane); /* END MAIN PANE LAYOUT */ /* START STATS PANE LAYOUT */ statsPane.setLayout(new GridLayout(3, 1, 2, 4)); statsPane.setBackground(backgroundColor); statsPane.add(energyPane); statsPane.add(strengthPane); statsPane.add(quicknessPane); energyPane.setLayout(energyLayout); energyPane.setBackground(highlightColor); constraints.insets.top = 0; constraints.insets.bottom = 0; constraints.insets.left = 0; constraints.insets.right = 0; constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 3; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; energyLayout.setConstraints(energyLabel, constraints); energyLabel.setSize(16, 16); energyPane.add(energyLabel); constraints.gridx = 0; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 1; constraints.weighty = 0; constraints.fill = GridBagConstraints.BOTH; constraints.anchor = GridBagConstraints.CENTER; energyLayout.setConstraints(energyGraph, constraints); energyPane.add(energyGraph); constraints.gridx = 1; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.insets.left = 4; constraints.insets.right = 2; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.CENTER; energyLayout.setConstraints(shieldImage, constraints); shieldImage.setSize(18, 18); energyPane.add(shieldImage); constraints.gridx = 2; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.insets.left = 0; constraints.insets.right = 0; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.CENTER; energyLayout.setConstraints(shieldLabel, constraints); energyPane.add(shieldLabel); strengthPane.setLayout(strengthLayout); strengthPane.setBackground(highlightColor); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 3; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; strengthLayout.setConstraints(strengthLabel, constraints); strengthLabel.setSize(16, 16); strengthPane.add(strengthLabel); constraints.gridx = 0; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 1; constraints.weighty = 0; constraints.fill = GridBagConstraints.BOTH; constraints.anchor = GridBagConstraints.CENTER; strengthLayout.setConstraints(strengthGraph, constraints); strengthPane.add(strengthGraph); constraints.gridx = 1; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.insets.left = 4; constraints.insets.right = 2; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.CENTER; strengthLayout.setConstraints(swordImage, constraints); swordImage.setSize(18, 18); strengthPane.add(swordImage); constraints.gridx = 2; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.insets.left = 0; constraints.insets.right = 0; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.CENTER; strengthLayout.setConstraints(swordLabel, constraints); strengthPane.add(swordLabel); quicknessPane.setLayout(quicknessLayout); quicknessPane.setBackground(highlightColor); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 3; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; quicknessLayout.setConstraints(quicknessLabel, constraints); quicknessLabel.setSize(16, 16); quicknessPane.add(quicknessLabel); constraints.gridx = 0; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 1; constraints.weighty = 0; constraints.fill = GridBagConstraints.BOTH; constraints.anchor = GridBagConstraints.CENTER; quicknessLayout.setConstraints(quicknessGraph, constraints); quicknessPane.add(quicknessGraph); constraints.gridx = 1; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.insets.left = 4; constraints.insets.right = 2; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.CENTER; quicknessLayout.setConstraints(quicksilverImage, constraints); quicksilverImage.setSize(18, 18); quicknessPane.add(quicksilverImage); constraints.gridx = 2; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 0; constraints.weighty = 0; constraints.insets.left = 0; constraints.insets.right = 0; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.CENTER; quicknessLayout.setConstraints(quicksilverLabel, constraints); quicknessPane.add(quicksilverLabel); /* END STATS PANE LAYOUT */ /* BEGIN TREASUE PANE LAYOUT */ treasurePane.setLayout(new GridLayout(2, 2, 4, 4)); treasurePane.setBackground(backgroundColor); treasurePane.add(manaPane); treasurePane.add(goldPane); treasurePane.add(levelPane); treasurePane.add(gemsPane); manaPane.setLayout(new BorderLayout(1, 0)); manaPane.setBackground(highlightColor); manaImage.setSize(18, 18); manaPane.add("West", manaImage); manaPane.add("East", manaLabel); goldPane.setLayout(new BorderLayout(1, 0)); goldPane.setBackground(highlightColor); goldImage.setSize(18, 18); goldPane.add("West", goldImage); goldPane.add("East", goldLabel); levelPane.setLayout(new BorderLayout(1, 0)); levelPane.setBackground(highlightColor); levelImage.setSize(18, 18); levelPane.add("West", levelImage); levelPane.add("East", levelLabel); gemsPane.setLayout(new BorderLayout(1, 0)); gemsPane.setBackground(highlightColor); gemsImage.setSize(18, 18); gemsPane.add("West", gemsImage); gemsPane.add("East", gemsLabel); /* END TREASUE PANE LAYOUT */ /* BEGIN INVENTORY PANE LAYOUT */ equipmentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 0)); cloakImage.setSize(24, 24); equipmentPane.add(cloakImage); blessingImage.setSize(24, 24); equipmentPane.add(blessingImage); crownImage.setSize(24, 24); equipmentPane.add(crownImage); palantirImage.setSize(24, 24); equipmentPane.add(palantirImage); ringImage.setSize(24, 24); equipmentPane.add(ringImage); virginImage.setSize(24, 24); equipmentPane.add(virginImage); /* END INVENTORY PANE LAYOUT */ } public void UpdateStatusPane(int thePacket) { switch (thePacket) { case NAME_PACKET: name = parent.readString(); if (name == null || name.length() == 0) { titleCanvas.changeHead("Welcome to Phantasia!"); titleCanvas.changeTail(""); } break; case LOCATION_PACKET: titleCanvas.changeTail("( " + parent.readString() + " , " + parent.readString() + " )"); location = parent.readString(); if (name != null && name.length() > 0) { titleCanvas.changeHead(name + " is in " + location); } else { titleCanvas.changeHead("Character starts at:"); } break; case ENERGY_PACKET: energyGraph.changeStats(parent.readString(), parent.readLong(), parent.readLong()); break; case STRENGTH_PACKET: strengthGraph.changeStats(parent.readString(), parent.readLong(), 0); break; case SPEED_PACKET: quicknessGraph.changeStats(parent.readString(), parent.readLong(), 0); break; case SHIELD_PACKET: shieldLabel.changeStats(parent.readString()); break; case SWORD_PACKET: swordLabel.changeStats(parent.readString()); break; case QUICKSILVER_PACKET: quicksilverLabel.changeStats(parent.readString()); break; case MANA_PACKET: manaLabel.changeStats(parent.readString()); break; case LEVEL_PACKET: levelLabel.changeStats(parent.readString()); break; case GOLD_PACKET: goldLabel.changeStats(parent.readString()); break; case GEMS_PACKET: gemsLabel.changeStats(parent.readString()); break; case CLOAK_PACKET: cloakImage.setImage(7 + parent.readBool()); break; case BLESSING_PACKET: blessingImage.setImage(9 + parent.readBool()); break; case CROWN_PACKET: crownImage.setImage(11 + parent.readBool()); break; case PALANTIR_PACKET: palantirImage.setImage(13 + parent.readBool()); break; case RING_PACKET: ringImage.setImage(15 + parent.readBool()); break; case VIRGIN_PACKET: virginImage.setImage(17 + parent.readBool()); break; default: parent.errorDialog.bringUp("statusPane told to update a non-existant item.", "item: " + thePacket, "The game will now terminate."); } repaint(); } public void loadImages() { MediaTracker mt = new MediaTracker(this); /* load the images */ parent.theImages[0] = parent.getImage(parent.getCodeBase(), "shield.gif"); parent.theImages[1] = parent.getImage(parent.getCodeBase(), "sword.gif"); parent.theImages[2] = parent.getImage(parent.getCodeBase(), "quicksilver.gif"); parent.theImages[3] = parent.getImage(parent.getCodeBase(), "mana.gif"); parent.theImages[4] = parent.getImage(parent.getCodeBase(), "level.gif"); parent.theImages[5] = parent.getImage(parent.getCodeBase(), "gold.gif"); parent.theImages[6] = parent.getImage(parent.getCodeBase(), "gems.gif"); parent.theImages[7] = parent.getImage(parent.getCodeBase(), "cloak.No.gif"); parent.theImages[8] = parent.getImage(parent.getCodeBase(), "cloak.Yes.gif"); parent.theImages[9] = parent.getImage(parent.getCodeBase(), "blessing.No.gif"); parent.theImages[10] = parent.getImage(parent.getCodeBase(), "blessing.Yes.gif"); parent.theImages[11] = parent.getImage(parent.getCodeBase(), "crown.No.gif"); parent.theImages[12] = parent.getImage(parent.getCodeBase(), "crown.Yes.gif"); parent.theImages[13] = parent.getImage(parent.getCodeBase(), "palantir.No.gif"); parent.theImages[14] = parent.getImage(parent.getCodeBase(), "palantir.Yes.gif"); parent.theImages[15] = parent.getImage(parent.getCodeBase(), "ring.No.gif"); parent.theImages[16] = parent.getImage(parent.getCodeBase(), "ring.Yes.gif"); parent.theImages[17] = parent.getImage(parent.getCodeBase(), "virgin.No.gif"); parent.theImages[18] = parent.getImage(parent.getCodeBase(), "virgin.Yes.gif"); parent.theImages[19] = parent.getImage(parent.getCodeBase(), "label.1.gif"); parent.theImages[20] = parent.getImage(parent.getCodeBase(), "label.2.gif"); parent.theImages[21] = parent.getImage(parent.getCodeBase(), "label.3.gif"); parent.theImages[22] = parent.getImage(parent.getCodeBase(), "label.4.gif"); parent.theImages[23] = parent.getImage(parent.getCodeBase(), "label.5.gif"); parent.theImages[24] = parent.getImage(parent.getCodeBase(), "label.6.gif"); parent.theImages[25] = parent.getImage(parent.getCodeBase(), "label.7.gif"); parent.theImages[26] = parent.getImage(parent.getCodeBase(), "label.8.gif"); mt.addImage(parent.theImages[0], 0); mt.addImage(parent.theImages[1], 1); mt.addImage(parent.theImages[2], 2); mt.addImage(parent.theImages[3], 3); mt.addImage(parent.theImages[4], 4); mt.addImage(parent.theImages[5], 5); mt.addImage(parent.theImages[6], 6); mt.addImage(parent.theImages[7], 7); mt.addImage(parent.theImages[8], 8); mt.addImage(parent.theImages[9], 9); mt.addImage(parent.theImages[10], 10); mt.addImage(parent.theImages[11], 11); mt.addImage(parent.theImages[12], 12); mt.addImage(parent.theImages[13], 13); mt.addImage(parent.theImages[14], 14); mt.addImage(parent.theImages[15], 15); mt.addImage(parent.theImages[16], 16); mt.addImage(parent.theImages[17], 17); mt.addImage(parent.theImages[18], 18); mt.addImage(parent.theImages[19], 19); mt.addImage(parent.theImages[20], 20); mt.addImage(parent.theImages[21], 21); mt.addImage(parent.theImages[22], 22); mt.addImage(parent.theImages[23], 23); mt.addImage(parent.theImages[24], 24); mt.addImage(parent.theImages[25], 25); mt.addImage(parent.theImages[26], 26); try { mt.waitForAll(30000); } catch (InterruptedException e) {}; /* display the starting images */ shieldImage.setImage(0); swordImage.setImage(1); quicksilverImage.setImage(2); manaImage.setImage(3); levelImage.setImage(4); goldImage.setImage(5); gemsImage.setImage(6); cloakImage.setImage(7); blessingImage.setImage(9); crownImage.setImage(11); palantirImage.setImage(13); ringImage.setImage(15); virginImage.setImage(17); } }