예제 #1
0
    def _format_header(self, player_index, page, slots):
        """Prepares the header for the menu."""

        # Create the page info string
        info = ''
        if self.display_page_info:
            info = ' [{0}/{1}]'.format(page.index + 1, self.page_count)

        if self.title:
            buffer = '{0}{1}\n'.format(
                _translate_text(self.title, player_index), info
            )
        elif info:
            buffer = '{0}\n'.format(info)
        else:
            buffer = ''

        # Set description if present
        if self.description is not None:
            buffer += _translate_text(self.description, player_index) + '\n'

        # Set the top seperator if present
        if self.top_seperator is not None:
            buffer += self.top_seperator + '\n'

        return buffer
예제 #2
0
def _current_hero_build_callback(menu, player_index):
    """Current Hero menu's build_callback function."""

    # Get player and hero
    player = get_player(player_index, key='index')
    hero = player.hero

    # Set menu's base attributes
    menu.title = hero.name
    menu.description = _TR['Description'].get_string(
        level=hero.level,
        skill_points=hero.skill_points
    )

    # Clear the menu
    menu.clear()

    # Loop through hero's skills
    for skill in hero.skills:

        # Set the default arguments for the PagedOption
        info = '{0}/{1}'.format(skill.level, skill.max_level)
        selectable = True

        # If skill is already maxed out
        if skill.level >= skill.max_level:
            info = ' ({0})'.format(_translate_text(
                _TR['Maxed'],
                player_index
            ))
            selectable = False

        # If the hero hasn't reached skill's required level
        elif skill.required_level > hero.level:
            info += ' ({0})'.format(_translate_text(
                _TR['Required'].get_string(
                    required=skill.required_level
                ),
                player_index
            ))
            selectable = False

        # If skill costs more than one, show the cost
        elif skill.cost > 1:
            info += ' ({0})'.format(_translate_text(
                _TR['Cost'].get_string(cost=skill.cost),
                player_index
            ))

        # And if hero doesn't have enough skill points, disable skill
        if skill.cost > hero.skill_points:
            selectable = False

        # Add the PagedOption to the menu
        menu.append(PagedOption(
            '{0} {1}'.format(skill.name, info),
            skill,
            selectable=selectable,
            highlight=selectable
        ))
예제 #3
0
    def _format_header(self, player_index, page, slots):
        """Prepare the header for the menu.

        @param <player_index>:
        A player index.

        @param <page>:
        A _PlayerPage instance.

        @param <slots>:
        A set to which slots can be added.
        """
        # Create the page info string
        info = "[{0}/{1}]\n".format(page.index + 1, self.page_count)

        buffer = "{0} {1}".format(_translate_text(self.title, player_index), info) if self.title else info

        # Set description if present
        if self.description is not None:
            buffer += _translate_text(self.description, player_index) + "\n"

        # Set the top seperator if present
        if self.top_seperator is not None:
            buffer += self.top_seperator + "\n"

        return buffer
예제 #4
0
    def _format_header(self, player_index, page, slots):
        """Prepares the header for the menu."""

        # Create the page info string
        info = ''
        if self.display_page_info:
            info = ' [{0}/{1}]'.format(page.index + 1, self.page_count)

        if self.title:
            buffer = '{0}{1}\n'.format(
                _translate_text(self.title, player_index), info
            )
        elif info:
            buffer = '{0}\n'.format(info)
        else:
            buffer = ''

        # Set description if present
        if self.description is not None:
            buffer += _translate_text(self.description, player_index) + '\n'

        # Set the top seperator if present
        if self.top_seperator is not None:
            buffer += self.top_seperator + '\n'

        return buffer
예제 #5
0
파일: base.py 프로젝트: oblivion1234/WCS
    def _format_header(self, player_index, page, slots):
        buffer = '{0}\n'.format(
            _translate_text(self.title, player_index) if self.title else '')

        if self.description is not None:
            buffer += _translate_text(self.description, player_index) + '\n'

        if self.top_separator is not None:
            buffer += self.top_separator + '\n'

        return buffer
