From 963ab2840b9e1133d73d2720ab895c493624f95e Mon Sep 17 00:00:00 2001 From: xawotihs Date: Sat, 29 Aug 2015 19:23:07 +0200 Subject: [PATCH] Should fix cross-compilation issue on PSP. --- projects/mtg/include/AIPlayer.h | 6 +++--- projects/mtg/src/AIPlayer.cpp | 18 +++++++----------- projects/mtg/src/AIPlayerMinMax.cpp | 2 +- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/projects/mtg/include/AIPlayer.h b/projects/mtg/include/AIPlayer.h index 9316577a3..c20bdeafa 100644 --- a/projects/mtg/include/AIPlayer.h +++ b/projects/mtg/include/AIPlayer.h @@ -84,10 +84,10 @@ public: { }; int Act(); - ostream& logSimpleAct(ostream& out, MTGCardInstance* click); - ostream& logMultiAct(ostream& out, vector& actionTargets); + ostream& logSimpleAct(ostream& out, MTGCardInstance* click) const; + ostream& logMultiAct(ostream& out, const vector &actionTargets) const; - friend ostream& operator<<(ostream& out, AIAction& a); + friend ostream& operator<<(ostream& out, const AIAction& a); }; diff --git a/projects/mtg/src/AIPlayer.cpp b/projects/mtg/src/AIPlayer.cpp index b83168ebc..d9e328da4 100644 --- a/projects/mtg/src/AIPlayer.cpp +++ b/projects/mtg/src/AIPlayer.cpp @@ -67,8 +67,7 @@ AIAction::AIAction(AIPlayer * owner, MTGCardInstance * c, MTGCardInstance * t) } } -// should be "const AIAction& " instead, but compiler is annoying to enable that. -ostream& operator<<(ostream& out, AIAction& a) +ostream& operator<<(ostream& out, const AIAction& a) { do { if (a.player && !a.playerAbilityTarget) @@ -153,42 +152,39 @@ int AIAction::Act() return 0; } -ostream& AIAction::logSimpleAct(ostream& out, MTGCardInstance* click) +ostream& AIAction::logSimpleAct(ostream& out, MTGCardInstance* click) const { string currentPlayer = "p" + (owner->getObserver()->getPlayerId(owner) + 1); out << currentPlayer << click->currentZone->getName() << "[" << click->currentZone->getIndex(click) << "]" << endl; return out; } -ostream& AIAction::logMultiAct(ostream& out, vector& actionTargets) +ostream& AIAction::logMultiAct(ostream& out, const vector& actionTargets) const { GameObserver * g = owner->getObserver(); TargetChooser * tc = g->getCurrentTargetChooser(); do { if(!tc) break; - vector::iterator ite = actionTargets.begin(); + vector::const_iterator ite = actionTargets.begin(); while(ite != actionTargets.end()) { MTGCardInstance * card = ((MTGCardInstance *) (*ite)); if(card == (MTGCardInstance*)tc->source)//click source first. { - g->cardClick(card); - ite = actionTargets.erase(ite); + logSimpleAct(out, card); continue; } ++ite; } - //shuffle to make it less predictable, otherwise ai will always seem to target from right to left. making it very obvious. - owner->getRandomGenerator()->random_shuffle(actionTargets.begin(), actionTargets.end()); - + // this is just wrong, but at least it should compile for(int k = 0 ;k < int(actionTargets.size()) && k < tc->maxtargets; k++) { if (MTGCardInstance * card = dynamic_cast(actionTargets[k])) { if(k+1 == int(actionTargets.size())) tc->done = true; - g->cardClick(card); + logSimpleAct(out, card); } } tc->attemptsToFill++; diff --git a/projects/mtg/src/AIPlayerMinMax.cpp b/projects/mtg/src/AIPlayerMinMax.cpp index f28e26d2d..9c85e4972 100644 --- a/projects/mtg/src/AIPlayerMinMax.cpp +++ b/projects/mtg/src/AIPlayerMinMax.cpp @@ -63,7 +63,7 @@ void AIPlayerMinMax::LookAround() stringstream stream; stream << *observer; - vector::iterator it; + vector::const_iterator it; for(it = potentialActions.begin(); it != potentialActions.end(); it++) { stringstream theCommand;