예제 #1
0
    def __init__(self):
        self.world = esper.World()
        self.event_handler = EventHandler()
        self.screen = Screen(self.world)
        self.sidebar = Sidebar(self.world)
        self.console = Console(self.world)

        self.last_update = time.monotonic()
        self.accumulator = 0

        rand_x = Random()
        rand_y = Random()

        # Add player ship
        self.player_ship = factory.player_ship(self.world)
        self.world.component_for_entity(self.player_ship,
                                        Selectable).selected_main = True

        # Add some asteroids
        for i in range(20):
            asteroid = factory.asteroid(self.world)
            position = Position(int(50 * rand_x.guass(0, 0.3)),
                                int(50 * rand_y.guass(0, 0.3)))
            self.world.add_component(asteroid, position)

        # Add patroling enemy
        enemy = factory.enemy_fighter(self.world)
        enemy_behaviour: Behaviour = self.world.component_for_entity(
            enemy, Behaviour)
        enemy_behaviour.behaviours.append(
            BehaviourPatrol((10, 10), (10, -10), 2))

        # Add processors
        self.__initialize_processors()
예제 #2
0
 def __init__(self):
     self.screen = Screen(curses.LINES - 1, curses.COLS - 1)
     self.pad = self.screen.pad
     self.h = 30
     self.w = 124
     self.H = self.screen.H
     self.W = self.screen.W
     self.dy, self.dx = get_dy_dx(self.H, self.W, self.h, self.w)
예제 #3
0
 def __init__(self):
     super().__init__()
     if Globals.PAUSE_MENU in Globals.instances:
         self.instance = Globals.instances[Globals.PAUSE_MENU]
     else:
         self.instance = MenuInstance(
             Screen(curses.LINES - 1, curses.COLS - 1),
             ["Назад в игру", "Выход"])
         Globals.instances[Globals.PAUSE_MENU] = self.instance
예제 #4
0
 def __init__(self, clazz=None, instance=None, overlay=None):
     super().__init__(instance, overlay)
     if instance is None:
         if Globals.DUNGEON in Globals.instances:
             self.instance = Globals.instances[Globals.DUNGEON]
         else:
             from engine.instances.dungeon_instance import DungeonInstance
             self.instance = DungeonInstance(
                 Screen(curses.LINES - 11, curses.COLS - 1), clazz)
             Globals.instances[Globals.DUNGEON] = self.instance
예제 #5
0
 def __init__(self):
     super().__init__()
     if Globals.MAIN_MENU in Globals.instances:
         self.instance = Globals.instances[Globals.MAIN_MENU]
     else:
         self.instance = MenuInstance(
             Screen(curses.LINES - 1, curses.COLS - 1),
             ["Новая игра", "Загрузить", "Об игре", "Выход"],
             'Fix ignore in neigh4')
         Globals.instances[Globals.MAIN_MENU] = self.instance
예제 #6
0
 def __init__(self):
     super().__init__()
     self.h = 9
     self.w = 82
     self.H = curses.LINES - 1
     self.W = curses.COLS - 1
     self.dy, self.dx = get_dy_dx(self.H, self.W, self.h, self.w)
     self.screen = Screen(self.h, self.w, self.dy, self.dx)
     self.pad = self.screen.pad
     self.text = 'Базовое обучение завершено. Если Вы забыли нужную клавишу, то нажмите [H] для вызова помощи. Удачи!'
예제 #7
0
 def __init__(self, instance=None):
     super().__init__(instance)
     if self.instance is None:
         if Globals.INVENTORY in Globals.instances:
             self.instance = Globals.instances[Globals.INVENTORY]
         else:
             from engine.instances.inventory_instance import InventoryInstance
             dungeon = Globals.instances[Globals.DUNGEON]
             screen = Screen(curses.LINES - 1, curses.COLS - 1)
             self.instance = InventoryInstance(screen, dungeon.player)
             Globals.instances[Globals.INVENTORY] = self.instance
예제 #8
0
 def __init__(self):
     super().__init__()
     self.h = 9
     self.w = 82
     self.H = curses.LINES - 1
     self.W = curses.COLS - 1
     self.dy, self.dx = get_dy_dx(self.H, self.W, self.h, self.w)
     self.screen = Screen(self.h, self.w, self.dy, self.dx)
     self.pad = self.screen.pad
     self.text = 'Продолжайте атаковать противника, нажимая клавишу [Пробел], пока он не умрёт. После этого нажмите ' \
                 '[A] для выхода из режима боя.'
예제 #9
0
 def __init__(self, instance=None):
     super().__init__(instance)
     if self.instance is None:
         if Globals.MESSAGE_LOG in Globals.instances:
             self.instance = Globals.instances[Globals.MESSAGE_LOG]
         else:
             from engine.instances.message_log_instance import MessageLogInstance
             #map_name = Globals.instances[Globals.DUNGEON]
             screen = Screen(curses.LINES-1, curses.COLS-1)
             self.instance = MessageLogInstance(screen)
             Globals.instances[Globals.MESSAGE_LOG] = self.instance
