Esempio n. 1
0
    def __item_for_pick(_, engine, item_type=EntityType.ARMOUR):
        item = Mob(Item(tc.light_blue, item_type),
                   engine.player.x + 1,
                   engine.player.y,
                   load_type='TEST',
                   screen_width=engine.info.scr_wd,
                   screen_height=engine.info.scr_ht,
                   char=203,
                   color=tc.light_blue,
                   name="test item",
                   stats=EntityStats(*(0, 0, 0)),
                   game_map=engine.map,
                   strategy=PassiveStrategy(),
                   is_blocking=False)
        if item_type == EntityType.ARMOUR:
            item.item = Armour(5, item.color)
            item.char = 203
            item.color = tc.light_blue
        elif item_type == EntityType.INTOX_PTN:
            item.item = IntoxPotion(7, item.color)
            item.char = 25
            item.color = tc.light_violet
        item.stats.owner = item

        engine.mobs.append(item)

        return Command(
            lambda arg: arg,
            OperationLog([{
                'message':
                Message('Created item for pick.', tc.yellow)
            }]))
Esempio n. 2
0
 def opened_menu_test(_, engine):
     assert engine.curr_state.value == State.SHOWING_MENU
     print('OPENED MENU TEST - OK')
     return Command(
         lambda arg: arg,
         OperationLog([{
             'message': Message('OPENED MENU TEST - OK', tc.white)
         }]))
Esempio n. 3
0
 def closed_menu_test(_, engine):
     assert engine.curr_state.value == State.PLAYER_TURN
     print('CLOSED MENU TEST - OK')
     return Command(
         lambda arg: arg,
         OperationLog([{
             'message': Message('CLOSED MENU TEST - OK', tc.white)
         }]))
Esempio n. 4
0
 def item_pick_test(_, engine):
     assert len(engine.player.inventory.items) == 1
     print('PICK TEST - OK')
     return Command(
         lambda arg: arg,
         OperationLog([{
             'message': Message('PICK TEST - OK', tc.white)
         }]))
Esempio n. 5
0
 def intox_test(self, engine):
     assert engine.player.y != self.player_y
     print('INTOX POTION TEST - OK')
     return Command(
         lambda arg: arg,
         OperationLog([{
             'message':
             Message('INTOX POTION TEST - OK', tc.white)
         }]))
Esempio n. 6
0
 def item_activate_test(_, engine):
     assert len(engine.player.inventory.items) == 0
     assert engine.player.color == engine.player.stats.armour.color
     print('ACTIVATE TEST - OK')
     return Command(
         lambda arg: arg,
         OperationLog([{
             'message': Message('ACTIVATE TEST - OK', tc.white)
         }]))
Esempio n. 7
0
    def player_move_test(self, engine):
        dx, dy = 0, 0
        for move in self.moves:
            if move == MoveType.DOWN:
                dy += 1
            if move == MoveType.UP:
                dy -= 1
            if move == MoveType.LEFT:
                dx -= 1
            if move == MoveType.RIGHT:
                dx += 1

        assert engine.player.x == engine.map.px + dx
        assert engine.player.y == engine.map.py + dy
        print('MOVE TEST - OK')
        return Command(
            lambda arg: arg,
            OperationLog([{
                'message': Message('MOVE TEST - OK', tc.white)
            }]))
Esempio n. 8
0
 def create_command(engine, move_type):
     return Command(engine.player.mv_handler.move, move_type, engine.map,
                    engine.get_entities(), engine.curr_state)
Esempio n. 9
0
    def user_input(engine):
        for event in tc.event.get():
            # debug
            if engine.info.DEBUG:
                if event.type != "MOUSEMOTION":
                    print(event)
            # quit
            if event.type == "QUIT":
                engine.IS_GAME = False
            # нажатие клавивиши
            if event.type == "KEYDOWN":
                # передача управления в инвентарь
                if engine.curr_state.value != State.PLAYER_DEAD and \
                        engine.curr_state.value in [State.SHOWING_MENU, State.DROP_ITEM]:
                    return Command(KeysHandler.inventory_keys, engine,
                                   event.sym)

                if event.sym == tc.event.K_ESCAPE:
                    # выход из инвентаря
                    if engine.curr_state.value == (State.SHOWING_MENU,
                                                   State.DROP_ITEM):
                        engine.curr_state.value = engine.prev_state.value
                    else:
                        # выход из игры
                        engine.IS_GAME = False
                if engine.curr_state.value != State.PLAYER_DEAD:
                    if event.sym == tc.event.K_UP:
                        return KeysHandler.create_command(engine, MoveType.UP)
                    if event.sym == tc.event.K_DOWN:
                        return KeysHandler.create_command(
                            engine, MoveType.DOWN)
                    if event.sym == tc.event.K_LEFT:
                        return KeysHandler.create_command(
                            engine, MoveType.LEFT)
                    if event.sym == tc.event.K_RIGHT:
                        return KeysHandler.create_command(
                            engine, MoveType.RIGHT)
                    if event.sym == tc.event.K_g:
                        return Command(engine.player.get_item,
                                       engine.get_entities())
                    if event.sym == tc.event.K_i:
                        # выход из меню инвентаря
                        if engine.curr_state.value == State.SHOWING_MENU:
                            engine.curr_state.value = engine.prev_state.value
                            return Command(lambda arg: arg, OperationLog())
                        # вход в меню инвентаря
                        return Command(lambda arg: arg,
                                       OperationLog([{
                                           'show_menu': True
                                       }]))
                    if event.sym == tc.event.K_d:
                        # выход из drop меню инвентаря
                        if engine.curr_state.value == State.DROP_ITEM:
                            engine.curr_state.value = engine.prev_state.value
                            return Command(lambda arg: arg, OperationLog())
                        # вход в drop меню инвентаря
                        return Command(lambda arg: arg,
                                       OperationLog([{
                                           'drop_menu': True
                                       }]))

        return Command(lambda arg: arg, OperationLog())
Esempio n. 10
0
 def __move_player(engine, mv_type=None):
     return Command(engine.player.mv_handler.move, mv_type, engine.map,
                    engine.get_entities(), engine.curr_state)
Esempio n. 11
0
 def __fix_player_pos(self, engine):
     self.player_x = engine.player.x
     self.player_y = engine.player.y
     return Command(lambda arg: arg, OperationLog())
Esempio n. 12
0
 def stop_tests(_, engine):
     return Command(Engine.stop_engine, engine)
Esempio n. 13
0
 def __pick_item(_, engine):
     return Command(engine.player.get_item, engine.get_entities())
Esempio n. 14
0
 def __activate_item(_, engine):
     return Command(lambda arg: arg, OperationLog([{'inv_index': 0}]))
Esempio n. 15
0
 def __close_inventory(_, engine):
     engine.curr_state.value = State.PLAYER_TURN
     return Command(lambda arg: arg, OperationLog())
Esempio n. 16
0
 def __open_pick_inventory(_, engine):
     return Command(lambda arg: arg, OperationLog([{'show_menu': True}]))
Esempio n. 17
0
 def __open_drop_inventory(_, engine):
     return Command(lambda arg: arg, OperationLog([{'drop_menu': True}]))