예제 #6
0
 def _render(self, player_index, choice_index):
     """See :meth:`menus.base._MenuData._render`."""
     return '{0}{1}. {2}\n'.format(
         self._get_highlight_prefix(),
         choice_index,
         _translate_text(self.text, player_index)
     )
예제 #7
0
    def _render(self, player_index, choice_index):
        """See :meth:`menus.base._MenuData._render`."""
        if self.enumerated:
            return super()._render(player_index, choice_index)

        return '{}{}\n'.format(self._get_highlight_prefix(),
            _translate_text(self.text, player_index))
예제 #8
0
 def _render(self, player_index, choice_index):
     """See :meth:`menus.base._MenuData._render`."""
     return '{0}{1}. {2}\n'.format(
         self._get_highlight_prefix(),
         choice_index,
         _translate_text(self.text, player_index)
     )
예제 #9
0
    def _render(self, player_index, choice_index):
        """See :meth:`menus.base._MenuData._render`."""
        if self.enumerated:
            return super()._render(player_index, choice_index)

        return '{}{}\n'.format(self._get_highlight_prefix(),
            _translate_text(self.text, player_index))
예제 #10
0
 def _render(self, player_index, choice_index=None):
     """Return the rendered string for the option."""
     return '{prefix}{choice}. {text}\n'.format(
         prefix=self._get_highlight_prefix(),
         choice=self.choice_index,
         text=_translate_text(self.text, player_index),
     )
예제 #11
0
        def _format_footer(self, player_index, page, data):
            button = data.find_key('6', True)
            button.set_string(
                'msg',
                _translate_text(menu_strings['back'], player_index)
                if page.index > 0 or self.parent_menu is not None else '')
            button.set_string('command', '{0} 6'.format(ESC_SELECTION_CMD))

            button = data.find_key('7', True)
            button.set_string(
                'msg',
                _translate_text(menu_strings['next'], player_index)
                if page.index < self.last_page_index else '')
            button.set_string('command', '{0} 7'.format(ESC_SELECTION_CMD))

            button = data.find_key('0', True)
            button.set_string(
                'msg', _translate_text(menu_strings['close'], player_index))
            button.set_string('command', '{0} 0'.format(ESC_SELECTION_CMD))
예제 #12
0
        def _format_header(self, player_index, page, data):
            info = '[{0}/{1}]'.format(page.index + 1, self.page_count)

            if self.title is not None:
                data.set_string(
                    'title',
                    '{0} {1}'.format(_translate_text(self.title, player_index),
                                     info))
            else:
                data.set_string('title', info)

            data.set_color('color', self.title_color)
예제 #13
0
파일: esc.py 프로젝트: Doldol/Source.Python
    def _render(self, player_index, choice_index=None):
        """Render the data.

        @param <player_index>:
        A player index.

        @param <choice_index>:
        The number should be required to select this item. It depends on the
        menu type if this parameter gets passed.
        """
        return '{0}. {1}'.format(
            choice_index, _translate_text(self.text, player_index))
예제 #14
0
    def _render(self, player_index, choice_index):
        """Render the data.

        @param <player_index>:
        A player index.

        @param <choice_index>:
        The number should be required to select this item. It depends on the
        menu type if this parameter gets passed.
        """
        return "{0}{1}. {2}\n".format(
            self._get_highlight_prefix(), choice_index, _translate_text(self.text, player_index)
        )
예제 #15
0
def _buy_heroes_build_callback(menu, player_index):
    """Buy Heroes menu's build_callback function."""

    player = Player(player_index)
    menu.clear()
    for hero_cls in menu.entities:
        option = PagedOption(
            '{0} ({1})'.format(
                hero_cls.name,
                _translate_text(_TR['Cost'].get_string(cost=hero_cls.cost),
                                player_index)), hero_cls)
        if hero_cls.cost > player.gold:
            option.selectable = option.highlight = False
        menu.append(option)
예제 #16
0
    def _format_header(self, player_index, page, slots):
        """Prepare the header for the menu.

        :param int player_index: A player index.
        :param _PlayerPage page: The player's current page.
        :param slots: A set to which slots can be added.
        :type slots: :class:`set`
        """
        # Create the page info string
        info = '[{0}/{1}]\n'.format(page.index + 1, self.page_count)

        buffer = '{0} {1}'.format(_translate_text(
            self.title, player_index), info) if self.title else info

        # Set description if present
        if self.description is not None:
            buffer += _translate_text(self.description, player_index) + '\n'

        # Set the top separator if present
        if self.top_separator is not None:
            buffer += self.top_separator + '\n'

        return buffer
