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