def on_data(self, data): cmd, data = message.player.unpack(data) if cmd == message.PLAYER_JOIN_ROOM: try: room = RoomManager.player_join_room(data.roomid, self) except RoomManager.RoomNotFound: logger.warning( "Player {0} Try to join a NONE exist room {1}".format( id(self), data.roomid)) self.put_data(message.player.pack_join_room_error_response(14)) return except RoomManager.RoomFull: logger.warning("Player {0} Try to join a FULL room {1}".format( id(self), data.roomid)) self.put_data(message.player.pack_join_room_error_response(15)) return marines = MarineFactory.create_marines(room.terrain.size, PLAYER_MARINE_AMOUNT) self.marine_batch_add(marines, data.color) self.put_data( message.player.pack_join_room_response(room.id, room.terrain.size, marines)) return if cmd == message.PLAYER_CREATE_MARINE: raise NotImplementedError("Player Create Marine Not Implemented") if cmd == message.PLAYER_OPERATE_MARINE: self.marine_operate(data.id, data.status, data.targetPostion)
def on_data(self, data): cmd, data = message.observer.unpack(data) if cmd == message.OBSERVER_CREATE_ROOM: # TODO a observer only can create one room room = RoomManager.create_room(data.map, MAX_PLAYERS, MAX_SECONDS) RoomManager.observer_join_room(room.id, self) msg = message.observer.pack_create_room_message(0, room.id, room.terrain.size) self.put_data(msg) return if cmd == message.OBSERVER_JOIN_ROOM: raise NotImplementedError("Observer Join Room Not Implemented") if cmd == message.OBSERVER_MARINE_REPORT: self.room.notify_players(data) return
def on_data(self, data): cmd, data = message.observer.unpack(data) if cmd == message.OBSERVER_CREATE_ROOM: # TODO a observer only can create one room room = RoomManager.create_room(data.map, MAX_PLAYERS, MAX_SECONDS) RoomManager.observer_join_room(room.id, self) msg = message.observer.pack_create_room_message( 0, room.id, room.terrain.size) self.put_data(msg) return if cmd == message.OBSERVER_JOIN_ROOM: raise NotImplementedError("Observer Join Room Not Implemented") if cmd == message.OBSERVER_MARINE_REPORT: self.room.notify_players(data) return
def on_data(self, data): cmd, data = message.player.unpack(data) if cmd == message.PLAYER_JOIN_ROOM: try: room = RoomManager.player_join_room(data.roomid, self) except RoomManager.RoomNotFound: logger.warning("Player {0} Try to join a NONE exist room {1}".format(id(self), data.roomid)) self.put_data(message.player.pack_join_room_error_response(14)) return except RoomManager.RoomFull: logger.warning("Player {0} Try to join a FULL room {1}".format(id(self), data.roomid)) self.put_data(message.player.pack_join_room_error_response(15)) return marines = MarineFactory.create_marines(room.terrain.size, PLAYER_MARINE_AMOUNT) self.marine_batch_add(marines, data.color) self.put_data(message.player.pack_join_room_response(room.id, room.terrain.size, marines)) return if cmd == message.PLAYER_CREATE_MARINE: raise NotImplementedError("Player Create Marine Not Implemented") if cmd == message.PLAYER_OPERATE_MARINE: self.marine_operate(data.id, data.status, data.targetPostion)