Package org.pokenet.client.backend

Source Code of org.pokenet.client.backend.BattleManager

package org.pokenet.client.backend;

import java.util.HashMap;
import java.util.Map;

import org.pokenet.client.GameClient;
import org.pokenet.client.backend.entity.OurPlayer;
import org.pokenet.client.backend.entity.OurPokemon;
import org.pokenet.client.backend.entity.Pokemon;
import org.pokenet.client.ui.BattleWindow;

/**
* Handles battle events and controls the battle window
*
* @author ZombieBear
*
*/
public class BattleManager {
  private OurPlayer m_player;
  private BattleWindow m_battle;
  private OurPokemon[] m_ourPokes;
  private Pokemon[] m_enemyPokes;
  private BattleTimeLine m_timeLine;
  private OurPokemon m_curPoke;
  private int m_curPokeIndex;
  private Pokemon m_curEnemyPoke;
  private int m_curEnemyIndex;
  private String m_enemy;
  private boolean m_isWild;
  private Map<Integer, String> m_ourStatuses = new HashMap<Integer, String>();
  private static BattleManager m_instance;
  private static boolean m_isBattling = false;
  private String m_curTrack;
 
  /**
   * Default Constructor
   */
  public BattleManager() {
    m_instance = this;
    m_battle = new BattleWindow("Battle!");
    m_timeLine = new BattleTimeLine();
    m_battle.setVisible(false);
    m_battle.setAlwaysOnTop(true);
  }

  /**
   * Returns the instance
   * @return
   */
  public static BattleManager getInstance() {
    return m_instance;
  }
 
  /**
   * Retrieves player data
   */
  private void getPlayerData() {
    m_player = GameClient.getInstance().getOurPlayer();
    m_ourPokes = m_player.getPokemon();
    for (int i = 0; i < 6; i++){
      if(m_ourPokes[i].getCurHP() > 0){
        m_curPokeIndex = i;
        m_curPoke = m_ourPokes[i];
        break;
      }
    }
  }

