#ifndef _PLAYER_H_
#define _PLAYER_H_

#include "JGE.h"
#include "MTGGameZones.h"
#include "Damage.h"
#include "Targetable.h"

class MTGPlayerCards;
class MTGInPlay;
class ManaPool;

class Player: public Damageable{
 protected:
  ManaPool * manaPool;

 public:
  virtual void End();
  int typeAsTarget(){return TARGET_PLAYER;}
  const string getDisplayName() const;
  virtual int displayStack(){return 1;}
  JTexture * mAvatarTex;
  JQuad * mAvatar;
  int canPutLandsIntoPlay;
  MTGPlayerCards * game;
  int afterDamage();
  Player(MTGPlayerCards * deck, string deckFile, string deckFileSmall);
  virtual ~Player();
  void unTapPhase();
  MTGInPlay * inPlay();
  ManaPool * getManaPool();
  void cleanupPhase();
  virtual int Act(float dt){return 0;};
  virtual int isAI(){return 0;};
  Player * opponent();
  int getId();
  JQuad * getIcon();
  string deckFile;
  string deckFileSmall;
};

class HumanPlayer: public Player{
 public:
  HumanPlayer(MTGPlayerCards * deck, string deckFile, string deckFileSmall);

};

ostream& operator<<(ostream&, const Player&);

#endif
