- reworked the testsuite and the rules (storyflow) to use the same game deserialization code, moved that code to the players and zone classes

- removed every references to the gameobserver singleton. This object can now be instantiated several times as it's needed for minmax. To be able to do that, I mostly added a reference to a gameobserver from any targetable object (cards, players, spells) and abilities.
This commit is contained in:
Xawotihs
2011-10-01 13:30:30 +00:00
parent d6db0c4f63
commit 9adb9d625d
86 changed files with 1902 additions and 1961 deletions

View File

@@ -50,7 +50,7 @@ void AIStats::updateStatsCard(MTGCardInstance * cardInstance, Damage * damage, f
else if (damage->target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
{
MTGCardInstance * target = (MTGCardInstance *) damage->target;
if (target->controller() == player && !target->isInPlay())
if (target->controller() == player && !target->isInPlay(player->getObserver()))
{
//One of my creatures got lethal damage...
stat->value += static_cast<int>(multiplier * STATS_CREATURE_MULTIPLIER * damage->damage);
@@ -79,7 +79,7 @@ int AIStats::receiveEvent(WEvent * event)
}
}
GameObserver * g = GameObserver::GetInstance();
GameObserver * g = player->getObserver();
//Lords
map<MTGCardInstance *, int> lords;
for (size_t i = 1; i < g->mLayers->actionLayer()->mObjects.size(); i++)
@@ -190,7 +190,7 @@ void AIStats::save()
void AIStats::Render()
{
GameObserver * g = GameObserver::GetInstance();
GameObserver * g = player->getObserver();
float x0 = 10;
if (player == g->players[1])
x0 = 280;