Package org.pokenet.client.ui

Source Code of org.pokenet.client.ui.BattleWindow

package org.pokenet.client.ui;

import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
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 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.BattleManager;
import org.pokenet.client.backend.FileLoader;
import org.pokenet.client.ui.base.BattleButtonFactory;
import org.pokenet.client.ui.frames.BattleBag;

/**
* Battle window interface
*
* @author ZombieBear
*
*/
public class BattleWindow extends Frame {
  static final long serialVersionUID = -4351471892179339349L;

  public Container endPane;
  public Container attackPane;
  public Container pokesContainer;
  public Button move1;
  public Button move2;
  public Button move3;
  public Button move4;
  public Label pp1;
  public Label pp2;
  public Label pp3;
  public Label pp4;
  public Button pokeCancelBtn;
  public Button pokeBtn1;
  public Button pokeBtn2;
  public Button pokeBtn3;
  public Button pokeBtn4;
  public Button pokeBtn5;
  public Button pokeBtn6;
  public Button btnPoke;
  public Button btnBag;
  public Button btnRun;
  public Button cancel;
  public Button close;
  public BattleBag m_bag;
  private boolean isWild;
  public List<Button> m_moveButtons = new ArrayList<Button>();
  public List<Label> m_ppLabels = new ArrayList<Label>();
  public List<Button> m_pokeButtons = new ArrayList<Button>();
  public List<Label> m_pokeInfo = new ArrayList<Label>();
  public List<Label> m_pokeStatus = new ArrayList<Label>();
  public HashMap<String, Image> m_statusIcons = new HashMap<String, Image>();
 
  // Image Loading tools
  private String m_path = "res/battle/";
  InputStream f;
 
  private Label m_bg = new Label();

 
  /**
   * Default constructor
   *
   * @param title
   * @param wild
   */
  public BattleWindow(String title) {
    String respath = System.getProperty("res.path");
    if(respath==null)
      respath="";
    m_path=respath+m_path;
    getContentPane().setX(getContentPane().getX() - 1);
    getContentPane().setY(getContentPane().getY() + 1);
    setTitle(title);
    loadStatusIcons();
    initComponents();
    setCenter();
    setSize(259, 369);
  }

  /**
   * Loads the status icons
   */
  public void loadStatusIcons(){
    LoadingList.setDeferredLoading(true);
    try{
      m_statusIcons.put("Poison", new Image(m_path + "PSN" + ".png", false));
    } catch (SlickException e) {e.printStackTrace();} try{
      m_statusIcons.put("Sleep", new Image(m_path + "SLP" + ".png", false));
    } catch (SlickException e) {e.printStackTrace();} try{
      m_statusIcons.put("Freze", new Image(m_path + "FRZ" + ".png", false));
    } catch (SlickException e) {e.printStackTrace();} try{
      m_statusIcons.put("Burn", new Image(m_path + "BRN" + ".png", false));
    } catch (SlickException e) {e.printStackTrace();} try{
      m_statusIcons.put("Paralysis", new Image(m_path + "PAR" + ".png", false));
    } catch (SlickException e) {e.printStackTrace();}
    LoadingList.setDeferredLoading(false);
  }
 
  /**
   * Disables moves
   */
  public void disableMoves() {
    attackPane.setVisible(false);
    move1.setEnabled(false);
    move2.setEnabled(false);
    move3.setEnabled(false);
    move4.setEnabled(false);

    pp1.setEnabled(false);
    pp2.setEnabled(false);
    pp3.setEnabled(false);
    pp4.setEnabled(false);

    btnPoke.setEnabled(false);
    btnBag.setEnabled(false);
    btnRun.setEnabled(false);

    cancel.setVisible(false);
  }

  /**
   * Enables moves
   */
  public void enableMoves() {
    attackPane.setVisible(true);
    btnPoke.setEnabled(true);
    btnBag.setEnabled(true);
    if (!isWild) {
      btnRun.setEnabled(false);
    } else {
      btnRun.setEnabled(true);
    }

    pokeCancelBtn.setEnabled(true);
    if (!move1.getText().equals("")) {
      move1.setEnabled(true);
      pp1.setEnabled(true);
    }
    if (!move2.getText().equals("")) {
      move2.setEnabled(true);
      pp2.setEnabled(true);
    }
    if (!move3.getText().equals("")) {
      move3.setEnabled(true);
      pp3.setEnabled(true);
    }
    if (!move4.getText().equals("")) {
      move4.setEnabled(true);
      pp4.setEnabled(true);
    }
    cancel.setVisible(false);
  }

