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) }]))
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) }]))
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) }]))
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) }]))
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) }]))
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) }]))
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) }]))
def create_command(engine, move_type): return Command(engine.player.mv_handler.move, move_type, engine.map, engine.get_entities(), engine.curr_state)
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())
def __move_player(engine, mv_type=None): return Command(engine.player.mv_handler.move, mv_type, engine.map, engine.get_entities(), engine.curr_state)
def __fix_player_pos(self, engine): self.player_x = engine.player.x self.player_y = engine.player.y return Command(lambda arg: arg, OperationLog())
def stop_tests(_, engine): return Command(Engine.stop_engine, engine)
def __pick_item(_, engine): return Command(engine.player.get_item, engine.get_entities())
def __activate_item(_, engine): return Command(lambda arg: arg, OperationLog([{'inv_index': 0}]))
def __close_inventory(_, engine): engine.curr_state.value = State.PLAYER_TURN return Command(lambda arg: arg, OperationLog())
def __open_pick_inventory(_, engine): return Command(lambda arg: arg, OperationLog([{'show_menu': True}]))
def __open_drop_inventory(_, engine): return Command(lambda arg: arg, OperationLog([{'drop_menu': True}]))