- Added new code for serialization/deserializaiton of full games including initial game and all the player actions.

- Added an undo menu using this code (beware, it's still very very alpha).
- Removed various warning
- Cleaned up avatar loading
- Added full random lists load/save including the deck shuffling (not sure if I could not replace that with seed load/save)
- Moved momir and Co rules configuration out of GameStateDuel
- Create a GameType type to avoid mixing int everywhere
This commit is contained in:
Xawotihs
2011-10-13 19:43:51 +00:00
parent 663058cdab
commit 0b6044551a
28 changed files with 595 additions and 156 deletions

View File

@@ -26,10 +26,21 @@ class GameObserver{
protected:
MTGCardInstance * cardWaitingForTargets;
queue<WEvent *> eventsQueue;
list<string> actionsList;
int untap(MTGCardInstance * card);
bool WaitForExtraPayment(MTGCardInstance* card);
void initialize();
void cleanup();
string startupGameSerialized;
bool parseLine(const string& s);
void logAction(const string& s) {
actionsList.push_back(s);
};
bool processActions(bool undo);
friend ostream& operator<<(ostream&, GameObserver&);
bool load(const string& s, bool undo);
bool mLoading;
public:
int currentPlayerId;
@@ -49,6 +60,7 @@ class GameObserver{
vector<Player *> players; //created outside
time_t startedAt;
Rules * mRules;
GameType mGameType;
TargetChooser * getCurrentTargetChooser();
void stackObjectClicked(Interruptible * action);
@@ -74,10 +86,9 @@ class GameObserver{
void gameStateBasedEffects();
void enchantmentStatus();
void Affinity();
void eventOccured();
void addObserver(MTGAbility * observer);
bool removeObserver(ActionElement * observer);
void startGame(Rules * rules);
void startGame(GameType, Rules * rules);
void untapPhase();
MTGCardInstance * isCardWaiting(){ return cardWaitingForTargets; }
int isInPlay(MTGCardInstance * card);
@@ -90,6 +101,14 @@ class GameObserver{
int receiveEvent(WEvent * event);
bool connectRule;
void logAction(Player* player, const string& s="");
void logAction(int playerId, const string& s="") {
logAction(players[playerId], s);
};
void logAction(MTGCardInstance* card, MTGGameZone* zone = NULL);
bool undo();
bool isLoading(){ return mLoading; };
};
#endif