예제 #17
0
    def _format_header(self, player_index, page, slots):
        """Prepare the header for the menu.

        :param int player_index: A player index.
        :param _PlayerPage page: The player's current page.
        :param slots: A set to which slots can be added.
        :type slots: :class:`set`
        """
        # Create the page info string
        info = '[{0}/{1}]\n'.format(page.index + 1, self.page_count)

        buffer = '{0} {1}'.format(_translate_text(
            self.title, player_index), info) if self.title else info

        # Set description if present
        if self.description is not None:
            buffer += _translate_text(self.description, player_index) + '\n'

        # Set the top separator if present
        if self.top_separator is not None:
            buffer += self.top_separator + '\n'

        return buffer
예제 #18
0
        def _get_menu_data(self, player_index):
            data = KeyValues('menu')
            data.set_string(
                'msg', _translate_text(self.description or '', player_index))

            if self.title is not None:
                data.set_string('title',
                                _translate_text(self.title, player_index))

            data.set_color('color', self.title_color)

            page = self._player_pages[player_index]
            page.options = {}

            for raw_data in self:
                if isinstance(raw_data, SimpleOption):
                    page.options[raw_data.choice_index] = raw_data
                    button = data.find_key(str(raw_data.choice_index), True)
                    button.set_string('msg', raw_data._render(player_index))
                    button.set_string(
                        'command', '{0} {1}'.format(ESC_SELECTION_CMD,
                                                    raw_data.choice_index))

            return data
예제 #19
0
파일: esc.py 프로젝트: Doldol/Source.Python
    def _get_menu_data(self, player_index):
        """Return all relevant menu data as a KeyValues instance.

        @param <player_index>:
        A player index.
        """
        data = KeyValues('menu')
        data.set_string(
            'msg', _translate_text(self.description or '', player_index))

        if self.title is not None:
            data.set_string(
                'title', _translate_text(self.title, player_index))

        data.set_color('color', self.title_color)

        page = self._player_pages[player_index]
        page.options = {}

        # Loop through all options of the current page
        for raw_data in self:
            if isinstance(raw_data, SimpleESCOption):
                page.options[raw_data.choice_index] = raw_data
                button = data.find_key(str(raw_data.choice_index), True)
                button.set_string('msg', raw_data._render(player_index))
                button.set_string('command', '{0} {1}'.format(
                    ESC_SELECTION_CMD, raw_data.choice_index))

        close = SimpleESCOption(0, 'Close')
        button = data.find_key(str(close.choice_index), True)
        button.set_string('msg', close._render(player_index))
        button.set_string('command', '{0} {1}'.format(
            ESC_SELECTION_CMD, close.choice_index))

        # Return the menu data
        return data
예제 #20
0
    def _get_menu_data(self, player_index):
        """Return all menu data as a :class:`keyvalues.KeyValues` object.

        :param int player_index: See
            :meth:`menus.base._BaseMenu._get_menu_data`.
        """
        data = KeyValues('menu')
        data.set_string(
            'msg', _translate_text(self.description or '', player_index))

        if self.title is not None:
            data.set_string(
                'title', _translate_text(self.title, player_index))

        data.set_color('color', self.title_color)

        page = self._player_pages[player_index]
        page.options = {}

        # Loop through all options of the current page
        for raw_data in self:
            if isinstance(raw_data, SimpleESCOption):
                page.options[raw_data.choice_index] = raw_data
                button = data.find_key(str(raw_data.choice_index), True)
                button.set_string('msg', raw_data._render(player_index))
                button.set_string('command', '{0} {1}'.format(
                    ESC_SELECTION_CMD, raw_data.choice_index))

        close = SimpleESCOption(0, 'Close')
        button = data.find_key(str(close.choice_index), True)
        button.set_string('msg', close._render(player_index))
        button.set_string('command', '{0} {1}'.format(
            ESC_SELECTION_CMD, close.choice_index))

        # Return the menu data
        return data
예제 #21
0
def _buy_items_build_callback(menu, player_index):
    """Buy Items menu's build_callback function."""

    player = Player(player_index)
    menu.clear()
    for item in menu.entities:
        option = PagedOption(
            '{name} ({cost})'.format(
                name=item.name,
                cost=_translate_text(_TR['Cost'].get_string(
                    cost=item.cost), player_index)
                if not item in player.hero.restricted_items else 'RESTRICTED'),
            item)
        if item.cost > player.gold or item in player.hero.restricted_items:
            option.selectable = option.highlight = False
        menu.append(option)
예제 #22
0
    def _format_header(self, player_index, page, data):
        """Prepare the header for the menu.

        :param int player_index: A player index.
        :param _PlayerPage page: The player's current page.
        :param KeyValues data: The current menu data.
        """
        # Create the page info string
        info = '[{0}/{1}]'.format(page.index + 1, self.page_count)

        if self.title is not None:
            data.set_string('title', '{0} {1}'.format(
                _translate_text(self.title, player_index), info))
        else:
            data.set_string('title', info)

        data.set_color('color', self.title_color)
예제 #23
0
    def _get_menu_data(self, player_index):
        """See :meth:`menus.base._BaseMenu._get_menu_data`."""
        data = KeyValues('menu')
        data.set_string(
            'msg', _translate_text(self.description or '', player_index))

        # Get the player's current page
        page = self._player_pages[player_index]
        page.options = {}

        # Format the menu
        self._format_header(player_index, page, data)
        self._format_body(player_index, page, data)
        self._format_footer(player_index, page, data)

        # Return the menu data
        return data
예제 #24
0
def _buy_heroes_build_callback(menu, player_index):
    """Buy Heroes menu's build_callback function."""

    player = Player(player_index)
    menu.clear()
    for hero_cls in menu.entities:
        option = PagedOption(
            '{0} ({1})'.format(
                hero_cls.name,
                _translate_text(
                    _TR['Cost'].get_string(cost=hero_cls.cost),
                    player_index
                )
            ),
            hero_cls
        )
        if hero_cls.cost > player.gold:
            option.selectable = option.highlight = False
        menu.append(option)
예제 #25
0
def _buy_items_build_callback(menu, player_index):
    """Buy Items menu's build_callback function."""

    player = Player(player_index)
    menu.clear()
    for item in menu.entities:
        option = PagedOption(
            '{name} ({cost})'.format(
                name=item.name,
                cost=_translate_text(
                    _TR['Cost'].get_string(cost=item.cost),
                    player_index
                ) if not item in player.hero.restricted_items else 'RESTRICTED'
            ),
            item
        )
        if item.cost > player.gold or item in player.hero.restricted_items:
            option.selectable = option.highlight = False
        menu.append(option)
예제 #26
0
def _buy_items_build_callback(menu, player_index):
    """Buy Items menu's build_callback function."""

    player = get_player(player_index, key='index')
    menu.clear()
    for item in menu.entities:
        option = PagedOption(
            '{name} (${cost})\n{description}'.format(
                name=item.name,
                cost=_translate_text(
                    _TR['Cost'].get_string(cost=item.cost),
                    player_index
                ),
                description=item.description
            ),
            item
        )
        if item.cost > player.gold:
            option.selectable = option.highlight = False
        menu.append(option)
예제 #27
0
파일: esc.py 프로젝트: Doldol/Source.Python
    def _get_menu_data(self, player_index):
        """Return all relevant menu data as a KeyValues instance.

        @param <player_index>:
        A player index.
        """
        data = KeyValues('menu')
        data.set_string(
            'msg', _translate_text(self.description or '', player_index))

        # Get the player's current page
        page = self._player_pages[player_index]
        page.options = {}

        # Format the menu
        self._format_header(player_index, page, data)
        self._format_body(player_index, page, data)
        self._format_footer(player_index, page, data)

        # Return the menu data
        return data
예제 #28
0
def _buy_items_build_callback(menu, player_index):
    """Buy Items menu's build_callback function."""

    player = Player(player_index)
    menu.clear()
    for item in menu.entities:
        option = PagedOption(
            '{name} (${cost})\n{description}'.format(
                name=item.name,
                cost=_translate_text(
                    _TR['Cost'].get_string(cost=item.cost),
                    player_index
                ),
                description='\n'.join(
                    split_string(item.description, _description_width)
                )
            ),
            item
        )
        if item.cost > player.gold:
            option.selectable = option.highlight = False
        menu.append(option)
예제 #29
0
파일: esc.py 프로젝트: Doldol/Source.Python
    def _format_header(self, player_index, page, data):
        """Prepare the header for the menu.

        @param <player_index>:
        A player index.

        @param <page>:
        A _PlayerPage instance.

        @param <data>:
        The current menu data.
        """
        # Create the page info string
        info = '[{0}/{1}]'.format(page.index + 1, self.page_count)

        if self.title is not None:
            data.set_string('title', '{0} {1}'.format(
                _translate_text(self.title, player_index), info))
        else:
            data.set_string('title', info)

        data.set_color('color', self.title_color)
예제 #30
0
def _current_hero_build_callback(menu, player_index):
    """Current Hero menu's build_callback function."""

    # Get player and hero
    player = Player(player_index)
    hero = player.hero

    # Set menu's base attributes
    menu.title = hero.name
    menu.description = _TR['Description'].get_string(
        level=hero.level,
        skill_points=hero.skill_points
    )

    # Clear the menu
    menu.clear()

    # Loop through hero's skills
    for skill in hero.skills:

        # Set the default arguments for the PagedOption
        info = '{0}{1}'.format(
            skill.level,
            '/' + str(skill.max_level) if skill.max_level is not None else ''
        )
        selectable = True

        # If skill is already maxed out
        if skill.max_level is not None and skill.level >= skill.max_level:
            info = ' ({0})'.format(_translate_text(
                _TR['Maxed'],
                player_index
            ))
            selectable = False

        # If the hero hasn't reached skill's required level
        elif skill.required_level > hero.level:
            info += ' ({0})'.format(_translate_text(
                _TR['Required'].get_string(
                    req=skill.required_level
                ),
                player_index
            ))
            selectable = False

        # If skill costs more than one, show the cost
        elif skill.cost > 1:
            info += ' ({0})'.format(_translate_text(
                _TR['Cost'].get_string(cost=skill.cost),
                player_index
            ))

        # And if hero doesn't have enough skill points, disable skill
        if skill.cost > hero.skill_points:
            selectable = False

        # Add the PagedOption to the menu
        menu.append(PagedOption(
            '{0} {1}'.format(skill.name, info),
            skill,
            selectable=selectable,
            highlight=selectable
        ))
예제 #31
0
    def _render(self, player_index, choice_index=None):
        """See :meth:`menus.base._MenuData._render`."""
        if self.enumerated:
            return super()._render(player_index, choice_index)

        return _translate_text(self.text, player_index)
예제 #32
0
 def _render(self, player_index, choice_index):
     return '{0}{1}'.format(
         '{}. '.format(choice_index) if self.show_index else '',
         _translate_text(self.text, player_index))
예제 #33
0
 def _render(self, player_index, choice_index=None):
     """See :meth:`menus.base._MenuData._render`."""
     return '{0}. {1}'.format(
         choice_index, _translate_text(self.text, player_index))
예제 #34
0
파일: base.py 프로젝트: oblivion1234/WCS
 def _render(self, player_index, choice_index):
     return '{0}{1}{2}\n'.format(
         self._get_highlight_prefix(),
         '{}. '.format(choice_index) if self.show_index else '',
         _translate_text(self.text, player_index))
예제 #35
0
        def _format_header(self, player_index, page, data):
            if self.title is not None:
                data.set_string('title',
                                _translate_text(self.title, player_index))

            data.set_color('color', self.title_color)
예제 #36
0
 def _render(self, player_index, choice_index=None):
     """Return the rendered string for the option."""
     return '* {text}\n'.format(
         text=_translate_text(self.text, player_index),
     )
예제 #37
0
 def _render(self, player_index, choice_index=None):
     return _translate_text(self.text, player_index)