]> git.jsancho.org Git - lugaru.git/commitdiff
Fixes #40 Scores are now integers
authorCôme Chilliet <come@chilliet.eu>
Mon, 23 Jan 2017 16:28:46 +0000 (17:28 +0100)
committerCôme Chilliet <come@chilliet.eu>
Mon, 23 Jan 2017 16:35:08 +0000 (17:35 +0100)
They are still stored as floats in save file to be backward compatible

Source/GameDraw.cpp
Source/GameTick.cpp
Source/Level/Awards.cpp
Source/Level/Awards.hpp
Source/User/Account.cpp
Source/User/Account.hpp

index a24df6970c9e94e12155f46edc62130b19507cda..73e4dde153fc9fcdf39496d483db9fc86f5e75f2 100644 (file)
@@ -597,7 +597,7 @@ int Game::DrawGLScene(StereoSide side)
                     }
                     text->glPrintOutlined(1, 0, 0, 1 - bonustime, 1024 / 2 - 10 * strlen(bonus_name), 768 / 16 + 768 * 4 / 5, bonus_name, 1, 2, 1024, 768);
 
-                    string = to_string((int)bonusvalue);
+                    string = to_string(bonusvalue);
                     text->glPrintOutlined(1, 0, 0, 1 - bonustime, 1024 / 2 - 10 * string.size(), 768 / 16 - 20 + 768 * 4 / 5, string, 1, 2 * .8, 1024, 768);
 
                     glColor4f(.5, .5, .5, 1);
index 9844ff0e9c89e8a446c00d6ef4e50fd241603eeb..69f9d04ce53ff8fbfba1630fabb5024e93a55818 100644 (file)
@@ -3209,7 +3209,12 @@ void Game::Tick()
                 if (Tutorial::active) {
                     bonusvalue = 0;
                 }
-                bonusvalue /= bonusnum[bonus];
+                if (bonusvalue > 0) {
+                    bonusvalue /= bonusnum[bonus];
+                    if (bonusvalue <= 0) {
+                        bonusvalue = 0;
+                    }
+                }
                 bonustotal += bonusvalue;
             }
             bonustime += multiplier;
index 7fa37a83bb55cf1f2897c1498d340c8d9dc3d2b1..1bb7622a217e9f93d99e3be04815de91722fa4e2 100644 (file)
@@ -23,9 +23,9 @@ along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 #include "Objects/Person.hpp"
 
 int bonus;
-float bonusvalue;
-float bonustotal;
-float startbonustotal;
+int bonusvalue;
+int bonustotal;
+int startbonustotal;
 float bonustime;
 float bonusnum[100];
 
index ba2bdf82b45edc40507a53f6c602c2492506a72e..da0fb7510f69c9dee6860d2f8791f0ec691cb5a9 100644 (file)
@@ -30,10 +30,10 @@ enum bonus_types {
 extern const char *bonus_names[bonus_count];
 
 extern int bonus;
-extern float bonusvalue;
-extern float bonustotal;
+extern int bonusvalue;
+extern int bonustotal;
 extern float bonustime;
-extern float startbonustotal;
+extern int startbonustotal;
 extern float bonusnum[100];
 
 extern void award_bonus(int playerid, int bonusid, int alt_value = 0);
index 82072fc1aa764580a1ad1000e579022a34542dd3..50195f02f9731614842532190234ab6c636faaa1 100644 (file)
@@ -65,10 +65,13 @@ Account::Account(FILE* tfile)
             funpackf(tfile, "Bb", &c);
             campaignName.append(1, c);
         }
+        float fscore, fhighscore;
         funpackf(tfile, "Bf", &(campaignProgress[campaignName].time));
-        funpackf(tfile, "Bf", &(campaignProgress[campaignName].score));
+        funpackf(tfile, "Bf", &(fscore));
         funpackf(tfile, "Bf", &(campaignProgress[campaignName].fasttime));
