示例#1
0
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()}))
示例#2
0
    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}))
示例#3
0
    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}))
示例#4
0
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())
示例#5
0
    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}))
示例#6
0
    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}))
示例#7
0
 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()
示例#8
0
 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))