class GameHandler(Handler): def __init__(self, connection, account, character_id): super().__init__(connection) self._account = account self._character_id = character_id self._game_manager = GameManager() self._character_manager = CharacterManager() def enter(self): character = self._character_manager.get_character(self._character_id) character.add_existing_logic( TelnetReporter(self._character_id, self._connection)) self._game_manager.do_action( Action('enterrealm', character_id=self._character_id)) character.do_action( Action('seeroom', character_id=self._character_id, room_id=character.room_id)) # self.prompt() def hang_up(self): self._connection.send(vt100.newline + vt100.bg_magenta + 'Goodbye!' + vt100.newline) def handle(self, cmd_string): self._game_manager.do_action( Action('command', character_id=self._character_id, data={'cmd': cmd_string.strip()}))
def execute(self, character: Character, param_string: str): game_manager = GameManager() game_manager.add_action_absolute( 0, Action('chat', character_id=character.id, data={'msg': param_string}))
def execute(self, character: Character, param_string: str): game_manager = GameManager() connected_characters = game_manager.get_connected_characters() msg = 'Players<$nl>----------<$nl>' for connected_character in connected_characters: msg = msg + '<$cyan>{0}<$reset><$nl>'.format( connected_character.name) character.do_action(Action('announce', data={'msg': msg}))
def main(): global game props = Properties() props.init_props('properties.yml') configure_log_file(props.get('log.prefix')) logging.info('******************') connect(props.get('db.database'), host='mongodb://' + props.get('db.user') + ':' + props.get('db.password') + '@' + props.get('db.host')) logging.info('Connected to database') logging.info('Host: %s', props.get('db.host')) logging.info('Database: %s', props.get('db.database')) logging.info('User: %s', props.get('db.user')) props.load_config() game = Game() game_manager = GameManager() loop = asyncio.get_event_loop() coro = telnetlib3.create_server(port=props.get('server.port'), log=logging.getLogger(), shell=shell, timeout=0) server = loop.run_until_complete(coro) logging.info('Server started on 127.0.0.1:' + str(props.get('server.port'))) loop.call_later(1, game_manager.execute_timed_actions) loop.run_until_complete(server.wait_closed())
def execute(self, character: Character, param_string: str): if not param_string: character.do_action( Action('seeroom', character_id=character.id, room_id=character.room_id)) else: room_manager = RoomManager() room = room_manager.get_room(character.room_id) direction = string_utils.parse_word(param_string) portal = room.find_portal(direction) game_manager = GameManager() game_manager.add_action_absolute( 0, Action('attemptseethroughportal', character_id=character.id, portal_id=portal.id, data={'direction': direction}))
def execute(self, character: Character, param_string: str): if not param_string: character.do_action( Action('error', data={'msg': 'Please specify a direction!<$nl>'})) return room_manager = RoomManager() room = room_manager.get_room(character.room_id) portal = room.find_portal(param_string) game_manager = GameManager() game_manager.add_action_absolute( 0, Action('attemptenterportal', character_id=character.id, portal_id=portal.id, data={'direction': param_string}))
def __init__(self, connection, account, character_id): super().__init__(connection) self._account = account self._character_id = character_id self._game_manager = GameManager() self._character_manager = CharacterManager()
def execute(self, character: Character, param_string: str): game_manager = GameManager() game_manager.do_action(Action('leaverealm', character_id=character.id)) character.do_action(Action('leave', character_id=character.id))