117 lines
2.6 KiB
C++
117 lines
2.6 KiB
C++
#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;
|
|
nomaxhandsize = 0;
|
|
castedspellsthisturn = 0;
|
|
castrestrictedspell = 0;
|
|
castrestrictedcreature = 0;
|
|
onlyonecast = 0;
|
|
castcount = 0;
|
|
nocreatureinstant = 0;
|
|
nospellinstant = 0;
|
|
onlyoneinstant = 0;
|
|
poisonCount = 0;
|
|
damageCount = 0;
|
|
preventable = 0;
|
|
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;
|
|
}
|
|
|
|
void Player::loadAvatar(string file){
|
|
if (mAvatarTex) {
|
|
resources.Release(mAvatarTex);
|
|
mAvatar = NULL;
|
|
mAvatarTex = NULL;
|
|
}
|
|
mAvatarTex = resources.RetrieveTexture(file,RETRIEVE_LOCK,TEXTURE_SUB_AVATAR);
|
|
if (mAvatarTex)
|
|
mAvatar = resources.RetrieveQuad(file,0,0,35,50,"playerAvatar",RETRIEVE_NORMAL,TEXTURE_SUB_AVATAR);
|
|
else
|
|
mAvatar = 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) {
|
|
loadAvatar("avatar.jpg");
|
|
}
|
|
|
|
|
|
|
|
ManaPool * Player::getManaPool(){
|
|
return manaPool;
|
|
}
|
|
|
|
int Player::afterDamage(){
|
|
return life;
|
|
}
|
|
int Player::poisoned(){
|
|
return poisonCount;
|
|
}
|
|
int Player::damaged(){
|
|
return damageCount;
|
|
}
|
|
int Player::prevented(){
|
|
return preventable;
|
|
}
|
|
//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();
|
|
}
|