From: <umg...@us...> - 2007-04-01 17:33:50
|
Revision: 378 http://svn.sourceforge.net/pybridge/?rev=378&view=rev Author: umgangee Date: 2007-04-01 10:33:51 -0700 (Sun, 01 Apr 2007) Log Message: ----------- Use (some) magic to determine game type; remove unnecessary conversion of Direction type. Modified Paths: -------------- trunk/pybridge/pybridge/network/remotetable.py Modified: trunk/pybridge/pybridge/network/remotetable.py =================================================================== --- trunk/pybridge/pybridge/network/remotetable.py 2007-04-01 17:32:25 UTC (rev 377) +++ trunk/pybridge/pybridge/network/remotetable.py 2007-04-01 17:33:51 UTC (rev 378) @@ -24,6 +24,11 @@ from pybridge.network.error import DeniedRequest, IllegalRequest +# TODO: move to somewhere more appropriate. +from pybridge.bridge.game import BridgeGame +GAMETYPES = {'BridgeGame' : BridgeGame} + + class RemoteTable(pb.RemoteCache): """A client-side implementation of ITable providing a "front-end" to a remote server-side LocalTable. @@ -42,24 +47,22 @@ self.id = None self.game = None + self.gametype = None self.observers = [] # Observers of master table. self.players = {} # Positions mapped to player identifiers. def setCopyableState(self, state): self.id = state['id'] - self.observers = state['observers'] - self.players = state['players'] - - # TODO: do this by magic. - if state['gametype'] in ['BridgeGame']: - from pybridge.bridge.game import BridgeGame - self.gametype = BridgeGame + if state['gametype'] in GAMETYPES: + self.gametype = GAMETYPES[state['gametype']] + self.game = self.gametype() + self.game.setState(state['gamestate']) else: raise NameError, "Unknown game type %s" % state['gametype'] - self.game = self.gametype() - self.game.setState(state['gamestate']) + self.observers = state['observers'] + self.players = state['players'] # Implementation of ITable. @@ -70,12 +73,12 @@ def joinGame(self, position, user=None): - d = self.master.callRemote('joinGame', position.key) + d = self.master.callRemote('joinGame', position) return d def leaveGame(self, position, user=None): - d = self.master.callRemote('leaveGame', position.key) + d = self.master.callRemote('leaveGame', position) return d @@ -114,13 +117,11 @@ def observe_joinGame(self, player, position): - position = getattr(self.game.positions, position) self.players[position] = player self.notify('joinGame', player, position) def observe_leaveGame(self, player, position): - position = getattr(self.game.positions, position) del self.players[position] self.notify('leaveGame', player, position) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |