Пример #1
0
class IntroInstance(Instance):
    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)

    def process_key_event(self, key):
        if key == ord(' ') or key == ord('\n'):
            from controller.create_hero_handler import CreateHeroHandler
            return CreateHeroHandler(), False
        from controller.splash_screen_handler import SplashScreenHandler
        return SplashScreenHandler(self), False

    def invoke(self):
        self.screen.clear()
        self.print()
        self.screen.refresh()

    def print(self):
        y = self.dy
        x = self.dx
        h = self.h
        w = self.w

        draw_window(self.pad, y, x, h, w, 'Пролог',
                    'Нажмите [Enter] или [Space] для продолжения')
        self._print_description()

    def _print_description(self):
        draw_pic(self.pad, self.dy + 2, self.dx + 2, PIC)
Пример #2
0
class CreateHeroInstance(Instance):
    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)

    def process_key_event(self, key):
        if key == ord('q') or key == curses.KEY_EXIT:
            return MainMenuHandler(), False

        choice = self.menu.process_key_event(key)
        if choice < 0:
            self._set_current_choice_info(self.menu.current)
            return CreateHeroHandler(self), False
        else:
            self._set_current_choice_info(choice)
            overlay = MoveTutorialOverlay()
            return DungeonHandler(self.clazz, overlay=overlay), False

    def invoke(self):
        self.screen.clear()
        self.menu_screen.clear()
        self.print()
        self.menu.print()
        self.screen.refresh()
        self.menu_screen.refresh()

    def _set_current_choice_info(self, current):
        choice = self.choices[current]
        clazz = CLASSES[choice]
        self.description = clazz['description']
        self.personal = clazz['personal']
        self.skills = clazz['skills']
        self.clazz = clazz['class']

    def print(self):
        draw_window(self.screen.pad, self.dy + 1, self.dx + 1,
                    len(self.choices) + 5, 35, 'Выберите класс')
        draw_window(self.screen.pad, self.dy + len(self.choices) + 7,
                    self.dx + 1, 13, 35, 'Характеристики')
        draw_window(self.screen.pad, self.dy + 1, self.dx + 38,
                    len(self.choices) + 5, 135, 'Описание класса')
        draw_window(self.screen.pad, self.dy + len(self.choices) + 7,
                    self.dx + 38, 13, 135, 'Предыстория')

        draw_text(self.screen.pad, self.dy + 3, self.dx + 40,
                  len(self.choices) + 5, 132, self.description)
        tlen = draw_text(self.screen.pad, self.dy + len(self.choices) + 9,
                         self.dx + 40,
                         len(self.choices) + 5, 132, self.personal)
        draw_text(self.screen.pad, self.dy + len(self.choices) + 9 + tlen,
                  self.dx + 40,
                  len(self.choices) + 5, 132, self.skills)
        self._print_stats()

    def _print_stats(self):
        draw_class_stats(self.screen.pad, self.dy + len(self.choices) + 9,
                         self.dx + 3, self.clazz)
        draw_text(self.screen.pad, self.dy + len(self.choices) + 16,
                  self.dx + 3, 1, 34, '(можно изменить позднее)')