I just played 3 long games and I was able to undo two fully and got an assert on the third one after more than 1000 actions... so I commit what I have:

- Modified undo to stop at "next phase" action
- Added "muligan" and "force library shuffling" to the list of logged action
- Fixed random logging
- Fixed double logging of actions
- Merged all the "next game" functions into a single one
- Created a PlayerType type instead of using int
- Moved the player loading code into the GameObserver and out of GameStateDuel to avoid having player references in both and simplify the initialization and termination. Tweeked a bit the humanplayer class to be able to do that.
- Added a "load" menu available in testsuite mode, I use that to load problematique game. To use it, just copy-paste a game from the traces into Res/test/game/timetwister.txt. Game in traces starts by "rvalues:..." and ends by "[end]"
- Added some untested and commented out code in GuiCombat to use the mouse/touch to setup the damage on the blockers
- Broke the network game ... hoh well, I'll repair it when everything else works !!
- various code cleanup and compilation fixes on Linux
This commit is contained in:
Xawotihs
2011-10-26 22:14:12 +00:00
parent 45f09972ad
commit c3dc51aed1
34 changed files with 410 additions and 297 deletions
+11 -3
View File
@@ -110,12 +110,12 @@ JQuadPtr Player::getIcon()
Player * Player::opponent()
{
if (!observer) return NULL;
if (!observer || (observer->players.size() < 2 )) return NULL;
return this == observer->players[0] ? observer->players[1] : observer->players[0];
}
HumanPlayer::HumanPlayer(GameObserver *observer, string file, string fileSmall, MTGDeck * deck) :
Player(observer, file, fileSmall, deck)
HumanPlayer::HumanPlayer(GameObserver *observer, string file, string fileSmall, bool premade, MTGDeck * deck) :
Player(observer, file, fileSmall, deck), premade(premade)
{
mAvatarName = "avatar.jpg";
playMode = MODE_HUMAN;
@@ -248,6 +248,11 @@ bool Player::parseLine(const string& s)
deckFile = s.substr(limiter + 1);
return true;
}
else if (areaS.compare("deckfilesmall") == 0)
{
deckFileSmall = s.substr(limiter + 1);
return true;
}
else if (areaS.compare("offerinterruptonphase") == 0)
{
for (int i = 0; i < Constants::NB_MTG_PHASES; i++)
@@ -287,6 +292,8 @@ ostream& operator<<(ostream& out, const Player& p)
out << "offerinterruptonphase=" << Constants::MTGPhaseCodeNames[p.offerInterruptOnPhase] << endl;
if(p.deckFile != "")
out << "deckfile=" << p.deckFile << endl;
if(p.deckFileSmall != "")
out << "deckfilesmall=" << p.deckFileSmall << endl;
if(p.game)
{
@@ -295,3 +302,4 @@ ostream& operator<<(ostream& out, const Player& p)
return out;
}