  /**
   * Initializes the interface
   */
  private void initComponents() {
    LoadingList.setDeferredLoading(true);
    this.setBackground(new Color(0, 0, 0, 0));
    String respath = System.getProperty("res.path");
    if(respath==null)
      respath="";
    try {
      f = FileLoader.loadFile(respath+"res/ui/bg.png");
      m_bg = new Label(new Image(f, respath+"res/ui/bg.png", false));
    } catch (SlickException e) {
      e.printStackTrace();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    m_bg.setSize(256, 203);
    m_bg.setLocation(0, 142);
    getContentPane().add(m_bg);

    attackPane = new Container();
    attackPane.setBackground(new Color(0, 0, 0, 0));

    move1 = BattleButtonFactory.getButton("");
    move2 = BattleButtonFactory.getButton("");
    move3 = BattleButtonFactory.getButton("");
    move4 = BattleButtonFactory.getButton("");

    setResizable(false);

    this.getTitleBar().setVisible(false);

    // start attackPane
    attackPane.add(move1);
    move1.setLocation(7, 10);
    move1.setSize(116, 51);
    move1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        useMove(0);
      }
    });
    pp1 = new Label();
    pp1.setHorizontalAlignment(Label.RIGHT_ALIGNMENT);
    pp1.setBounds(0, move1.getHeight() - 20, move1.getWidth() - 5, 20);
    move1.add(pp1);

    attackPane.add(move2);
    move2.setLocation(130, 10);
    move2.setSize(116, 51);
    move2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        useMove(1);
      }
    });
    pp2 = new Label();
    pp2.setHorizontalAlignment(Label.RIGHT_ALIGNMENT);
    pp2.setBounds(0, move2.getHeight() - 20, move2.getWidth() - 5, 20);
    move2.add(pp2);

    attackPane.add(move3);
    move3.setLocation(7, 65);
    move3.setSize(116, 51);
    move3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        useMove(2);
      }
    });
    pp3 = new Label();
    pp3.setHorizontalAlignment(Label.RIGHT_ALIGNMENT);
    pp3.setBounds(0, move3.getHeight() - 20, move3.getWidth() - 5, 20);
    move3.add(pp3);

    attackPane.add(move4);
    move4.setLocation(130, 65);
    move4.setSize(116, 51);
    move4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        useMove(3);
      }
    });
    pp4 = new Label();
    pp4.setHorizontalAlignment(Label.RIGHT_ALIGNMENT);
    pp4.setBounds(0, move4.getHeight() - 20, move4.getWidth() - 5, 20);
    move4.add(pp4);

    pp1.setFont(GameClient.getFontSmall());
    pp2.setFont(GameClient.getFontSmall());
    pp3.setFont(GameClient.getFontSmall());
    pp4.setFont(GameClient.getFontSmall());
   
    pp1.setForeground(Color.white);
    pp2.setForeground(Color.white);
    pp3.setForeground(Color.white);
    pp4.setForeground(Color.white);
   
    m_moveButtons.add(move1);
    m_moveButtons.add(move2);
    m_moveButtons.add(move3);
    m_moveButtons.add(move4);

    m_ppLabels.add(pp1);
    m_ppLabels.add(pp2);
    m_ppLabels.add(pp3);
    m_ppLabels.add(pp4);

    btnRun = BattleButtonFactory.getSmallButton("Run");
    btnRun.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        run();
      }
    });
    attackPane.add(btnRun);

    btnRun.setBounds(97, 148, 60, 47);

    btnBag = BattleButtonFactory.getSmallButton("Bag");
    attackPane.add(btnBag);
    btnBag.setLocation(3, 122);
    btnBag.setSize(82, 48);

    btnBag.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        showBag();
      }
    });

    btnPoke = BattleButtonFactory.getSmallButton("Pokemon");
    attackPane.add(btnPoke);
    btnPoke.setLocation(168, 122);
    btnPoke.setSize(82, 48);

    btnPoke.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        showPokePane(false);
      }
    });

    cancel = BattleButtonFactory.getSmallButton("Cancel");
    attackPane.add(cancel);
    cancel.setVisible(false);
    cancel.setLocation(162, 110);
    cancel.setSize(82, 48);

    cancel.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {

      }
    });

    attackPane.setBounds(2, 140, 257, 201);
    getContentPane().add(attackPane);
    // end attackPane

    // start pokesContainer
    pokesContainer = new Container();
    pokesContainer.setBackground(new Color(0, 0, 0, 0));
    pokesContainer.setBounds(2, 140, 257, 201);

    pokeBtn1 = BattleButtonFactory.getButton(" ");
    pokesContainer.add(pokeBtn1);
    pokeBtn1.setBounds(8, 8, 116, 51);

    pokeBtn1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        switchPoke(0);
      }
    });

    pokeBtn2 = BattleButtonFactory.getButton(" ");
    pokesContainer.add(pokeBtn2);
    pokeBtn2.setBounds(128, 8, 116, 51);

    pokeBtn2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        switchPoke(1);
      }
    });

    pokeBtn3 = BattleButtonFactory.getButton(" ");
    pokesContainer.add(pokeBtn3);
    pokeBtn3.setBounds(8, 59, 116, 51);

    pokeBtn3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        switchPoke(2);
      }
    });

    pokeBtn4 = BattleButtonFactory.getButton(" ");
    pokesContainer.add(pokeBtn4);
    pokeBtn4.setBounds(128, 59, 116, 51);

    pokeBtn4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        switchPoke(3);
      }
    });

    pokeBtn5 = BattleButtonFactory.getButton(" ");
    pokesContainer.add(pokeBtn5);
    pokeBtn5.setBounds(8, 110, 116, 51);

    pokeBtn5.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        switchPoke(4);
      }
    });

    pokeBtn6 = BattleButtonFactory.getButton(" ");
    pokesContainer.add(pokeBtn6);
    pokeBtn6.setBounds(128, 110, 116, 51);

    pokeBtn6.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        switchPoke(5);
      }
    });

    m_pokeButtons.add(pokeBtn1);
    m_pokeButtons.add(pokeBtn2);
    m_pokeButtons.add(pokeBtn3);
    m_pokeButtons.add(pokeBtn4);
    m_pokeButtons.add(pokeBtn5);
    m_pokeButtons.add(pokeBtn6);

    for (int i = 0; i < 6; i++){
      Label status = new Label();
      status.setSize(30, 12);
      status.setGlassPane(true);
      m_pokeButtons.get(i).add(status);
      status.setLocation(6, 5);
     
      Label info = new Label();
      m_pokeButtons.get(i).add(info);
      info.setText("                               ");
      info.setLocation(3, 34);
      info.setSize(107, 14);
      info.setForeground(Color.white);
      info.setGlassPane(true);
      info.setFont(GameClient.getFontSmall());
      m_pokeInfo.add(info);
    }

    pokeCancelBtn = BattleButtonFactory.getSmallButton("Cancel");
    pokesContainer.add(pokeCancelBtn);
    pokeCancelBtn.setLocation(162, 161);
    pokeCancelBtn.setSize(82, 48);
   
    pokeCancelBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        showAttack();
      }
    });
    pokesContainer.setVisible(false);
    getContentPane().add(pokesContainer);
    // End pokesContainer

    endPane = new Container();
    endPane.setBackground(new Color(0, 0, 0, 0));
    getContentPane().add(endPane);
    endPane.setBounds(0, 154, 253, 192);

    close = new Button();
    close.setVisible(true);
    endPane.add(close);
    close.setText("Close");
    close.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        setVisible(false);
      }
    });

    endPane.setVisible(false);
    LoadingList.setDeferredLoading(false);
  }

  /**
   * Sends the run packer
   */
  private void run() {
    GameClient.getInstance().getPacketGenerator().writeTcpMessage("br");
  }

  /**
   * Centers the battle window
   */
  public void setCenter() {
    int height = (int) GameClient.getInstance().getDisplay().getHeight();
    int width = (int) GameClient.getInstance().getDisplay().getWidth();
    int x = (width / 2) - 130;
    int y = (height / 2) - 238;
    this.setBounds(x, y, 259, 475);
  }

  /**
   * Sets whether the battle is a wild pokemon
   * @param isWild
   */
  public void setWild(boolean isWild) {
    this.isWild = isWild;
    btnRun.setEnabled(isWild);
  }

  /**
   * Shows the attack Pane
   */
  public void showAttack() {
    pokesContainer.setVisible(false);
    // bagPane.setVisible(false);
    attackPane.setVisible(true);
    endPane.setVisible(false);
  }

  /**
   * Shows the Bag Pane
   */
  public void showBag() {
    attackPane.setVisible(false);
    endPane.setVisible(false);
    pokesContainer.setVisible(false);
    m_bag = new BattleBag();
    m_bag.setAlwaysOnTop(true);
    m_bag.setZIndex(10000000); // Ridiculous z-index ensures that the bag is on top.
    GameClient.getInstance().getDisplay().add(m_bag);
  }

  /**
   * Shows the pokemon Pane
   */
  public void showPokePane(boolean isForced) {
    BattleManager.getInstance().updatePokePane();
    attackPane.setVisible(false);
    // bagPane.setVisible(false);
    pokesContainer.setVisible(true);
    endPane.setVisible(false);
    if (isForced)
      pokeCancelBtn.setEnabled(false);
    else
      pokeCancelBtn.setEnabled(true);
  }

  /**
   * Sends the pokemon switch packet
   *
   * @param i
   */
  private void switchPoke(int i) {
    attackPane.setVisible(false);
    pokesContainer.setVisible(false);
    GameClient.getInstance().getPacketGenerator().writeTcpMessage("bs" + i);
  }

  /**
   * Sends a move packet
   *
   * @param i
   */
  private void useMove(int i) {
    disableMoves();
    if (BattleManager.getInstance().getCurPoke().getMoveCurPP()[i] != 0) {
      BattleManager.getInstance().getCurPoke().setMoveCurPP(i,
          BattleManager.getInstance().getCurPoke().getMoveCurPP()[i] - 1);
      BattleManager.getInstance().updateMoves();
    }
    GameClient.getInstance().getPacketGenerator().writeTcpMessage("bm" + i);
    // BattleManager.getInstance().getTimeLine().getBattleSpeech().advance();
  }
}
TOP

Related Classes of org.pokenet.client.ui.BattleWindow

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.