Package org.pokenet.server.backend.entity

Source Code of org.pokenet.server.backend.entity.TradeChar

package org.pokenet.server.backend.entity;

import org.pokenet.server.battle.Pokemon;
import org.pokenet.server.network.TcpProtocolHandler;
import org.pokenet.server.network.message.TradeNpcSpeechMessage;

/**
* Represents an NPC that wants to trade Pokemon
* @author shadowkanji
*
*/
public class TradeChar extends NonPlayerChar implements Tradeable {
  private Trade m_trade = null;
  private boolean m_tradeAccepted = false;
  private PlayerChar m_player;
  /*
   * Requested Pokemon data
   */
  private String m_requestedSpecies = "";
  /*
   * Offered Pokemon data
   */
  private Pokemon [] m_party;
 
  /**
   * Constructor
   */
  public TradeChar() {
    setBadge(-1);
    setHealer(false);
    setPartySize(0);
  }
 
  /**
   * Sets the Pokemon the NPC wants
   * @param species
   * @param level
   * @param nature
   */
  public void setRequestedPokemon(String species, int level, String nature) {
    m_requestedSpecies = species;
    //TODO: Add support for levels and natures
  }
 
  /**
   * Sets the Pokemon the NPC offers
   * @param species
   * @param level
   */
  public void setOfferedSpecies(String species, int level) {
    m_party = new Pokemon[1];
    m_party[0] = Pokemon.getRandomPokemon(species, level);
  }
 
  @Override
  public void talkToPlayer(PlayerChar p) {
    m_player = p;
    if(m_trade == null) {
      /* Can trade */
      m_trade = new Trade(this, p);
      p.setTrade(m_trade);
      m_trade.setOffer(this, 0, 0);
      TcpProtocolHandler.writeMessage(m_player.getTcpSession(),
          new TradeNpcSpeechMessage("I'm looking for a " + m_requestedSpecies +
              ". Want to trade one for my " + m_party[0].getName() + "?"));
    } else {
      /* Can't trade */
      TcpProtocolHandler.writeMessage(m_player.getTcpSession(),
          new TradeNpcSpeechMessage("I can't trade with you right now"));
    }
  }

  public boolean acceptedTradeOffer() {
    return m_tradeAccepted;
  }

  public void cancelTrade() {
    m_trade.endTrade();
  }

  public void cancelTradeOffer() {}

  public void finishTrading() {
    m_trade = null;
    m_tradeAccepted = false;
    TcpProtocolHandler.writeMessage(m_player.getTcpSession(),
        new TradeNpcSpeechMessage("Thanks! It's just what I was looking for!"));
  }

  public int getMoney() {
    return 999999;
  }

  public Pokemon[] getParty() {
    return m_party;
  }

  public Trade getTrade() {
    return m_trade;
  }

  public boolean isTrading() {
    return m_trade != null;
  }

  public void receiveTradeOffer(TradeOffer[] o) {
    if(o[0].getInformation().equalsIgnoreCase(m_requestedSpecies)) {
      //This is the Pokemon the TradeChar wanted
      setTradeAccepted(true);
    } else {
      //This is the wrong Pokemon
      TcpProtocolHandler.writeMessage(m_player.getTcpSession(),
          new TradeNpcSpeechMessage("This is not what I'm looking for!\n" +
          "Come back when you find the right Pokemon!"));
    }
  }

  public void receiveTradeOfferCancelation() {}

  public void setMoney(int money) {}

  public void setTrade(Trade t) {
    m_trade = t;
  }

  public void setTradeAccepted(boolean b) {
    m_tradeAccepted = b;
    if(b) {
      m_trade.checkForExecution();
    }
  }

  public String getIpAddress() {
    return "";
  }
}
TOP

Related Classes of org.pokenet.server.backend.entity.TradeChar

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.