From e97bad397dde9e8faa7a85eab53812106f940df7 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Thu, 29 Jan 2009 06:28:26 +0000 Subject: Suppress wrong positions in players list OLPC#5242 Place current user at the end of players list all time. Update current-player position after HELLO procedure --- diff --git a/activity.py b/activity.py index f6f3186..9b15453 100644 --- a/activity.py +++ b/activity.py @@ -234,17 +234,14 @@ class MemorizeActivity(Activity): _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 (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) + if buddy != self.owner: + _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) + self.game.add_buddy(self.owner) self.initiating = False self._sharing_setup() diff --git a/cardtable.py b/cardtable.py index 608d8c5..e66437e 100644 --- a/cardtable.py +++ b/cardtable.py @@ -74,7 +74,8 @@ class CardTable(gtk.EventBox): # do it once self.set_size_request(size, size) self._workspace_size = size - self.load_game(None, self.data, self.cards_data) + if self.data: + self.load_game(None, self.data, self.cards_data) def load_game(self, widget, data, grid): self.data = data diff --git a/game.py b/game.py index cc70f6f..769f368 100644 --- a/game.py +++ b/game.py @@ -160,6 +160,10 @@ class MemorizeGame(GObject): def buddy_message(self, buddy, text): self.emit('msg_buddy', buddy, text) + def update_turn(self): + self.set_sensitive(self.current_player == self.myself) + self.emit('change-turn', self.current_player) + def change_turn(self): if len(self.players) <= 1: self.current_player = self.players[0] @@ -170,8 +174,7 @@ class MemorizeGame(GObject): else: next = self.players[self.players.index(self.current_player)+1] self.current_player = next - self.set_sensitive(self.current_player == self.myself) - self.emit('change-turn', self.current_player) + self.update_turn() def play_sound(self, snd, sound_file): if len(snd.split('.')) > 1: diff --git a/messenger.py b/messenger.py index 8ed9a20..65ce900 100644 --- a/messenger.py +++ b/messenger.py @@ -45,10 +45,11 @@ class Messenger(ExportedGObject): def participant_change_cb(self, added, removed): if not self.entered: - self._flip_handler() - self._change_game_handler() - self._file_part_handler() if self.is_initiator: + self._flip_handler() + self._change_game_handler() + self._file_part_handler() + self.player_id = self._tube.get_unique_name() self.ordered_bus_names = [self.player_id] self._hello_handler() @@ -91,8 +92,13 @@ class Messenger(ExportedGObject): self.ordered_bus_names = bus_names self.player_id = bus_names.index(self._tube.get_unique_name()) #self.game.load_waiting_list(list) - self.game.current_player = self.game.players[current_player] self._change_game_receiver(data['mode'], grid, data, path) + self.game.current_player = self.game.players[current_player] + self.game.update_turn() + + self._flip_handler() + self._change_game_handler() + self._file_part_handler() # Change game method -- cgit v0.9.1