package org.pokenet.client.backend.entity; import java.util.ArrayList; import org.pokenet.client.GameClient; import org.pokenet.client.backend.entity.Enums.Poketype; /** * Represents our player * @author shadowkanji * */ public class OurPlayer extends Player { private OurPokemon [] m_pokemon; private ArrayList<PlayerItem> m_items; private int[] m_badges; private int m_money; private int m_trainerLvl = -1; private int m_breedingLvl = -1; private int m_fishingLvl = -1; private int m_coordinatingLvl = -1; /** * Default constructor */ public OurPlayer() { m_pokemon = new OurPokemon[6]; m_items = new ArrayList<PlayerItem>(); m_badges = new int[42]; m_money = 0; } /** * Constructor to be used if our player already exists * @param original */ public OurPlayer(OurPlayer original) { m_badges = original.getBadges(); m_pokemon = original.getPokemon(); m_items = original.getItems(); m_sprite = original.getSprite(); m_username = original.getUsername(); m_isAnimating = original.isAnimating(); m_trainerLvl = original.getTrainerLevel(); m_breedingLvl = original.getBreedingLevel(); m_fishingLvl = original.getFishingLevel(); m_coordinatingLvl = original.getCoordinatingLevel(); } public void set(Player p) { m_x = p.getX(); m_y = p.getY(); m_svrX = p.getServerX(); m_svrY = p.getServerY(); m_sprite = p.getSprite(); m_direction = p.getDirection(); m_username = p.getUsername(); m_id = p.getId(); m_ours = p.isOurPlayer(); } /** * Returns the player's trainer level * @return m_trainerLvl */ public int getTrainerLevel() { return m_trainerLvl; } /** * Sets the player's trainer level * @param i */ public void setTrainerLevel(int i) { m_trainerLvl = i; } /** * Returns the player's breeding level * @return m_breedingLvl */ public int getBreedingLevel() { return m_breedingLvl; } /** * Sets the player's breeding level * @param i */ public void setBreedingLevel(int i) { m_breedingLvl = i; } /** * Returns the player's fishing level * @return m_fishingLvl */ public int getFishingLevel() { return m_fishingLvl; } /** * Sets the player's fishing level * @param i */ public void setFishingLevel(int i) { m_fishingLvl = i; } /** * Returns the player's coordinating level * @return m_coordinatingLvl */ public int getCoordinatingLevel() { return m_coordinatingLvl; } /** * Sets the player's coordinating level * @param i */ public void setCoordinatingLevel(int i) { m_coordinatingLvl = i; } /** * Returns our player's party * @return */ public OurPokemon[] getPokemon() { return m_pokemon; } /** * Returns our player's bag * @return */ public ArrayList<PlayerItem> getItems() { return m_items; } /** * Adds an item to this player's bag (automatically handles if its in the bag already) * @param number * @param quantity */ public void addItem(int number, int quantity) { boolean exists = false; for(int i = 0; i < m_items.size(); i++) { if(m_items.get(i) != null && m_items.get(i).getNumber() == number) { m_items.get(i).setQuantity(m_items.get(i).getQuantity() + quantity); exists = true; if (GameClient.getInstance().getUi().getBag() != null) GameClient.getInstance().getUi().getBag().addItem(number, false); } } if(!exists){ m_items.add(new PlayerItem(number, quantity)); if (GameClient.getInstance().getUi().getBag() != null) GameClient.getInstance().getUi().getBag().addItem(number, true); } } /** * Removes an item from this player's bag * @param number * @param quantity */ public void removeItem(int number, int quantity) { for(int i = 0; i < m_items.size(); i++) { if(m_items.get(i) != null && m_items.get(i).getNumber() == number) { if(m_items.get(i).getQuantity() - quantity > 0) { m_items.get(i).setQuantity(m_items.get(i).getQuantity() - quantity); if (GameClient.getInstance().getUi().getBag() != null) GameClient.getInstance().getUi().getBag().removeItem(number, false); } else { m_items.remove(i); if (GameClient.getInstance().getUi().getBag() != null) GameClient.getInstance().getUi().getBag().removeItem(number, true); } return; } } } /** * Gets item quantity from bag. * @param number */ public int getItemQuantity(int number) { int quantity = 0; for(int i = 0; i < m_items.size(); i++) { if(m_items.get(i) != null && m_items.get(i).getItem().getId() == number) { quantity = m_items.get(i).getQuantity(); //Return quantity return quantity; } else { quantity = 0; //Player doesnt own item } } return quantity; } /** * Updates a pokemon's stats * @param i * @param info */ public void updatePokemon(int i, String [] info) { if(m_pokemon[i] != null) { m_pokemon[i].setCurHP(Integer.parseInt(info[0])); m_pokemon[i].setMaxHP(Integer.parseInt(info[1])); m_pokemon[i].setAtk(Integer.parseInt(info[2])); m_pokemon[i].setDef(Integer.parseInt(info[3])); m_pokemon[i].setSpeed(Integer.parseInt(info[4])); m_pokemon[i].setSpatk(Integer.parseInt(info[5])); m_pokemon[i].setSpdef(Integer.parseInt(info[6])); } } /** * Sets a pokemon in this player's party * @param i * @param information */ public void setPokemon(int i, String [] info) { if(info == null) { m_pokemon[i] = null; } else { /* * Set sprite, name, gender and hp */ System.out.println(info.length); m_pokemon[i] = new OurPokemon(); m_pokemon[i].setName(info[1]); m_pokemon[i].setCurHP(Integer.parseInt(info[2])); m_pokemon[i].setGender(Integer.parseInt(info[3])); if(info[4].equalsIgnoreCase("0")) m_pokemon[i].setShiny(false); else m_pokemon[i].setShiny(true); m_pokemon[i].setSpriteNumber(Integer.parseInt(info[0]) + 1); m_pokemon[i].setMaxHP(Integer.parseInt(info[5])); /* * Stats */ m_pokemon[i].setAtk(Integer.parseInt(info[6])); m_pokemon[i].setDef(Integer.parseInt(info[7])); m_pokemon[i].setSpeed(Integer.parseInt(info[8])); m_pokemon[i].setSpatk(Integer.parseInt(info[9])); m_pokemon[i].setSpdef(Integer.parseInt(info[10])); m_pokemon[i].setType1(Poketype.valueOf(info[11])); if(info[12] != null && !info[12].equalsIgnoreCase("")) { m_pokemon[i].setType2(Poketype.valueOf(info[12])); } m_pokemon[i].setExp(Integer.parseInt(info[13].substring(0, info[13].indexOf('.')))); m_pokemon[i].setLevel(Integer.parseInt(info[14])); m_pokemon[i].setAbility(info[15]); m_pokemon[i].setNature(info[16]); /* * Moves */ String [] moves = new String[4]; for(int j = 0; j < 4; j++) { if(j < info.length - 17 && info[j + 17] != null) moves[j] = info[j + 17]; else moves[j] = ""; } m_pokemon[i].setMoves(moves); } } /** * Returns the player's money * @return */ public int getMoney(){ return m_money; } /** * Sets the players money * @param m */ public void setMoney(int m) { m_money = m; } /** * Returns the player's badges */ public int [] getBadges(){ return m_badges; } /** * Swaps two pokemon * @param Poke1 * @param Poke2 */ public void swapPokemon(int Poke1, int Poke2){ OurPokemon temp1 = m_pokemon[Poke1]; m_pokemon[Poke1] = m_pokemon[Poke2]; m_pokemon[Poke2] = temp1; GameClient.getInstance().getUi().refreshParty(); } /** * Initializes the player's badges * @param str */ public void initBadges(String str) { m_badges = new int[str.length()]; for (int i = 0; i < str.length(); i++) { try{ m_badges[i] = Integer.valueOf(String.valueOf(str.charAt(i))); } catch (Exception e) { e.printStackTrace(); } } } /** * Adds a badge to the player * @param index */ public void addBadge(int index) { m_badges[index] = 1; } @Override public int getType(){ return 1; } }