]> git.jsancho.org Git - lugaru.git/commitdiff
Removed all modifications of Account active from outside Account
authorCôme Chilliet <come@chilliet.eu>
Sun, 11 Dec 2016 07:58:43 +0000 (14:58 +0700)
committerCôme Chilliet <come@chilliet.eu>
Sun, 11 Dec 2016 07:58:43 +0000 (14:58 +0700)
Source/Account.cpp
Source/Account.h
Source/GameInitDispose.cpp
Source/Menu.cpp

index d132c2123d602945454e79d7f87e7d96c3315e9e..ba91890d0de7d5173c2faa355e17354d1675ee62 100644 (file)
@@ -49,35 +49,40 @@ void Account::setCurrentCampaign(const string& name)
     currentCampaign = name;
 }
 
-Account* Account::add(const string& name)
+void Account::add(const string& name)
 {
     accounts.push_back(new Account(name));
-    return accounts.back();
+    active = accounts.back();
 }
 
 Account* Account::get(int i)
 {
-
     if ((i >= 0) && (i < int(accounts.size()))) {
         return accounts[i];
     } else
         return NULL;
 }
 
-void Account::destroy(int i)
+void Account::setActive(int i)
 {
-    accounts.erase(accounts.begin() + i);
+    active = get(i);
 }
-Account* Account::destroy(Account* a)
+
+void Account::destroyActive()
 {
     for (unsigned i = 0; i < accounts.size(); i++) {
-        if (accounts[i] == a) {
+        if (accounts[i] == active) {
             accounts.erase(accounts.begin() + i);
-            return NULL;
+            active = nullptr;
+            return;
         }
     }
-    printf("Unexpected error : User %s not found\n", a->getName().c_str());
-    return accounts.front();
+    cerr << "Unexpected error : User " << active->getName() << " not found" << endl;
+    if (accounts.empty()) {
+        active = nullptr;
+    } else {
+        active = accounts.front();
+    }
 }
 
 int Account::getDifficulty()
@@ -111,7 +116,7 @@ void Account::winLevel(int level, float score, float time)
         progress = level + 1;
 }
 
-Account* Account::loadFile(string filename)
+void Account::loadFile(string filename)
 {
     FILE *tfile;
     int numaccounts;
@@ -186,10 +191,10 @@ Account* Account::loadFile(string filename)
         }
 
         fclose(tfile);
-        return get(iactive);
+        active = get(iactive);
     } else {
         perror(("Couldn't load users from " + filename).c_str());
-        return NULL;
+        active = nullptr;
     }
 }
 
index f68c52b484e1663437e4e8f0daf1ab32f7b81b73..8e435025e3d6f04b1bd88c7a5ab5d2771c953915 100644 (file)
@@ -43,11 +43,11 @@ struct CampaignProgress {
 class Account
 {
 public:
-    static void destroy(int i);
-    static Account* destroy(Account* a);
-    static Account* add(const std::string& name);
+    static void destroyActive();
+    static void setActive(int i);
+    static void add(const std::string& name);
     static Account* get(int i);
-    static Account* loadFile(std::string filename);
+    static void loadFile(std::string filename);
     static void saveFile(std::string filename);
     static int indice(Account* a);
 
index e08ff8efc712823c24902ddff34dba64fb44f09b..12515eb7cab8442f660cb0e8cb497a1c0d4ca9b3 100644 (file)
@@ -458,7 +458,7 @@ void Game::InitGame()
 
     numchallengelevels = 14;
 
-    Account::active = Account::loadFile(Folders::getUserDataPath()+"/users");
+    Account::loadFile(Folders::getUserDataPath()+"/users");
 
     whichjointstartarray[0] = righthip;
     whichjointendarray[0] = rightfoot;
index d3c9b0d35c3d1dbb2b02c98e027c7e4dca84d507..6a3c6fed0d21ac88e12516db2465ef8eb93136de 100644 (file)
@@ -414,9 +414,10 @@ void Menu::Load()
         for (int i = 0; i < numlevels; i++) {
             XYZ midpoint = campaignlevels[i].getCenter();
             float itemsize = campaignlevels[i].getWidth();
-            const bool active = i >= Account::active->getCampaignChoicesMade();
-            if (!active)
+            const bool active = (i >= Account::active->getCampaignChoicesMade());
+            if (!active) {
                 itemsize /= 2;
+            }
 
             if (i >= 1) {
                 XYZ start = campaignlevels[i - 1].getCenter();
@@ -445,8 +446,9 @@ void Menu::Load()
             addLabel(0, "No More Users", 10, 400);
         addLabel(-2, "", 20, 400);
         addButton(Account::getNbAccounts() + 1, "Back", 10, 10);
-        for (int i = 0; i < Account::getNbAccounts(); i++)
+        for (int i = 0; i < Account::getNbAccounts(); i++) {
             addButton(i + 1, Account::get(i)->getName(), 10, 340 - 20 * (i + 1));
+        }
         break;
     case 8:
         addButton(0, "Easier", 10, 400);
@@ -771,7 +773,7 @@ void Menu::Tick()
             fireSound();
             if (selected == 1) {
                 flash();
-                Account::active = Account::destroy(Account::active);
+                Account::destroyActive();
                 mainmenu = 7;
             } else if (selected == 2) {
                 flash();
@@ -785,13 +787,14 @@ void Menu::Tick()
             } else if (selected < Account::getNbAccounts() + 1) {
                 flash();
                 mainmenu = 5;
-                Account::active = Account::get(selected - 1);
+                Account::setActive(selected - 1);
             } else if (selected == Account::getNbAccounts() + 1) {
                 flash();
-                if (Account::active)
+                if (Account::active) {
                     mainmenu = 5;
-                else
+                } else {
                     mainmenu = 1;
+                }
                 displaytext[0].clear();
                 displayselected = 0;
                 entername = 0;
@@ -872,7 +875,7 @@ void Menu::Tick()
         inputText(displaytext[0], &displayselected);
         if (!waiting) { // the input as finished
             if (!displaytext[0].empty()) { // with enter
-                Account::active = Account::add(string(displaytext[0]));
+                Account::add(string(displaytext[0]));
 
                 mainmenu = 8;