[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdegames/kreversi
From:       Inge Wallin <inge () lysator ! liu ! se>
Date:       2004-09-22 19:57:35
Message-ID: 20040922195735.D6D92126DC () office ! kde ! org
[Download RAW message or body]

CVS commit by ingwa: 

Fix bug 89829: KReversi: When you save a game, the color for Human and
               Computer is not saved

This fix reverses a previous fix by Anne-Marie Mahfouf, that had some
issues.  See the discussion at the KDE bugzilla
(http://bugs.kde.org/show_bug.cgi?id=89829) for details.

I will backport this one to KDE_3_3_BRANCH.


  M +22 -0     ChangeLog   1.34
  M +18 -2     TODO   1.19
  M +20 -11    board.cpp   1.43
  R            prefs_addons.h   1.1


--- kdegames/kreversi/ChangeLog  #1.33:1.34
@@ -1,2 +1,24 @@
+2004-09-22  Inge Wallin  <ing@lysator.liu.se>
+
+        Fix bug 89829: "KReversi: When you save a game, the color for
+        Human and Computer is not saved" again.  See the discussion on the
+        KDE bugzilla for details
+        (http://bugs.kde.org/show_bug.cgi?id=89829).
+        * board.cpp (Board::saveGame): Save m_humanColor as HumanColor.  
+        * Remove saving of the side to move since this is implicit
+        anyway.
+        * (Board::loadGame): Fix loading of m_humanColor and
+        m_competitiveGame
+        * Fix emit of signal turn, and the condition to call
+        computerMakeMove().
+        * prefs_addons.h: Removed
+        
+        
+2004-09-18  Anne-Marie Mahfouf  (ChangeLog entry by Inge Wallin)
+
+        Fix bug 89829.  (See above, though)
+        * prefs_addons.h: New file 
+        * board.cpp (saveGame): Some changes
+        
 2004-09-18  Inge Wallin  <inge@lysator.liu.se>
 

--- kdegames/kreversi/TODO  #1.18:1.19
@@ -7,8 +7,24 @@
 * Convert KReversi to use KGame / KPlayer
   I. Convert KReversi to a proper Model/View program.
-     1. Make Game the Model.
+     1. Fix a ReversiGame (formerly known as Game)
         - Clean it up. (Only store the moves).
         - Add a few necessary methods.
-  II. Introduce a class Player
+     2. Create a new class KReversiGame, that stores a ReversiGame and
+        sends a lot of signals.
+        - Split out a lot of methods from the current class Board.
+     3. Create KReversiBoard from the rest of the current Board
+     4. Create a new class KReversiGameView, that will be the main view.
+        - Store a KReversiGame, a KReversiBoard and some other widgets.
+
+  II. Introduce a class ReversiPlayer
+
+  III. Convert everything to KGame
+     1. Let KReversiGame inherit from KGame
+     2. Let ReversiPlayer inherit from KPlayer.
+
+  IV. ...
+
+  V.  Profit!
+
 
 Later

--- kdegames/kreversi/board.cpp  #1.42:1.43
@@ -602,5 +602,7 @@ void Board::setColor(const QColor &c)
 
 
-// Saves the game.  Only one game at a time can be saved.
+// Saves the game in the config file.  
+//
+// Only one game at a time can be saved.
 //
 
@@ -615,5 +617,7 @@ void Board::saveGame(KConfig *config)
   config->writeEntry("Strength", strength());
 
-  // Write the game itself to the file.
+  // Write the moves of the game to the config object.  This object
+  // saves itself all at once so we don't have to write the moves
+  // to the file ourselves.
   for (uint i = moveNumber(); i > 0; i--) {
     Move  move = m_game->lastMove();
@@ -626,7 +630,7 @@ void Board::saveGame(KConfig *config)
   }
 
-  // save whose turn it is and if the game is casual.
-  config->writeEntry("WhoseTurn",   (int) m_humanColor);
+  // Save whose turn it is and if the game is competitive.
   config->writeEntry("Competitive", (int) m_competitiveGame);
+  config->writeEntry("HumanColor",  (int) m_humanColor);
   config->sync();
 
@@ -666,21 +670,26 @@ bool Board::loadGame(KConfig *config, bo
   }
 
+  m_humanColor      = (Color) config->readNumEntry("HumanColor");
+  m_competitiveGame = (bool)  config->readNumEntry("Competitive");
+
   if (noupdate)
     return true;
 
-  m_humanColor = (Color)config->readNumEntry("WhoseTurn");
-  Prefs::setHumanColor((int) m_humanColor);
-  Prefs::setComputerColor((int) opponent(m_humanColor));
-  Prefs::writeConfig();
   updateBoard(TRUE);
   setState(State(config->readNumEntry("State")));
   setStrength(config->readNumEntry("Strength", 1));
-  m_competitiveGame = (bool) config->readNumEntry("Competitive");
   //kdDebug() << "Competitive set to: " << m_competitiveGame << endl;
 
   if (interrupted())
     doContinue();
-  //it's always the human's turn to play in a load game as you cannot save a game while playing
-  emit turn(m_humanColor);
+  else {
+    // Make the view show who is to move.
+    emit turn(m_game->toMove());
+
+    // Computer makes first move.
+    if (m_humanColor != m_game->toMove())
+      computerMakeMove();
+  }
+
   return true;
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic