diff --git a/projects/mtg/include/MTGGuiPlay.h b/projects/mtg/include/MTGGuiPlay.h index 079f6a00a..894a7d512 100644 --- a/projects/mtg/include/MTGGuiPlay.h +++ b/projects/mtg/include/MTGGuiPlay.h @@ -50,6 +50,7 @@ class MTGGuiPlay: public PlayGuiObjectController { virtual void Render(); void forceUpdateCards(); void updateCards(); + int receiveEvent(WEvent * e); }; diff --git a/projects/mtg/include/MTGRules.h b/projects/mtg/include/MTGRules.h index 0c6caed8a..d6aa99f6a 100644 --- a/projects/mtg/include/MTGRules.h +++ b/projects/mtg/include/MTGRules.h @@ -46,24 +46,19 @@ class MTGPersistRule:public MTGAbility{ MTGPersistRule(int _id):MTGAbility(_id,NULL){}; int receiveEvent(WEvent * event){ -OutputDebugString("Receive1\n"); if (event->type == WEvent::CHANGE_ZONE){ -OutputDebugString("Receive2\n"); WEventZoneChange * e = (WEventZoneChange *) event; MTGCardInstance * card = e->card->previous; if (card && card->basicAbilities[Constants::PERSIST] && !card->counters->hasCounter(-1,-1)){ -OutputDebugString("Receive3\n"); int ok = 0; for (int i = 0; i < 2 ; i++){ Player * p = game->players[i]; if (e->from == p->game->inPlay) ok = 1; } if (!ok) return 0; -OutputDebugString("Receive4\n"); for (int i = 0; i < 2 ; i++){ Player * p = game->players[i]; if (e->to == p->game->graveyard){ -OutputDebugString("Receive5\n"); //p->game->putInZone(card, p->game->graveyard, card->owner->game->hand); MTGCardInstance * copy = p->game->putInZone(e->card, p->game->graveyard, e->card->owner->game->stack); Spell * spell = NEW Spell(copy); diff --git a/projects/mtg/src/MTGGuiPlay.cpp b/projects/mtg/src/MTGGuiPlay.cpp index 3721416ef..c5de76244 100644 --- a/projects/mtg/src/MTGGuiPlay.cpp +++ b/projects/mtg/src/MTGGuiPlay.cpp @@ -199,6 +199,22 @@ void MTGGuiPlay::forceUpdateCards(){ currentPlayer = game->currentPlayer; } +int MTGGuiPlay::receiveEvent(WEvent *event){ + return 0; + if (event->type == WEvent::CHANGE_ZONE){ + WEventZoneChange * e = (WEventZoneChange *) event; + int ok = 0; + for (int i = 0; i < 2 ; i++){ + Player * p = game->players[i]; + if (e->from == p->game->inPlay || e->to == p->game->inPlay ) ok = 1; + } + if (!ok) return 0; + forceUpdateCards(); + return 1; + } + return 0; +} + void MTGGuiPlay::updateCards(){ GameObserver * game = GameObserver::GetInstance(); Player * player = game->players[0]; @@ -213,9 +229,7 @@ void MTGGuiPlay::updateCards(){ Player * opponent = game->players[1]; int opponent_cards = opponent ->game->inPlay->nb_cards; - if (mCount - offset != (nb_cards+opponent_cards) || game->currentPlayer != currentPlayer ){ //if the number of cards has changed, then an update occured (is this test engouh ?) - forceUpdateCards(); - } + //This is just so that we display the cards of the current player first, so that blockers are correctly positionned