change of some game params does not need reinit
Stefan Schuermans

Stefan Schuermans commited on 2019-07-15 19:26:04
Showing 6 changed files, with 54 additions and 49 deletions.

... ...
@@ -73,9 +73,7 @@ void Game::updateConfig()
73 73
   }
74 74
 
75 75
   // check config update of derived game
76
-  if (updateConfigGame()) {
77
-    doRedraw = true;
78
-  }
76
+  updateConfigGame(doReinit, doRedraw);
79 77
 
80 78
   // re-initialize / redraw
81 79
   if (doReinit) {
... ...
@@ -73,8 +73,12 @@ public:
73 73
   /// check for update of configuration
74 74
   virtual void updateConfig() final;
75 75
 
76
-  /// check for update of configuration (derived game), return true on update
77
-  virtual bool updateConfigGame() = 0;
76
+  /**
77
+   * @brief check for update of configuration (derived game)
78
+   * @param[in,out] doReinit set to true to ask for reinitialization
79
+   * @param[in,out] doRedraw set to true to ask for redrawing
80
+   */
81
+  virtual void updateConfigGame(bool &doReinit, bool &doRedraw) = 0;
78 82
 
79 83
   /// callback when requested time reached
80 84
   virtual void timeCall();
... ...
@@ -81,21 +81,26 @@ Pong::~Pong()
81 81
   }
82 82
 }
83 83
 
84
-/// check for update of configuration (derived game), return true on update
85
-bool Pong::updateConfigGame()
84
+/**
85
+ * @brief check for update of configuration (derived game)
86
+ * @param[in,out] doReinit set to true to ask for reinitialization
87
+ * @param[in,out] doRedraw set to true to ask for redrawing
88
+ */
89
+void Pong::updateConfigGame(bool &doReinit, bool &doRedraw)
86 90
 {
87
-  bool ret = false;
88
-
89
-  // color file was modified -> convert color, return true for update
90
-  // cfg value file was updated -> read new cfg value, return true for update
91
-  if (colorUpdate(m_fileBallColor, m_ballColor)) { ret = true; }
92
-  if (colorUpdate(m_fileLineColor, m_lineColor)) { ret = true; }
93
-  if (colorUpdate(m_filePadColor, m_padColor)) { ret = true; }
94
-  if (colorUpdate(m_fileComputerColor, m_computerColor)) { ret = true; }
95
-  if (colorUpdate(m_fileScoreColor, m_scoreColor)) { ret = true; }
96
-  if (colorUpdate(m_fileGoalColor, m_goalColor)) { ret = true; }
97
-  if (valueUpdate(m_fileDelay, c_delayDescr, m_delay)) { ret = true; }
98
-  if (valueUpdate(m_fileMaxScore, c_maxScoreDescr, m_maxScore)) { ret = true; }
91
+  (void)doReinit;
92
+
93
+  // color file was modified -> convert color, ask for redraw
94
+  if (colorUpdate(m_fileBallColor, m_ballColor)) { doRedraw = true; }
95
+  if (colorUpdate(m_fileLineColor, m_lineColor)) { doRedraw = true; }
96
+  if (colorUpdate(m_filePadColor, m_padColor)) { doRedraw = true; }
97
+  if (colorUpdate(m_fileComputerColor, m_computerColor)) { doRedraw = true; }
98
+  if (colorUpdate(m_fileScoreColor, m_scoreColor)) { doRedraw = true; }
99
+  if (colorUpdate(m_fileGoalColor, m_goalColor)) { doRedraw = true; }
100
+
101
+  // cfg value file was updated -> read new cfg value, no reinit/redraw
102
+  valueUpdate(m_fileDelay, c_delayDescr, m_delay);
103
+  valueUpdate(m_fileMaxScore, c_maxScoreDescr, m_maxScore);
99 104
 
100 105
   // sound name file was modified -> re-read sound name, no other update needed
101 106
   soundUpdate(m_fileLeftPlayerSound);
... ...
@@ -104,8 +109,6 @@ bool Pong::updateConfigGame()
104 109
   soundUpdate(m_fileOtherScoreSound);
105 110
   soundUpdate(m_fileWinSound);
106 111
   soundUpdate(m_fileLoseSound);
107
-
108
-  return ret;
109 112
 }
