From 608255e2517c6485202012733eb1f616fd49cdb9 Mon Sep 17 00:00:00 2001 From: "wagic.jeck" Date: Sun, 13 Dec 2009 14:36:58 +0000 Subject: [PATCH] Jeck - Fix signed/unsigned in AllAbilities (please review), bug fixes for trophy room (new status now saves). --- projects/mtg/include/AllAbilities.h | 4 ++-- projects/mtg/include/GameOptions.h | 3 ++- projects/mtg/include/GameStateAwards.h | 1 + projects/mtg/src/GameOptions.cpp | 16 +++++++++++++++- projects/mtg/src/GameStateAwards.cpp | 4 +++- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 7d91a8fb3..db03ab705 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -1706,7 +1706,7 @@ class AAsLongAs:public ListMaintainerAbility{ int resolve(){ //TODO check if ability is oneShot ? updateTargets(); - size_t size = cards.size(); + int size = (int) cards.size(); if (maxi && size < maxi && (!mini || size > mini)) addAbilityToGame(); //special case for 0 cards.clear(); players.clear(); @@ -1733,7 +1733,7 @@ class AAsLongAs:public ListMaintainerAbility{ } int _added(Damageable * d){ - size_t size = cards.size(); + int size = (int) cards.size(); if (maxi && size >= maxi) return removeAbilityFromGame(); if (maxi) return 0; if (size <= mini) return 0; diff --git a/projects/mtg/include/GameOptions.h b/projects/mtg/include/GameOptions.h index 45f2b8475..33c157212 100644 --- a/projects/mtg/include/GameOptions.h +++ b/projects/mtg/include/GameOptions.h @@ -113,11 +113,12 @@ public: class GameOptionAward: public GameOption { public: + GameOptionAward(); virtual string menuStr(); virtual bool write(std::ofstream * file, string name); virtual bool read(string input); virtual bool giveAward(); //Returns false if already awarded - virtual bool isViewed() {return viewed;}; + virtual bool isViewed(); virtual void setViewed(bool v = true) {viewed = v;}; private: time_t achieved; //When was it awarded? diff --git a/projects/mtg/include/GameStateAwards.h b/projects/mtg/include/GameStateAwards.h index 7a89ea335..d98fab923 100644 --- a/projects/mtg/include/GameStateAwards.h +++ b/projects/mtg/include/GameStateAwards.h @@ -20,6 +20,7 @@ class GameStateAwards: public GameState, public JGuiListener SimpleMenu * menu; bool showMenu; bool showAlt; + bool saveMe; int mState; int mDetailItem; diff --git a/projects/mtg/src/GameOptions.cpp b/projects/mtg/src/GameOptions.cpp index 5eb11fa84..e09524ecd 100644 --- a/projects/mtg/src/GameOptions.cpp +++ b/projects/mtg/src/GameOptions.cpp @@ -717,6 +717,11 @@ OptionDifficulty::OptionDifficulty(){ }; //GameOptionAward +GameOptionAward::GameOptionAward(){ + achieved = time(NULL); + number = 0; + viewed = false; +} bool GameOptionAward::read(string input){ //This is quick and dirty. bool bNumeric = true; @@ -806,6 +811,12 @@ bool GameOptionAward::giveAward(){ number = 1; return true; } + +bool GameOptionAward::isViewed(){ + if(!number) + return true; + return viewed; +}; string GameOptionAward::menuStr(){ if(!number) return _("Not unlocked."); @@ -815,6 +826,9 @@ string GameOptionAward::menuStr(){ char buf[256]; Translator * t = Translator::GetInstance(); - strftime(buf,255,_("%B %d, %I:%M%p %Y").c_str(),localtime(&achieved)); + tm * lt = localtime(&achieved); + if(!lt) + return "Error"; + strftime(buf,255,_("%B %d, %I:%M%p %Y").c_str(),lt); return buf; } \ No newline at end of file diff --git a/projects/mtg/src/GameStateAwards.cpp b/projects/mtg/src/GameStateAwards.cpp index 268fb1a5f..b8704ba29 100644 --- a/projects/mtg/src/GameStateAwards.cpp +++ b/projects/mtg/src/GameStateAwards.cpp @@ -30,7 +30,8 @@ void GameStateAwards::End() SAFE_DELETE(listview); SAFE_DELETE(setSrc); - //TODO Memoize viewed status here. + if(saveMe) + options.save(); } void GameStateAwards::Start() { @@ -38,6 +39,7 @@ void GameStateAwards::Start() mState = STATE_LISTVIEW; menu = NULL; + saveMe = options.newAward(); listview = NEW WGuiList("Listview"); listview->setX(210);