From e08372a2095837a0b951ccb68c3499ef67c1a827 Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=B4me=20Chilliet?= Date: Sun, 11 Dec 2016 15:03:38 +0700 Subject: [PATCH] Replaced all uses of Account::active outside of Account by call to active() method --- Source/Account.cpp | 22 ++++++++++----------- Source/Account.h | 4 +++- Source/Campaign.cpp | 21 ++++++++++---------- Source/GameDraw.cpp | 4 ++-- Source/GameInitDispose.cpp | 2 +- Source/GameTick.cpp | 11 ++++++----- Source/Menu.cpp | 40 +++++++++++++++++++------------------- 7 files changed, 54 insertions(+), 50 deletions(-) diff --git a/Source/Account.cpp b/Source/Account.cpp index ba91890..bae2abd 100644 --- a/Source/Account.cpp +++ b/Source/Account.cpp @@ -30,7 +30,7 @@ using namespace std; extern bool devtools; vector Account::accounts = vector(); -Account* Account::active = nullptr; +Account* Account::_active = nullptr; Account::Account(const string& name) : name(name), campaignProgress() { @@ -52,7 +52,7 @@ void Account::setCurrentCampaign(const string& name) void Account::add(const string& name) { accounts.push_back(new Account(name)); - active = accounts.back(); + _active = accounts.back(); } Account* Account::get(int i) @@ -65,23 +65,23 @@ Account* Account::get(int i) void Account::setActive(int i) { - active = get(i); + _active = get(i); } void Account::destroyActive() { for (unsigned i = 0; i < accounts.size(); i++) { - if (accounts[i] == active) { + if (accounts[i] == _active) { accounts.erase(accounts.begin() + i); - active = nullptr; + _active = nullptr; return; } } - cerr << "Unexpected error : User " << active->getName() << " not found" << endl; + cerr << "Unexpected error : User " << _active->getName() << " not found" << endl; if (accounts.empty()) { - active = nullptr; + _active = nullptr; } else { - active = accounts.front(); + _active = accounts.front(); } } @@ -191,10 +191,10 @@ void Account::loadFile(string filename) } fclose(tfile); - active = get(iactive); + _active = get(iactive); } else { perror(("Couldn't load users from " + filename).c_str()); - active = nullptr; + _active = nullptr; } } @@ -206,7 +206,7 @@ void Account::saveFile(string filename) tfile = fopen(filename.c_str(), "wb" ); if (tfile) { fpackf(tfile, "Bi", getNbAccounts()); - fpackf(tfile, "Bi", indice(Account::active)); + fpackf(tfile, "Bi", indice(Account::_active)); for (int i = 0; i < getNbAccounts(); i++) { Account* a = Account::get(i); diff --git a/Source/Account.h b/Source/Account.h index 8e43502..f9bc5e1 100644 --- a/Source/Account.h +++ b/Source/Account.h @@ -51,7 +51,9 @@ public: static void saveFile(std::string filename); static int indice(Account* a); - static Account* active; + static bool hasActive() { return (_active != nullptr); } + static Account& active() { return *_active; } + static Account* _active; void endGame(); void winCampaignLevel(int choice, float score, float time); diff --git a/Source/Campaign.cpp b/Source/Campaign.cpp index b02dd7b..fd75198 100644 --- a/Source/Campaign.cpp +++ b/Source/Campaign.cpp @@ -55,16 +55,17 @@ std::vector ListCampaigns() void LoadCampaign() { - if (!Account::active) + if (!Account::hasActive()) { return; - std::ifstream ipstream(Folders::getResourcePath("Campaigns/" + Account::active->getCurrentCampaign() + ".txt")); + } + std::ifstream ipstream(Folders::getResourcePath("Campaigns/" + Account::active().getCurrentCampaign() + ".txt")); if (!ipstream.good()) { - if (Account::active->getCurrentCampaign() == "main") { + if (Account::active().getCurrentCampaign() == "main") { cerr << "Could not found main campaign!" << endl; return; } - cerr << "Could not found campaign \"" << Account::active->getCurrentCampaign() << "\", falling back to main." << endl; - Account::active->setCurrentCampaign("main"); + cerr << "Could not found campaign \"" << Account::active().getCurrentCampaign() << "\", falling back to main." << endl; + Account::active().setCurrentCampaign("main"); return LoadCampaign(); } ipstream.ignore(256, ':'); @@ -78,16 +79,16 @@ void LoadCampaign() } ipstream.close(); - std::ifstream test(Folders::getResourcePath("Textures/" + Account::active->getCurrentCampaign() + "/World.png")); + std::ifstream test(Folders::getResourcePath("Textures/" + Account::active().getCurrentCampaign() + "/World.png")); if (test.good()) { - Mainmenuitems[7].load("Textures/" + Account::active->getCurrentCampaign() + "/World.png", 0); + Mainmenuitems[7].load("Textures/" + Account::active().getCurrentCampaign() + "/World.png", 0); } else { Mainmenuitems[7].load("Textures/World.png", 0); } - if (Account::active->getCampaignChoicesMade() == 0) { - Account::active->setCampaignScore(0); - Account::active->resetFasttime(); + if (Account::active().getCampaignChoicesMade() == 0) { + Account::active().setCampaignScore(0); + Account::active().resetFasttime(); } } diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index 76318a4..a346f23 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -1051,9 +1051,9 @@ int Game::DrawGLScene(StereoSide side) if (!tutoriallevel && !winfreeze && !Dialog::inDialog() && !mainmenu) { if (campaign) { if (scoreadded) - sprintf (string, "Score: %d", (int)Account::active->getCampaignScore()); + sprintf (string, "Score: %d", (int)Account::active().getCampaignScore()); else - sprintf (string, "Score: %d", (int)Account::active->getCampaignScore() + (int)bonustotal); + sprintf (string, "Score: %d", (int)Account::active().getCampaignScore() + (int)bonustotal); } if (!campaign) sprintf (string, "Score: %d", (int)bonustotal); diff --git a/Source/GameInitDispose.cpp b/Source/GameInitDispose.cpp index 12515eb..d1f7b9d 100644 --- a/Source/GameInitDispose.cpp +++ b/Source/GameInitDispose.cpp @@ -79,7 +79,7 @@ void Dispose() LOGFUNC; if (Game::endgame == 2) { - Account::active->endGame(); + Account::active().endGame(); Game::endgame = 0; } diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index fab80e9..1b865f1 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -692,8 +692,9 @@ void Game::Loadlevel(const std::string& name) damagedealt = 0; damagetaken = 0; - if (Account::active) - difficulty = Account::active->getDifficulty(); + if (Account::hasActive()) { + difficulty = Account::active().getDifficulty(); + } Hotspot::hotspots.clear(); Hotspot::current = -1; @@ -6217,11 +6218,11 @@ void Game::TickOnceAfter() if (changedelay > 0 && !Person::players[0]->dead && !won) { //high scores, awards, win if (campaign) { - Account::active->winCampaignLevel(whichchoice, bonustotal, leveltime); + Account::active().winCampaignLevel(whichchoice, bonustotal, leveltime); scoreadded = 1; } else { wonleveltime = leveltime; - Account::active->winLevel(whichlevel, bonustotal - startbonustotal, leveltime); + Account::active().winLevel(whichlevel, bonustotal - startbonustotal, leveltime); } won = 1; } @@ -6264,7 +6265,7 @@ void Game::TickOnceAfter() fireSound(firestartsound); - Loadlevel(campaignlevels[Account::active->getCampaignChoicesMade()].mapname.c_str()); + Loadlevel(campaignlevels[Account::active().getCampaignChoicesMade()].mapname.c_str()); fireSound(); diff --git a/Source/Menu.cpp b/Source/Menu.cpp index 6a3c6fe..14f54aa 100644 --- a/Source/Menu.cpp +++ b/Source/Menu.cpp @@ -397,24 +397,24 @@ void Menu::Load() break; case 5: { LoadCampaign(); - addLabel(-1, Account::active->getName(), 5, 400); + addLabel(-1, Account::active().getName(), 5, 400); addButton(1, "Tutorial", 5, 300); addButton(2, "Challenge", 5, 240); addButton(3, "Delete User", 400, 10); addButton(4, "Main Menu", 5, 10); addButton(5, "Change User", 5, 180); - addButton(6, "Campaign : " + Account::active->getCurrentCampaign(), 200, 420); + addButton(6, "Campaign : " + Account::active().getCurrentCampaign(), 200, 420); //show campaign map //with (2,-5) offset from old code addImage(-1, Mainmenuitems[7], 150 + 2, 60 - 5, 400, 400); //show levels - int numlevels = Account::active->getCampaignChoicesMade(); + int numlevels = Account::active().getCampaignChoicesMade(); numlevels += numlevels > 0 ? campaignlevels[numlevels - 1].nextlevel.size() : 1; for (int i = 0; i < numlevels; i++) { XYZ midpoint = campaignlevels[i].getCenter(); float itemsize = campaignlevels[i].getWidth(); - const bool active = (i >= Account::active->getCampaignChoicesMade()); + const bool active = (i >= Account::active().getCampaignChoicesMade()); if (!active) { itemsize /= 2; } @@ -462,18 +462,18 @@ void Menu::Load() if (name.size() < 17) { name.append((17 - name.size()), ' '); } - name += to_string(int(Account::active->getHighScore(i))); + name += to_string(int(Account::active().getHighScore(i))); if (name.size() < 32) { name.append((32 - name.size()), ' '); } - int fasttime = (int)round(Account::active->getFastTime(i)); + int fasttime = (int)round(Account::active().getFastTime(i)); name += to_string(int((fasttime - fasttime % 60) / 60)); name += ":"; if (fasttime % 60 < 10) name += "0"; name += to_string(fasttime % 60); - addButton(i, name, 10, 400 - i * 25, i > Account::active->getProgress() ? 0.5 : 1, 0, 0); + addButton(i, name, 10, 400 - i * 25, i > Account::active().getProgress() ? 0.5 : 1, 0, 0); } addButton(-1, " High Score Best Time", 10, 440); @@ -484,8 +484,8 @@ void Menu::Load() addLabel(1, "You have avenged your family and", 140, 300); addLabel(2, "restored peace to the island of Lugaru.", 110, 270); addButton(3, "Back", 10, 10); - addLabel(4, string("Your score: ") + to_string((int)Account::active->getCampaignScore()), 190, 200); - addLabel(5, string("Highest score: ") + to_string((int)Account::active->getCampaignHighScore()), 190, 180); + addLabel(4, string("Your score: ") + to_string((int)Account::active().getCampaignScore()), 190, 200); + addLabel(5, string("Highest score: ") + to_string((int)Account::active().getCampaignHighScore()), 190, 180); } break; case 18: @@ -537,7 +537,7 @@ void Menu::Tick() // some specific case where we do something even if the left mouse button is not pressed. if ((mainmenu == 5) && (endgame == 2)) { - Account::active->endGame(); + Account::active().endGame(); endgame = 0; } if (mainmenu == 10) @@ -563,7 +563,7 @@ void Menu::Tick() } else { //new game fireSound(firestartsound); flash(); - mainmenu = (Account::active ? 5 : 7); + mainmenu = (Account::hasActive() ? 5 : 7); selected = -1; } break; @@ -704,7 +704,7 @@ void Menu::Tick() case 5: fireSound(); flash(); - if ((selected - NB_CAMPAIGN_MENU_ITEM >= Account::active->getCampaignChoicesMade())) { + if ((selected - NB_CAMPAIGN_MENU_ITEM >= Account::active().getCampaignChoicesMade())) { startbonustotal = 0; loading = 2; @@ -714,8 +714,8 @@ void Menu::Tick() TickOnceAfter(); else LoadStuff(); - whichchoice = selected - NB_CAMPAIGN_MENU_ITEM - Account::active->getCampaignChoicesMade(); - actuallevel = (Account::active->getCampaignChoicesMade() > 0 ? campaignlevels[Account::active->getCampaignChoicesMade() - 1].nextlevel[whichchoice] : 0); + whichchoice = selected - NB_CAMPAIGN_MENU_ITEM - Account::active().getCampaignChoicesMade(); + actuallevel = (Account::active().getCampaignChoicesMade() > 0 ? campaignlevels[Account::active().getCampaignChoicesMade() - 1].nextlevel[whichchoice] : 0); visibleloading = 1; stillloading = 1; Loadlevel(campaignlevels[actuallevel].mapname.c_str()); @@ -756,14 +756,14 @@ void Menu::Tick() case 6: vector campaigns = ListCampaigns(); vector::iterator c; - if ((c = find(campaigns.begin(), campaigns.end(), Account::active->getCurrentCampaign())) == campaigns.end()) { + if ((c = find(campaigns.begin(), campaigns.end(), Account::active().getCurrentCampaign())) == campaigns.end()) { if (!campaigns.empty()) - Account::active->setCurrentCampaign(campaigns.front()); + Account::active().setCurrentCampaign(campaigns.front()); } else { c++; if (c == campaigns.end()) c = campaigns.begin(); - Account::active->setCurrentCampaign(*c); + Account::active().setCurrentCampaign(*c); } Load(); break; @@ -790,7 +790,7 @@ void Menu::Tick() Account::setActive(selected - 1); } else if (selected == Account::getNbAccounts() + 1) { flash(); - if (Account::active) { + if (Account::hasActive()) { mainmenu = 5; } else { mainmenu = 1; @@ -804,11 +804,11 @@ void Menu::Tick() fireSound(); flash(); if (selected <= 2) - Account::active->setDifficulty(selected); + Account::active().setDifficulty(selected); mainmenu = 5; break; case 9: - if (selected < numchallengelevels && selected <= Account::active->getProgress()) { + if (selected < numchallengelevels && selected <= Account::active().getProgress()) { fireSound(); flash(); -- 2.39.5