From dd56962910ffb8db7cf11d6c90f2c41e112de33a Mon Sep 17 00:00:00 2001 From: "wagic.the.homebrew@gmail.com" Date: Sat, 13 Jun 2009 03:49:52 +0000 Subject: [PATCH] Erwan - Events are now sent to GameObserver rather than ActionLayer --- projects/mtg/include/DuelLayers.h | 2 +- projects/mtg/include/GameObserver.h | 2 +- projects/mtg/include/GuiLayers.h | 6 +++++- projects/mtg/src/Damage.cpp | 2 +- projects/mtg/src/DuelLayers.cpp | 1 - projects/mtg/src/GameObserver.cpp | 4 ++++ projects/mtg/src/GuiLayers.cpp | 9 +++++++++ projects/mtg/src/MTGGameZones.cpp | 2 +- 8 files changed, 22 insertions(+), 6 deletions(-) diff --git a/projects/mtg/include/DuelLayers.h b/projects/mtg/include/DuelLayers.h index 631c5fc78..d61369967 100644 --- a/projects/mtg/include/DuelLayers.h +++ b/projects/mtg/include/DuelLayers.h @@ -12,7 +12,7 @@ class DamageResolverLayer; class DuelLayers: public GuiLayers{ - public: +public : ActionLayer * actionLayer(); MTGGuiHand * handLayer(); MTGGuiPlay * playLayer(); diff --git a/projects/mtg/include/GameObserver.h b/projects/mtg/include/GameObserver.h index e30451b24..4d6d60890 100644 --- a/projects/mtg/include/GameObserver.h +++ b/projects/mtg/include/GameObserver.h @@ -85,7 +85,7 @@ class GameObserver{ void Render(); void ButtonPressed(int, PlayGuiObject*); - + int receiveEvent(WEvent * event); }; #endif diff --git a/projects/mtg/include/GuiLayers.h b/projects/mtg/include/GuiLayers.h index 6c01a9b33..3e23a9728 100644 --- a/projects/mtg/include/GuiLayers.h +++ b/projects/mtg/include/GuiLayers.h @@ -9,11 +9,12 @@ #define DIR_RIGHT 4 #include - +#include "../include/WEvent.h" class GameObserver; class Player; + class GuiLayer{ protected: GameObserver * game; @@ -43,6 +44,8 @@ class GuiLayer{ if (mCount) return 0; return 1; }; + + virtual int receiveEvent(WEvent * e){return 0;}; }; class GuiLayers{ @@ -57,6 +60,7 @@ class GuiLayers{ void Remove(); int unstoppableRenderInProgress(); ~GuiLayers(); + int receiveEvent(WEvent * e); }; diff --git a/projects/mtg/src/Damage.cpp b/projects/mtg/src/Damage.cpp index c1891aab4..20a3a23b7 100644 --- a/projects/mtg/src/Damage.cpp +++ b/projects/mtg/src/Damage.cpp @@ -49,7 +49,7 @@ int Damage::resolve(){ //Send Damage event to listeners WEventDamage * e = NEW WEventDamage(this); - GameObserver::GetInstance()->mLayers->actionLayer()->receiveEvent(e); + GameObserver::GetInstance()->receiveEvent(e); delete e; return a; diff --git a/projects/mtg/src/DuelLayers.cpp b/projects/mtg/src/DuelLayers.cpp index c4a4eaadc..e8e3801bc 100644 --- a/projects/mtg/src/DuelLayers.cpp +++ b/projects/mtg/src/DuelLayers.cpp @@ -62,4 +62,3 @@ MTGGuiPlay * DuelLayers::playLayer(){ } - diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index ec37a16d6..0bfacb389 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -439,6 +439,10 @@ void GameObserver::untapPhase(){ currentPlayer->inPlay()->untapAll(); } +int GameObserver::receiveEvent(WEvent * e){ + return mLayers->receiveEvent(e); +} + int GameObserver::isACreature(MTGCardInstance * card){ return card->isACreature(); diff --git a/projects/mtg/src/GuiLayers.cpp b/projects/mtg/src/GuiLayers.cpp index 891093c61..36e71c4b5 100644 --- a/projects/mtg/src/GuiLayers.cpp +++ b/projects/mtg/src/GuiLayers.cpp @@ -172,3 +172,12 @@ void GuiLayers::Render(){ objects[i]->Render(); } } + + +int GuiLayers::receiveEvent(WEvent * e){ + for (int i = 0; i < nbitems; i++){ + objects[i]->receiveEvent(e); + } + return 1; +} + diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index 3a45fbb60..fc8411461 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -142,7 +142,7 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone copy->changedZoneRecently = 1.f; GameObserver *g = GameObserver::GetInstance(); WEvent * e = NEW WEventZoneChange(copy, from, to); - g->mLayers->actionLayer()->receiveEvent(e); + g->receiveEvent(e); delete e; return copy; }