#include "../include/config.h" #include "../include/Player.h" #include "../include/GameObserver.h" #include "../include/DeckStats.h" #include "../include/ManaCost.h" Player::Player(MTGPlayerCards * deck, string file, string fileSmall) : Damageable(20){ deckFile = file; deckFileSmall = fileSmall; game = deck; game->setOwner(this); manaPool = NEW ManaPool(this); canPutLandsIntoPlay = 1; mAvatar = NULL; mAvatarTex = NULL; type_as_damageable = DAMAGEABLE_PLAYER; } /*Method to call at the end of a game, before all objects involved in the game are destroyed */ void Player::End(){ DeckStats::GetInstance()->saveStats(this, opponent(),GameObserver::GetInstance()); } Player::~Player(){ SAFE_DELETE(manaPool); resources.Release(mAvatarTex); mAvatar = NULL; mAvatarTex = NULL; } const string Player::getDisplayName() const { GameObserver * g = GameObserver::GetInstance(); if (this == g->players[0]) return "Player 1"; return "Player 2"; } MTGInPlay * Player::inPlay(){ return game->inPlay; } int Player::getId(){ GameObserver * game = GameObserver::GetInstance(); for (int i= 0; i < 2; i++){ if (game->players[i] == this) return i; } return -1; } JQuad * Player::getIcon(){ return mAvatar; } Player * Player::opponent(){ GameObserver * game = GameObserver::GetInstance(); if (!game) return NULL; return this == game->players[0] ? game->players[1] : game->players[0]; } HumanPlayer::HumanPlayer(MTGPlayerCards * deck, string file, string fileSmall) : Player(deck, file, fileSmall) { mAvatarTex = resources.RetrieveTexture("avatar.jpg",RETRIEVE_LOCK,TEXTURE_SUB_AVATAR); if (mAvatarTex) mAvatar = resources.RetrieveQuad("avatar.jpg",0,0,35,50,"playerAvatar",RETRIEVE_NORMAL,TEXTURE_SUB_AVATAR); else mAvatar = NULL; } ManaPool * Player::getManaPool(){ return manaPool; } int Player::afterDamage(){ return life; } //Cleanup phase at the end of a turn void Player::cleanupPhase(){ game->inPlay->cleanupPhase(); game->graveyard->cleanupPhase(); } ostream& operator<<(ostream& out, const Player& p) { return out << p.getDisplayName(); }