diff --git a/JGE/JGE.vcproj b/JGE/JGE.vcproj index 2311b6a7c..83b3890f4 100644 --- a/JGE/JGE.vcproj +++ b/JGE/JGE.vcproj @@ -164,6 +164,83 @@ Name="VCPostBuildEventTool" /> + + + + + + + + + + + + + + + + + @@ -204,6 +281,16 @@ BasicRuntimeChecks="3" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + values; - + map valuesById; + int nb_items; public: static Subtypes * subtypesList; Subtypes(); diff --git a/projects/mtg/mtg.sln b/projects/mtg/mtg.sln index d83d0b1b4..afd987e07 100644 --- a/projects/mtg/mtg.sln +++ b/projects/mtg/mtg.sln @@ -8,15 +8,20 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 + Profile|Win32 = Profile|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {53024371-2293-4D40-8ECF-FCB470B50DA1}.Debug|Win32.ActiveCfg = Debug|Win32 {53024371-2293-4D40-8ECF-FCB470B50DA1}.Debug|Win32.Build.0 = Debug|Win32 + {53024371-2293-4D40-8ECF-FCB470B50DA1}.Profile|Win32.ActiveCfg = Profile|Win32 + {53024371-2293-4D40-8ECF-FCB470B50DA1}.Profile|Win32.Build.0 = Profile|Win32 {53024371-2293-4D40-8ECF-FCB470B50DA1}.Release|Win32.ActiveCfg = Release|Win32 {53024371-2293-4D40-8ECF-FCB470B50DA1}.Release|Win32.Build.0 = Release|Win32 {89159C26-2282-404A-A194-103B0A49DF7B}.Debug|Win32.ActiveCfg = Debug|Win32 {89159C26-2282-404A-A194-103B0A49DF7B}.Debug|Win32.Build.0 = Debug|Win32 + {89159C26-2282-404A-A194-103B0A49DF7B}.Profile|Win32.ActiveCfg = Profile|Win32 + {89159C26-2282-404A-A194-103B0A49DF7B}.Profile|Win32.Build.0 = Profile|Win32 {89159C26-2282-404A-A194-103B0A49DF7B}.Release|Win32.ActiveCfg = Release|Win32 {89159C26-2282-404A-A194-103B0A49DF7B}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 5a23ccaa9..ad6e24fe0 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -106,6 +106,7 @@ void MTGCardInstance::initMTGCI(){ lastController = NULL; regenerateTokens = 0; blocked = false; + currentZone = NULL; } @@ -184,16 +185,7 @@ int MTGCardInstance::destroy(){ } MTGGameZone * MTGCardInstance::getCurrentZone(){ - GameObserver * game = GameObserver::GetInstance(); - for (int i = 0; i < 2; i++){ - MTGPlayerCards * g = game->players[i]->game; - MTGGameZone * zones[] = {g->inPlay,g->graveyard,g->hand, g->library, g->stack, g->temp}; - for (int k = 0; k < 6; k++){ - MTGGameZone * zone = zones[k]; - if (zone->hasCard(this)) return zone; - } - } - return NULL; + return currentZone; } int MTGCardInstance::has(int basicAbility){ @@ -319,16 +311,6 @@ int MTGCardInstance::reset(){ Player * MTGCardInstance::controller(){ - GameObserver * game = GameObserver::GetInstance(); - if (!game) return NULL; - for (int i = 0; i < 2; ++i){ - if (game->players[i]->game->inPlay->hasCard(this)) return game->players[i]; - if (game->players[i]->game->stack->hasCard(this)) return game->players[i]; - if (game->players[i]->game->graveyard->hasCard(this)) return game->players[i]; - if (game->players[i]->game->hand->hasCard(this)) return game->players[i]; - if (game->players[i]->game->library->hasCard(this)) return game->players[i]; - if (game->players[i]->game->temp->hasCard(this)) return game->players[i]; - } return lastController; } diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index ec61ccb23..bdf1e05f1 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -186,6 +186,7 @@ MTGGameZone::~MTGGameZone(){ void MTGGameZone::setOwner(Player * player){ for (int i=0; iowner = player; + cards[i]->lastController = player; } owner = player; } @@ -195,6 +196,7 @@ MTGCardInstance * MTGGameZone::removeCard(MTGCardInstance * card, int createCopy cardsMap.erase(card); for (i=0; i<(nb_cards); i++) { if (cards[i] == card){ + card->currentZone = NULL; nb_cards--; cards.erase(cards.begin()+i); MTGCardInstance * copy = card; @@ -216,7 +218,7 @@ MTGCardInstance * MTGGameZone::removeCard(MTGCardInstance * card, int createCopy } MTGCardInstance * MTGGameZone::hasCard(MTGCardInstance * card){ - if (cardsMap.find(card) != cardsMap.end()) return card; + if (card->currentZone == this) return card; return NULL; } @@ -273,6 +275,7 @@ void MTGGameZone::addCard(MTGCardInstance * card){ nb_cards++; cardsMap[card] = 1; card->lastController = this->owner; + card->currentZone = this; } diff --git a/projects/mtg/src/Subtypes.cpp b/projects/mtg/src/Subtypes.cpp index 72201e69c..00e0e3124 100644 --- a/projects/mtg/src/Subtypes.cpp +++ b/projects/mtg/src/Subtypes.cpp @@ -17,6 +17,7 @@ int Subtypes::Add(string value){ std::transform( value.begin(), value.end(), value.begin(), ::tolower ); nb_items++; values[value] = nb_items; + valuesById[nb_items] = value; return nb_items; } @@ -39,11 +40,8 @@ int Subtypes::find(const char * subtype){ } -/*This will be slow... */ string Subtypes::find(int id){ - map::iterator it; - for (it = values.begin(); it != values.end(); it++){ - if (it->second == id) return it->first; - } - return NULL; + map::iterator it=valuesById.find(id);; + if (it != valuesById.end()) return it->second; + return ""; } diff --git a/projects/mtg/template.vcproj b/projects/mtg/template.vcproj index a3bab709d..d2fafbfb0 100644 --- a/projects/mtg/template.vcproj +++ b/projects/mtg/template.vcproj @@ -208,6 +208,105 @@ Name="VCPostBuildEventTool" /> + + + + + + + + + + + + + + + + + + + + @@ -317,6 +416,15 @@ PreprocessorDefinitions="" /> + + + + + + + + @@ -913,10 +1034,6 @@ RelativePath=".\include\WResourceManager.h" > - -