From d4180f53758e654d495a43fb0774aa911f8dea02 Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Sun, 15 Jul 2007 21:30:15 +0000 Subject: - (activity.py _buddy_joined_cb) Fix when buddy who joins is empty - (activity.py _joined_cb) Fix when myself is not in the buddies list. - (messenger.py load_game) Fix when joining a game which is already running that the current player is sent. Need to send the cards that has been chosen already as well. - (game.py) Removed the old readconfig --- diff --git a/activity.py b/activity.py index d9bbdb7..bb8c101 100755 --- a/activity.py +++ b/activity.py @@ -112,6 +112,8 @@ class MemorizeActivity(Activity): # Owner.props.key if self._shared_activity: # We are joining the activity + # _logger.debug("Joined activity, add myself to buddy list nick=%s" %self.owner.props.nick) + # self.game.add_buddy(self.owner) self.connect('joined', self._joined_cb) if self.get_shared(): # We've already joined @@ -198,12 +200,20 @@ class MemorizeActivity(Activity): def _joined_cb(self, activity): if not self._shared_activity: return - + + _logger.debug('Joined an existing shared activity') + + self.found = 0 for buddy in self._shared_activity.get_joined_buddies(): - _logger.debug("buddy joined - _joined_cb: %s", buddy.props.nick) + _logger.debug("buddy joined - _joined_cb: %s (get buddies of activity and add them to my list)", buddy.props.nick) self.game.add_buddy(buddy) + if buddy == self.owner: + self.found = 1 + + if self.found == 0: + _logger.debug("buddy joined - _joined_cb: Not foud myself in buddy list - will add myself at end of the list.") + self.game.add_buddy(self.owner) - _logger.debug('Joined an existing shared activity') self.initiating = False self._setup() @@ -248,9 +258,15 @@ class MemorizeActivity(Activity): def _buddy_joined_cb (self, activity, buddy): if buddy <> self.owner: - _logger.debug("buddy joined - _buddy_joined_cb: %s", buddy.props.nick) - self.game.add_buddy(buddy) + if buddy.props.nick == '': + _logger.debug("buddy joined - _buddy_joined_cb: buddy name empty nick=%s. Will not add." %(buddy.props.nick)) + else: + _logger.debug("buddy joined - _buddy_joined_cb: %s", buddy.props.nick) + self.game.add_buddy(buddy) def _buddy_left_cb (self, activity, buddy): - _logger.debug("buddy left - _buddy_left_cb: %s", buddy.props.nick) - self.game.rem_buddy(buddy) + if buddy.props.nick == '': + _logger.debug("buddy joined - _buddy_left_cb: buddy name empty nick=%s. Will not remove" %(buddy.props.nick)) + else: + _logger.debug("buddy left - _buddy_left_cb: %s", buddy.props.nick) + self.game.rem_buddy(buddy) diff --git a/game.py b/game.py index b6d9b3a..9d554f1 100755 --- a/game.py +++ b/game.py @@ -188,60 +188,6 @@ class MemorizeGame(gobject.GObject): self.players_score[buddy] += 1 self.emit('increase-score', buddy) - def read_config2(self, game_name, size = 100): - filename = os.path.join(self.game_dir, game_name +'/'+game_name+'.mem') - # seed = random.randint(0, 14567) - temp1 = [] - temp2 = [] - grid = [] - data = {} - # set random seed - random.seed() - filecheck = filename.split('.') - if filecheck[2] != 'mem': - logging.error('File format of %s'%filename) - else: - fd = open(filename, 'r') - if fd == None: - logging.error(' Reading setup file %s'%filename) - else:# set random seed - logging.info(' Read setup for memosono from file %s'%filename) - lines = fd.readlines() - index = 0 - - # Load variables - while lines[index][0] != '#': - zw = lines[index].split('=') - zw[1] = zw[1][:-1] - if len(zw) is not 0: - data[zw[0]]=zw[1] - index += 1 - index += 1 - data['size'] = str(size) - - # Load cards data - tile_number = 0 - card_num = len(lines)-index - while tile_number < card_num and tile_number <= int((size*size)/2)-1: - zw = lines[index].split(',') - if len(zw) is not 0: - temp1.append(zw[:8]+[ 0, 0, tile_number]) - temp2.append(zw[8:]+[ 0, 0, tile_number]) - tile_number += 1 - index += 1 - fd.close() - - # Shuffle cards order - if data['divided']==1: - random.shuffle(temp1) - random.shuffle(temp2) - temp1.extend(temp2) - else: - temp1.extend(temp2) - random.shuffle(temp1) - - return data, temp1 - def get_grid(self): return self.model.grid diff --git a/messenger.py b/messenger.py index 3237b00..173ad14 100644 --- a/messenger.py +++ b/messenger.py @@ -65,13 +65,13 @@ class Messenger(ExportedGObject): self.ordered_bus_names.append(sender) _logger.debug('The grid to send: %s', self.game.get_grid()) _logger.debug('The data to send: %s', self.game.get_data()) - self._tube.get_object(sender, PATH).load_game(self.ordered_bus_names, self.game.get_grid(), self.game.get_data(), self.game.waiting_players, dbus_interface=IFACE) + self._tube.get_object(sender, PATH).load_game(self.ordered_bus_names, self.game.get_grid(), self.game.get_data(), self.game.players.index(self.game.current_player), self.game.waiting_players, dbus_interface=IFACE) _logger.debug('Sent the game state') #@dbus.service.method(dbus_interface=IFACE, in_signature='asss', out_signature='') #@dbus.service.method(dbus_interface=IFACE, in_signature='asa(ssssssssiii)a{ss}av', out_signature='') - @dbus.service.method(dbus_interface=IFACE, in_signature='asaa{ss}a{ss}av', out_signature='') - def load_game(self, bus_names, grid, data,list): + @dbus.service.method(dbus_interface=IFACE, in_signature='asaa{ss}a{ss}nav', out_signature='') + def load_game(self, bus_names, grid, data, current_player, list): ''' Sync the game with with players ''' _logger.debug('Data received to sync game data') _logger.debug('grid %s '%grid) @@ -79,6 +79,8 @@ class Messenger(ExportedGObject): self.player_id = bus_names.index(self._tube.get_unique_name()) self._change_game_receiver(grid,data,self.ordered_bus_names[0]) self.game.load_waiting_list(list) + _logger.debug('Current plater id=%d' %current_player) + self.game.current_player = self.game.players[current_player] def flip(self, widget, id): ''' Notify other players that you flipped a card ''' -- cgit v0.9.1