110 113
 
111 114
 /**
... ...
@@ -53,8 +53,12 @@ private:
53 53
   const Pong & operator=(const Pong &that);
54 54
 
55 55
 public:
56
-  /// check for update of configuration (derived game), return true on update
57
-  virtual bool updateConfigGame();
56
+  /**
57
+   * @brief check for update of configuration (derived game)
58
+   * @param[in,out] doReinit set to true to ask for reinitialization
59
+   * @param[in,out] doRedraw set to true to ask for redrawing
60
+   */
61
+  virtual void updateConfigGame(bool &doReinit, bool &doRedraw);
58 62
 
59 63
   /**
60 64
    * @brief check if accepting new operator connection is possible
... ...
@@ -71,36 +71,28 @@ Tetris::~Tetris()
71 71
   }
72 72
 }
73 73
 
74
-/// check for update of configuration (derived game), return true on update
75
-bool Tetris::updateConfigGame()
74
+/**
75
+ * @brief check for update of configuration (derived game)
76
+ * @param[in,out] doReinit set to true to ask for reinitialization
77
+ * @param[in,out] doRedraw set to true to ask for redrawing
78
+ */
79
+void Tetris::updateConfigGame(bool &doReinit, bool &doRedraw)
76 80
 {
77
-  bool ret = false;
81
+  (void)doReinit;
78 82
 
79
-  // color file was modified -> convert color, return true for update
80
-  // cfg value file was updated -> read new cfg value, return true for update
81
-  if (colorUpdate(m_fileStoneColor, m_stoneColor)) {
82
-    ret = true;
83
-  }
84
-  if (valueUpdate(m_fileDelay, c_delayDescr, m_delay)) {
85
-    ret = true;
86
-  }
87
-  if (valueUpdate(m_fileDropDelay, c_dropDelayDescr, m_dropDelay)) {
88
-    ret = true;
89
-  }
90
-  if (valueUpdate(m_fileBlinkDelay, c_blinkDelayDescr, m_blinkDelay)) {
91
-    ret = true;
92
-  }
93
-  if (valueUpdate(m_fileGameOverDelay, c_gameOverDelayDescr,
94
-                  m_gameOverDelay)) {
95
-    ret = true;
96
-  }
83
+  // color file was modified -> convert color, ask for redraw
84
+  if (colorUpdate(m_fileStoneColor, m_stoneColor)) { doRedraw = true; }
97 85
 
98
-  // sound name file was modified -> re-read sound name, no other update needed
86
+  // delay cfg value file was updated -> read new delay cfg value, no re-*
87
+  valueUpdate(m_fileDelay, c_delayDescr, m_delay);
88
+  valueUpdate(m_fileDropDelay, c_dropDelayDescr, m_dropDelay);
89
+  valueUpdate(m_fileBlinkDelay, c_blinkDelayDescr, m_blinkDelay);
90
+  valueUpdate(m_fileGameOverDelay, c_gameOverDelayDescr, m_gameOverDelay);
91
+
92
+  // sound name file was modified -> re-read sound name, no reinit/draw needed
99 93
   soundUpdate(m_fileStartSound);
100 94
   soundUpdate(m_fileRowCompleteSound);
101 95
   soundUpdate(m_fileGameOverSound);
102
-
103
-  return ret;
104 96
 }
105 97
 
106 98
 /**
... ...
@@ -70,8 +70,12 @@ private:
70 70
   const Tetris & operator=(const Tetris &that);
71 71
 
72 72
 public:
73
-  /// check for update of configuration (derived game), return true on update
74
-  virtual bool updateConfigGame();
73
+  /**
74
+   * @brief check for update of configuration (derived game)
75
+   * @param[in,out] doReinit set to true to ask for reinitialization
76
+   * @param[in,out] doRedraw set to true to ask for redrawing
77
+   */
78
+  virtual void updateConfigGame(bool &doReinit, bool &doRedraw);
75 79
 
76 80
   /**
77 81
    * @brief check if accepting new operator connection is possible
78 82