def move(self, player: Player, pos: Vector2): if self.dungeon.is_valid_position(pos): old_pos = player.pos player.pos = pos self.send_room_data(player) # Fetch the rooms old_room = self.dungeon.room_at_position(old_pos) new_room = self.dungeon.room_at_position(pos) # Update players in rooms if old_pos != pos: old_room.leave(player) self.send_msg_to_room(old_room, "%s has left the room" % player.get_true_name(), [player]) new_room.join(player) # Notify everyone in the room that a player has joined self.send_msg_to_room(new_room, "%s has joined the room" % player.get_true_name(), [player]) # Notify player of the players in the room they have joined if len(new_room.players) > 1: player_names = ', '.join([ply.get_true_name() for ply in new_room.players if ply != player]) self.send(player, DataTags.WRITE, "There are %d people in this room: %s" % (len(new_room.players) - 1, player_names)) # Save the player's position self.player_persistence.save_data(player) else: self.send(player, DataTags.WRITE, "Not a valid direction!") # TODO - less confusing message if map changes
def load_data(self, player: Player): data = self._player_data(player.player_id) print(data) if data is not None: player.nickname = data['nickname'] player.pos = Vector2(data['pos_x'], data['pos_y'])