package org.pokenet.client.ui.frames; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.List; import mdes.slick.sui.Button; import mdes.slick.sui.Container; import mdes.slick.sui.Frame; import mdes.slick.sui.Label; import mdes.slick.sui.event.ActionEvent; import mdes.slick.sui.event.ActionListener; import mdes.slick.sui.event.MouseAdapter; import mdes.slick.sui.event.MouseEvent; import mdes.slick.sui.skin.simple.SimpleArrowButton; import org.newdawn.slick.Color; import org.newdawn.slick.Image; import org.newdawn.slick.SlickException; import org.newdawn.slick.loading.LoadingList; import org.pokenet.client.GameClient; import org.pokenet.client.backend.FileLoader; import org.pokenet.client.backend.Translator; import org.pokenet.client.backend.entity.OurPokemon; import org.pokenet.client.ui.base.ProgressBar; /** * Party information frame * @author ZombieBear * */ @SuppressWarnings("deprecation") public class PartyInfoDialog extends Frame { Container[] m_container; Label[] m_pokeBall; Label[] m_hpBar; Label[] m_pokeIcon; Label[] m_pokeName; Label[] m_level; ProgressBar[] m_hp; Button[] m_switchUp; Button[] m_switchDown; OurPokemon[] m_pokes; /** * Default constructor * * @param ourPokes * @param out */ public PartyInfoDialog(OurPokemon[] ourPokes) { m_pokes = ourPokes; allocateVariables(); loadImages(ourPokes); /* ContentPane location is moved here instead of in initGUI so that * if/when initGui is recalled the ConentPane doesn't move. */ getContentPane().setX(getContentPane().getX() - 1); getContentPane().setY(getContentPane().getY() + 1); initGUI(); } private void allocateVariables() { m_switchDown = new Button[6]; m_switchUp = new Button[6]; m_hp = new ProgressBar[6]; m_level = new Label[6]; m_pokeName = new Label[6]; m_pokeIcon = new Label[6]; m_hpBar = new Label[6]; m_pokeBall = new Label[6]; m_container = new Container[6]; } /** * Initializes interface */ public void initGUI() { InputStream f; int y = -8; this.getTitleBar().getCloseButton().setVisible(false); this.setFont(GameClient.getFontSmall()); this.setBackground(new Color(0, 0, 0, 85)); this.setForeground(new Color(255, 255, 255)); for (int i = 0; i < 6; i++) { final int j = i; m_container[i] = new Container(); m_container[i].setSize(170, 42); m_container[i].setVisible(true); m_container[i].setLocation(2, y+10); m_container[i].setBackground(new Color(0, 0, 0, 0)); System.out.println("Y: "+y); getContentPane().add(m_container[i]); y += 41; m_container[i].setOpaque(true); String respath = System.getProperty("res.path"); if(respath==null) respath=""; try { Label tempLabel = new Label(); if (i ==0) { f = FileLoader.loadFile(respath+"res/ui/party_info/partyActive.png"); tempLabel = new Label(new Image(f, respath+"res/ui/party_info/partyActive.png", false)); } else { f = FileLoader.loadFile(respath+"res/ui/party_info/partyInactive.png"); tempLabel = new Label(new Image(f, respath+"res/ui/party_info/partyInactive.png", false)); } tempLabel.setSize(170, 42); tempLabel.setY(-4); m_container[i].add(tempLabel); } catch (Exception e) {e.printStackTrace();} try{ f = FileLoader.loadFile(respath+"res/ui/party_info/HPBar.png"); m_hpBar[i] = new Label(new Image(f, respath+"res/ui/party_info/HPBar.png", false)); m_hpBar[i].setSize(98, 11); m_hpBar[i].setVisible(false); m_container[i].add(m_hpBar[i]); } catch (Exception e) {e.printStackTrace();} try { m_container[i].add(m_pokeBall[i]); m_pokeBall[i].setLocation(4, 4); m_pokeName[i].setFont(GameClient.getFontSmall()); m_pokeName[i].setForeground(new Color(255, 255, 255)); m_pokeName[i].addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { super.mouseReleased(e); PokemonInfoDialog info = new PokemonInfoDialog(m_pokes[j]); info.setAlwaysOnTop(true); info.setLocationRelativeTo(null); getDisplay().add(info); } @Override public void mouseEntered(MouseEvent e) { super.mouseEntered(e); m_pokeName[j].setForeground(new Color(255, 215, 0)); } @Override public void mouseExited(MouseEvent e) { super.mouseExited(e); m_pokeName[j].setForeground(new Color(255, 255, 255)); } }); m_container[i].add(m_pokeIcon[i]); m_pokeIcon[i].setLocation(2, 3); m_container[i].add(m_pokeName[i]); m_pokeName[i].setLocation(42, 5); m_container[i].add(m_level[i]); m_level[i].setFont(GameClient.getFontSmall()); m_level[i].setForeground(new Color(255, 255, 255)); m_level[i].setLocation(m_pokeName[i].getX() + m_pokeName[i].getWidth() + 10, m_pokeName[i].getY()); m_container[i].add(m_hp[i]); m_hp[i].setSize(72, 5); m_hp[i].setLocation(m_hpBar[i].getX() + 23, m_hpBar[i].getY() + 3); if (i != 0) { m_switchUp[i] = new SimpleArrowButton( SimpleArrowButton.FACE_UP); m_switchUp[i].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { GameClient.getInstance().getPacketGenerator().writeTcpMessage("s" + String.valueOf(j) + ","+String.valueOf(j - 1)); //reinitialize the gui getContentPane().removeAll(); allocateVariables(); loadImages(m_pokes); initGUI(); } }); m_switchUp[i].setHeight(16); m_switchUp[i].setWidth(16); m_container[i].add(m_switchUp[i]); } if (i != 5) { m_switchDown[i] = new SimpleArrowButton( SimpleArrowButton.FACE_DOWN); m_switchDown[i].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { GameClient.getInstance().getPacketGenerator().writeTcpMessage("s" + String.valueOf(j) + ","+String.valueOf(j + 1)); //reinitialize the gui getContentPane().removeAll(); allocateVariables(); loadImages(m_pokes); initGUI(); } }); m_switchDown[i].setHeight(16); m_switchDown[i].setWidth(16); m_switchDown[i].setX(24); m_container[i].add(m_switchDown[i]); } } catch (NullPointerException e) { //e.printStackTrace(); } } update(m_pokes); this.getTitleBar().setGlassPane(true); this.setResizable(false); this.setSize(170, 270); List<String> translated = Translator.translate("_GUI"); this.setTitle(translated.get(0)); } /** * Loads necessary images * @param pokes */ public void loadImages(OurPokemon[] pokes) { LoadingList.setDeferredLoading(true); InputStream f; for (int i = 0; i < 6; i++) { m_pokeIcon[i] = new Label(); m_pokeBall[i] = new Label(); m_pokeName[i] = new Label(); m_level[i] = new Label(); m_hp[i] = new ProgressBar(0, 0); m_hp[i].setForeground(Color.green); m_pokeIcon[i].setSize(32, 32); m_pokeName[i].pack(); String respath = System.getProperty("res.path"); if(respath==null) respath=""; try { f = FileLoader.loadFile(respath+"res/ui/Pokeball.gif"); m_pokeBall[i].setImage(new Image(f, respath+"res/ui/Pokeball.gif", false)); m_pokeBall[i].setSize(30, 30); } catch (SlickException e) { System.out.println("Couldn't load pokeball"); } catch (FileNotFoundException e) { System.out.println("Couldn't load pokeball"); } try { List<String> translated = Translator.translate("_GUI"); if (pokes[i] != null) { m_level[i].setText(translated.get(32) + String.valueOf(pokes[i].getLevel())); m_level[i].pack(); m_pokeName[i].setText(pokes[i].getName()); m_pokeIcon[i].setImage(pokes[i].getIcon()); m_hp[i].setMaximum(pokes[i].getMaxHP()); m_hp[i].setForeground(Color.green); m_hp[i].setValue(pokes[i].getCurHP()); if (pokes[i].getCurHP() > pokes[i].getMaxHP() / 2) { m_hp[i].setForeground(Color.green); } else if (pokes[i].getCurHP() < pokes[i].getMaxHP() / 2 && pokes[i].getCurHP() > pokes[i].getMaxHP() / 3) { m_hp[i].setForeground(Color.orange); } else if (pokes[i].getCurHP() < pokes[i].getMaxHP() / 3) { m_hp[i].setForeground(Color.red); } m_pokeIcon[i].setImage(pokes[i].getIcon()); m_pokeIcon[i].setSize(32, 32); m_pokeName[i].setText(pokes[i].getName()); m_pokeName[i].pack(); m_level[i].setText(translated.get(32) + String.valueOf(pokes[i].getLevel())); m_level[i].pack(); } else { m_hp[i].setVisible(false); } } catch (NullPointerException e) { e.printStackTrace(); } } LoadingList.setDeferredLoading(false); } /** * Updates info * * @param pokes */ public void update(OurPokemon[] pokes) { m_pokes = pokes; List<String> translated = Translator.translate("_GUI"); LoadingList.setDeferredLoading(true); for (int i = 0; i < 6; i++) { try { if (pokes[i] != null) { m_hp[i].setMaximum(pokes[i].getMaxHP()); m_hp[i].setValue(pokes[i].getCurHP()); if (pokes[i].getCurHP() > pokes[i].getMaxHP() / 2) { m_hp[i].setForeground(Color.green); } else if (pokes[i].getCurHP() < pokes[i].getMaxHP() / 2 && pokes[i].getCurHP() > pokes[i].getMaxHP() / 3) { m_hp[i].setForeground(Color.orange); } else if (pokes[i].getCurHP() < pokes[i].getMaxHP() / 3) { m_hp[i].setForeground(Color.red); } m_pokeIcon[i].setImage(pokes[i].getIcon()); m_pokeName[i].setText(pokes[i].getName()); m_pokeName[i].pack(); m_level[i].setText(translated.get(32) + String.valueOf(pokes[i].getLevel())); m_level[i].pack(); m_level[i].setLocation(m_pokeName[i].getX() + m_pokeName[i].getWidth() + 10, 5); m_pokeBall[i].setLocation(4, 4); m_pokeIcon[i].setLocation(2, 3); m_pokeName[i].setLocation(45, 5); m_hpBar[i].setLocation(45, m_pokeName[i].getY() + m_pokeName[i].getHeight() + 3); m_hp[i].setLocation(m_hpBar[i].getX() + 23, m_hpBar[i].getY() + 3); m_hpBar[i].setVisible(true); m_hp[i].setVisible(true); if (i != 0) m_switchUp[i].setVisible(true); if (i != 5) m_switchDown[i].setVisible(true); } else { if (i != 0) m_switchUp[i].setVisible(false); if (i != 5) m_switchDown[i].setVisible(false); m_hpBar[i].setVisible(false); m_hp[i].setVisible(false); m_level[i].setText(""); m_level[i].pack(); m_pokeIcon[i].setImage(null); } } catch (NullPointerException e) { e.printStackTrace(); } } LoadingList.setDeferredLoading(false); } /** * Sets sprite number * * @param x * @return */ public int setSpriteNumber(int x) { int i = 0; if (x <= 385) { i = x + 1; } else if (x <= 388) { i = 386; } else if (x <= 414) { i = x - 2; } else if (x <= 416) { i = 413; } else { i = x - 4; } return i; } }