예제 #10
0
 def __init__(self):
     self.screen = Screen()
     self.running = True
     self.tab = 0
     self.target = 0
     self.escaped = 0
     self.tabs = [
         Library(self.screen),
         Settings(self.screen),
         Console(self.screen)
     ]
     self.debug = False
예제 #11
0
 def __init__(self):
     super().__init__()
     self.h = 9
     self.w = 82
     self.H = curses.LINES - 1
     self.W = curses.COLS - 1
     self.dy, self.dx = get_dy_dx(self.H, self.W, self.h, self.w)
     self.screen = Screen(self.h, self.w, self.dy, self.dx)
     self.pad = self.screen.pad
     self.text = 'Для перемещения используйте стрелки. Одно перемещение обычно тратит один ход. Пока вы стоите, ' \
                 'время не идёт, так что вы всегда можете как следует обдумать свои действия. Попробуйте подвигаться' \
                 ' с помощью стрелок.'
예제 #12
0
 def __init__(self):
     super().__init__()
     self.h = 9
     self.w = 82
     self.H = curses.LINES - 1
     self.W = curses.COLS - 1
     self.dy, self.dx = get_dy_dx(self.H, self.W, self.h, self.w)
     self.screen = Screen(self.h, self.w, self.dy, self.dx)
     self.pad = self.screen.pad
     self.text = 'Отлично! А теперь попробуем осмотреться. Для того, чтобы переключиться в режим обзора, нажмите ' \
                 '[Enter]. В этом режиме с помощью стрелочек вы можете двигать курсор по всему уровню, получая при ' \
                 'этом подробную информацию о любом объекте под курсором. Для выхода из режима обзора нажмите [Enter].'
예제 #13
0
 def __init__(self):
     super().__init__()
     self.h = 11
     self.w = 82
     self.H = curses.LINES - 1
     self.W = curses.COLS - 1
     self.dy, self.dx = get_dy_dx(self.H, self.W, self.h, self.w)
     self.screen = Screen(self.h, self.w, self.dy, self.dx)
     self.pad = self.screen.pad
     self.text = 'Помните, что движение курсора в любом режиме не отнимает игровых ходов. ' \
                 'А теперь опробуйте боевой режим. Подойдите вплотную к Гуано (G) и нажмите [A]. Активируется режим ' \
                 'атаки. Он очень похож на режим обзора с той лишь разницей, что отображается подробная информация о ' \
                 'противнике и имеется возможность атаковать. Затем наведите курсор на цель и нажмите [Пробел] для атаки. '
예제 #14
0
    def __init__(self, inventory, cell):
        super().__init__()
        self.cell = cell
        self.loot = cell.loot
        self.inventory = inventory
        self.current = 0

        self.h = len(self.loot.items) + 5
        self.w = 82
        self.H = curses.LINES - 1
        self.W = curses.COLS - 1
        self.dy, self.dx = get_dy_dx(self.H, self.W, self.h, self.w)
        self.screen = Screen(self.h, self.w, self.dy, self.dx)
        self.pad = self.screen.pad
예제 #15
0
 def __init__(self, screen):
     self.choices = [
         'Солдат Содружества', 'Инженер Содружества', 'Псионик класса А',
         'Псионик класса Б', 'Солест'
     ]
     self.dx = max(0, screen.W // 2 - 170 // 2)
     self.dy = max(0, screen.H // 2 - len(self.choices) - 7)
     self.screen = screen
     self.pad = screen.get_pad()
     self.menu_screen = Screen(H=len(self.choices) + 2,
                               W=23,
                               fromy=self.dy + 2,
                               fromx=self.dx + 2)
     self.menu = MenuInstance(self.menu_screen, self.choices)
     self._set_current_choice_info(0)
예제 #16
0
    def __init__(self, screen, clazz):
        self.screen = screen
        self.pad = screen.get_pad()
        self.mode = Action.MODE_MOVE
        self.gui = self._init_gui()
        self.player = Hero(clazz, None, None)
        self.__load_map()

        from engine.instances.inventory_instance import InventoryInstance
        Globals.instances[Globals.INVENTORY] = InventoryInstance(
            Screen(curses.LINES - 1, curses.COLS - 1), self.player)
        self.selection = Selection(screen, self.player)
        self.h = len(self.cells)
        self.w = len(self.cells[0])

        self.tutorial_stage = TUT_MOVE
        self.tutorial_move_count = 0
        self.overlay = None
        self.tut_updated = False
예제 #17
0
 def __init__(self, instance=None):
     super().__init__(instance)
     if self.instance is None:
         from engine.instances.create_hero_instance import CreateHeroInstance
         screen = Screen(curses.LINES-1, curses.COLS-1)
         self.instance = CreateHeroInstance(screen)
예제 #18
0
 def _init_gui(self):
     vdiff = curses.LINES - self.screen.H
     guiscreen = Screen(vdiff, curses.COLS - 1, curses.LINES - vdiff - 1, 0)
     return GUI(guiscreen)