  /**
   * Sets the enemy's data
   */
  private void setEnemyData() {
    m_curEnemyPoke = m_enemyPokes[0];
    m_curEnemyIndex = 0;
    try{
      m_timeLine.getBattleCanvas().drawEnemyPoke();
    } catch (Exception e) {
      e.printStackTrace();
    }
    try{
      m_timeLine.getBattleCanvas().drawEnemyInfo();
    } catch (Exception e) {
      e.printStackTrace();
    }
    try{
      if(!m_isWild){
        m_timeLine.getBattleCanvas().showPokeballs();
        m_timeLine.addSpeech(m_enemy + " sent out " + m_curEnemyPoke.getName());
      } else{
        m_timeLine.getBattleCanvas().hidePokeballs();
        m_timeLine.addSpeech("A wild " + m_curEnemyPoke.getName() + " attacked!");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  /**
   * Sets the enemy's name
   * @param name
   */
  public void setEnemyName(String name) {
    m_enemy = name;
  }

  /**
   * Starts a new BattleWindow and BattleCanvas
   * @param isWild
   * @param pokeAmount
   */
  public void startBattle(char isWild,
      int pokeAmount) {
    m_isBattling = true;

    GameClient.getInstance().getUi().hideHUD(true);
    if (isWild == '0'){
      setWild(false);
    } else {
      setWild(true);
    }
    m_battle.showAttack();
    m_battle.setVisible(true);
    m_enemyPokes = new Pokemon[pokeAmount];
    getPlayerData();
    m_battle.disableMoves();
    updateMoves();
    updatePokePane();
    m_timeLine.startBattle();
        m_curTrack = GameClient.getSoundPlayer().m_trackName;
        System.out.println("Before Battle Music Name:" + m_curTrack);
    GameClient.getInstance().getDisplay().add(m_battle);
    GameClient.changeTrack("pvnpc");
  }
 
  /**
   * Ends the battle
   */
  public void endBattle() {
    GameClient.getInstance().getUi().hideHUD(false);
    m_timeLine.endBattle();
    m_battle.setVisible(false);
    m_isBattling = false;
    if (GameClient.getInstance().getDisplay().containsChild(m_battle.m_bag))
      GameClient.getInstance().getDisplay().remove(m_battle.m_bag);
    GameClient.getInstance().getDisplay().remove(m_battle);
    while (GameClient.getInstance().getDisplay().containsChild(m_battle));
    GameClient.getSoundPlayer().setTrackByLocation(GameClient.getInstance().getMapMatrix().getCurrentMap().getName());
    if (GameClient.getSoundPlayer().m_trackName == "pvnpc") {
      GameClient.getSoundPlayer().setTrack(m_curTrack);
    }
  }

  /**
   * Returns the TimeLine
   * @return m_timeLine
   */
  public BattleTimeLine getTimeLine(){
    return m_timeLine;
  }
 
  /**
   * Retrieves a pokemon's moves and updates the BattleWindow
   * @param int pokeIndex
   */
  public void updateMoves(int pokeIndex) {
    for (int i = 0; i < 4; i++){
      if (m_ourPokes[pokeIndex].getMoves()[i] != null) {
        m_battle.m_moveButtons.get(i).setText(m_ourPokes[pokeIndex].getMoves()[i]);
        m_battle.m_ppLabels.get(i).setText(m_ourPokes[pokeIndex].getMoveCurPP()[i] + "/"
            + m_ourPokes[pokeIndex].getMoveMaxPP()[i]);
      } else {
        m_battle.m_moveButtons.get(i).setText("");
        m_battle.m_ppLabels.get(i).setText("");
      }
    }
  }
 
  /**
   * Updates moves with the current poke
   */
  public void updateMoves() {
    for (int i = 0; i < 4; i++){
      if (m_curPoke != null && m_curPoke.getMoves()[i] != null) {
        m_battle.m_moveButtons.get(i).setText(m_curPoke.getMoves()[i]);
        m_battle.m_ppLabels.get(i).setText(m_curPoke.getMoveCurPP()[i] + "/"
            + m_curPoke.getMoveMaxPP()[i]);
      } else {
        m_battle.m_moveButtons.get(i).setText("");
        m_battle.m_ppLabels.get(i).setText("");
      }
    }
  }

 
  /**
   * Switch a pokemon
   * @param trainer
   * @param pokeIndex
   */
  public void switchPoke(int trainer, int pokeIndex){
    if (trainer == 0) {
      m_curPoke = GameClient.getInstance().getOurPlayer().getPokemon()[pokeIndex];
      m_curPokeIndex = pokeIndex;
      updateMoves();
      updatePokePane();
      m_timeLine.getBattleCanvas().drawOurPoke();
      m_timeLine.getBattleCanvas().drawOurInfo();
    } else {
      m_curEnemyPoke = m_enemyPokes[pokeIndex];
      m_curEnemyIndex = pokeIndex;
    }
  }
 
  /**
   * Updates the pokemon pane
   */
  public void updatePokePane() {
    for (int i = 0; i < 6; i++) {
      try{
        m_battle.m_pokeButtons.get(i).setText(m_ourPokes[i].getName());
        m_battle.m_pokeInfo.get(i).setText("Lv: " + m_ourPokes[i].getLevel() + " HP:"
            + m_ourPokes[i].getCurHP() + "/" + m_ourPokes[i].getMaxHP());
        try{
          if (m_ourStatuses.containsKey(i) && m_battle.m_statusIcons.containsKey(m_ourStatuses.get(i))){
            m_battle.m_pokeStatus.get(i).setImage(m_battle.m_statusIcons.get(m_ourStatuses.get(i)));
          } else {
            m_battle.m_pokeStatus.get(i).setImage(null);
          }
        } catch (Exception e2){}
        if (m_ourPokes[i].getCurHP() <= 0 || m_curPokeIndex == i)
          m_battle.m_pokeButtons.get(i).setEnabled(false);
        else
          m_battle.m_pokeButtons.get(i).setEnabled(true);
      } catch (Exception e) {}
    }
  }

  /**
   * Requests a move from the player
   */
  public void requestMoves() {
    m_battle.enableMoves();
    m_battle.showAttack();
  }
 
  /**
   * Gets the BattleWindow
   * @return
   */
  public BattleWindow getBattleWindow(){
    return m_battle;
  }
 
  /**
   * Returns the player's active pokemon
   */
  public OurPokemon getCurPoke(){
    return m_curPoke;
  }
 
  /**
   * Returns the active pokemon's index in party
   * @return
   */
  public int getCurPokeIndex(){
    return m_curPokeIndex;
  }

  /**
   * Returns the active enemy pokemon's index in party
   * @return
   */
  public int getCurEnemyIndex(){
    return m_curEnemyIndex;
  }
 
  /**
   * Returns the enemy's active pokemon or the wild pokemon
   */
  public Pokemon getCurEnemyPoke(){
    return m_curEnemyPoke;
  }
 
  /**
   * Adds an enemy poke
   * @param index
   * @param name
   * @param level
   * @param gender
   * @param maxHP
   * @param curHP
   * @param spriteNum
   * @param isShiny
   */
  public void setEnemyPoke(int index,
      String name,
      int level,
      int gender,
      int maxHP,
      int curHP,
      int spriteNum,
      boolean isShiny){

    if (curHP != 0)
      m_timeLine.getBattleCanvas().setPokeballImage(index, "normal");
    else
      m_timeLine.getBattleCanvas().setPokeballImage(index, "fainted");
   
    m_enemyPokes[index] = new Pokemon();
    m_enemyPokes[index].setName(name);
    m_enemyPokes[index].setLevel(level);
    m_enemyPokes[index].setGender(gender);
    m_enemyPokes[index].setMaxHP(maxHP);
    m_enemyPokes[index].setCurHP(curHP);
    m_enemyPokes[index].setSpriteNumber(spriteNum + 1);
    m_enemyPokes[index].setShiny(isShiny);
   
    if ((index + 1) == m_enemyPokes.length)
      setEnemyData();
  }

  /**
   * Sets wild battle
   * @param m_isWild
   */
  public void setWild(boolean m_isWild) {
    this.m_isWild = m_isWild;
    m_battle.setWild(m_isWild);
  }
 
  /**
   * Returns a boolean determining whether the pokemon is wild
   * @return m_isWild
   */
  public boolean isWild() {
    return m_isWild;
  }
 
  /**
   * Returns a list of our pokes who are affected by statuses
   * @return a list of our pokes who are affected by statuses
   */
  public Map<Integer, String> getOurStatuses(){
    return m_ourStatuses;
  }
 
  /**
   * Returns true if a battle is in progress
   * @return true if a battle is in progress
   */
  public static boolean isBattling(){
    return m_isBattling;
  }
}
TOP

Related Classes of org.pokenet.client.backend.BattleManager

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.