- Event System for MTGGuiPlay.cpp
- THIS DOES NOT WORK
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-06-13 05:21:24 +00:00
parent 0bc60d9a94
commit 54b8aab96b
3 changed files with 18 additions and 8 deletions

View File

@@ -50,6 +50,7 @@ class MTGGuiPlay: public PlayGuiObjectController {
virtual void Render();
void forceUpdateCards();
void updateCards();
int receiveEvent(WEvent * e);
};

View File

@@ -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);

View File

@@ -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