-        funpackf(tfile, "Bf", &(campaignProgress[campaignName].highscore));
+        funpackf(tfile, "Bf", &(fhighscore));
+        campaignProgress[campaignName].score = fscore;
+        campaignProgress[campaignName].highscore = fhighscore;
         int campaignchoicesmade, campaignchoice;
         funpackf(tfile, "Bi", &campaignchoicesmade);
         for (int j = 0; j < campaignchoicesmade; j++) {
@@ -91,8 +94,10 @@ Account::Account(FILE* tfile)
 
     funpackf(tfile, "Bf", &points);
     for (int i = 0; i < 50; i++) {
-        funpackf(tfile, "Bf", &(highscore[i]));
+        float fscore;
+        funpackf(tfile, "Bf", &(fscore));
         funpackf(tfile, "Bf", &(fasttime[i]));
+        highscore[i] = fscore;
     }
     for (int i = 0; i < 60; i++) {
         funpackf(tfile, "Bb", &(unlocked[i]));
@@ -122,9 +127,9 @@ void Account::save(FILE* tfile)
             fpackf(tfile, "Bb", it->first[j]);
         }
         fpackf(tfile, "Bf", it->second.time);
-        fpackf(tfile, "Bf", it->second.score);
+        fpackf(tfile, "Bf", float(it->second.score));
         fpackf(tfile, "Bf", it->second.fasttime);
-        fpackf(tfile, "Bf", it->second.highscore);
+        fpackf(tfile, "Bf", float(it->second.highscore));
         fpackf(tfile, "Bi", it->second.choices.size());
         for (unsigned j = 0; j < it->second.choices.size(); j++) {
             fpackf(tfile, "Bi", it->second.choices[j]);
@@ -138,7 +143,7 @@ void Account::save(FILE* tfile)
 
     fpackf(tfile, "Bf", points);
     for (unsigned j = 0; j < 50; j++) {
-        fpackf(tfile, "Bf", highscore[j]);
+        fpackf(tfile, "Bf", float(highscore[j]));
         fpackf(tfile, "Bf", fasttime[j]);
     }
     for (unsigned j = 0; j < 60; j++) {
@@ -214,14 +219,14 @@ void Account::endGame()
     campaignProgress[currentCampaign].time = 0;
 }
 
-void Account::winCampaignLevel(int choice, float score, float time)
+void Account::winCampaignLevel(int choice, int score, float time)
 {
     campaignProgress[currentCampaign].choices.push_back(choice);
     setCampaignScore(campaignProgress[currentCampaign].score + score);
     campaignProgress[currentCampaign].time = time;
 }
 
-void Account::winLevel(int level, float score, float time)
+void Account::winLevel(int level, int score, float time)
 {
     if (!devtools) {
         if (score > highscore[level]) {
index 3c9e2e2f03b176ffa28966f3777ef7ae06204d7b..f75a1838ddfcbb419d224601640a23f6579dd82a 100644 (file)
@@ -27,9 +27,9 @@ along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 #include <vector>
 
 struct CampaignProgress {
-    float highscore;
+    int highscore;
     float fasttime;
-    float score;
+    int score;
     float time;
     std::vector<int> choices;
     CampaignProgress() {
@@ -58,8 +58,8 @@ public:
     Account(FILE* tfile);
 
     void endGame();
-    void winCampaignLevel(int choice, float score, float time);
-    void winLevel(int level, float score, float time);
+    void winCampaignLevel(int choice, int score, float time);
+    void winLevel(int level, int score, float time);
 
     // getter and setters
     int getDifficulty();
@@ -69,7 +69,7 @@ public:
     const std::string& getName() {
         return name;
     };
-    float getCampaignScore() {
+    int getCampaignScore() {
         return campaignProgress[currentCampaign].score;
     };
     int getCampaignChoicesMade() {
@@ -80,13 +80,15 @@ public:
     };
     void setCampaignScore(int s) {
         campaignProgress[currentCampaign].score = s;
-        if (s > campaignProgress[currentCampaign].highscore)
+        if (s > campaignProgress[currentCampaign].highscore) {
             campaignProgress[currentCampaign].highscore = s;
+        }
     };
     void setCampaignFinalTime(float t) {
         campaignProgress[currentCampaign].time = t;
-        if ((t < campaignProgress[currentCampaign].fasttime) || ((campaignProgress[currentCampaign].fasttime == 0) && (t != 0)))
+        if ((t < campaignProgress[currentCampaign].fasttime) || ((campaignProgress[currentCampaign].fasttime == 0) && (t != 0))) {
             campaignProgress[currentCampaign].fasttime = t;
+        }
     };
     float getCampaignFasttime() {
         return campaignProgress[currentCampaign].fasttime;
@@ -94,10 +96,10 @@ public:
     void resetFasttime() {
         campaignProgress[currentCampaign].fasttime = 0;
     };
-    float getCampaignHighScore() {
+    int getCampaignHighScore() {
         return campaignProgress[currentCampaign].highscore;
     };
-    float getHighScore(int i) {
+    int getHighScore(int i) {
         return highscore[i];
     };
     float getFastTime(int i) {
@@ -121,7 +123,7 @@ private:
     int difficulty;
     int progress; // progress in challenge levels
     float points;
-    float highscore[50];
+    int highscore[50];
     float fasttime[50];
     bool unlocked[60];
     std::string name;