diff options
-rwxr-xr-x | activity.py | 30 | ||||
-rwxr-xr-x | game.py | 54 | ||||
-rw-r--r-- | messenger.py | 8 |
3 files changed, 28 insertions, 64 deletions
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) @@ -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 ''' |