gnome-games r7575 - in trunk/glchess: . src/lib
- From: rancell svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-games r7575 - in trunk/glchess: . src/lib
- Date: Sat, 5 Apr 2008 08:12:35 +0100 (BST)
Author: rancell
Date: Sat Apr 5 08:12:34 2008
New Revision: 7575
URL: http://svn.gnome.org/viewvc/gnome-games?rev=7575&view=rev
Log:
Handle AI players dying before the game starts (Bug #522341)
Modified:
trunk/glchess/ChangeLog
trunk/glchess/src/lib/game.py
Modified: trunk/glchess/src/lib/game.py
==============================================================================
--- trunk/glchess/src/lib/game.py (original)
+++ trunk/glchess/src/lib/game.py Sat Apr 5 08:12:34 2008
@@ -81,6 +81,7 @@
'name' is the name of the player.
"""
self.__name = str(name)
+ self.isAlive = True
# Methods to extend
@@ -185,7 +186,9 @@
def die(self):
"""Report this player has died"""
- self.__game.killPlayer(self)
+ self.isAlive = False
+ if self.__game is not None:
+ self.__game.killPlayer(self)
# Private methods
@@ -409,9 +412,21 @@
self.__currentPlayer = self.__whitePlayer
self.__started = True
-
+
+ # Stop if both players aren't alive
+ if not self.__whitePlayer.isAlive:
+ self.killPlayer(self.__whitePlayer)
+ return
+ if not self.__blackPlayer.isAlive:
+ self.killPlayer(self.__blackPlayer)
+ return
+
self.startLock()
+ # Inform other players of the result
+ for player in self.__players:
+ player.onPlayerStartTurn(self.__currentPlayer)
+
# Get the next player to move
if self.result == RESULT_IN_PROGRESS:
self.__currentPlayer._setReadyToMove(True)
@@ -660,13 +675,16 @@
else:
assert(False)
self.endGame(result, RULE_TIMEOUT)
-
+
def endGame(self, result, rule):
+ if self.result != RESULT_IN_PROGRESS:
+ return
self.result = result
self.rule = rule
- self.__currentPlayer._setReadyToMove(False)
- for player in self.__players:
- player.onGameEnded(self)
+ if self.isStarted():
+ self.__currentPlayer._setReadyToMove(False)
+ for player in self.__players:
+ player.onGameEnded(self)
def getMoves(self):
"""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]