示例#1
0
    def main_menu():
        img = libtcod.image_load('img/menu_background1.png')

        while not libtcod.console_is_window_closed():
            Renderer.render_main_screen(img)

            choice = Renderer.menu('', ['Play a new game', 'Continue current game', 'Quit'], 24, 0)

            if choice == 0:
                Renderer.render_main_screen(img)

                races = race_decoder.decode_all_races()
                race = Renderer.menu('Pick a race', races, 15, 0)
                if race is None:
                    continue

                Renderer.render_main_screen(img)

                jobs = job_decoder.decode_all_jobs()
                job = Renderer.menu('Pick a job', jobs, 15, 0)
                if job is None:
                    continue

                Game.new_game(races[race].lower(), jobs[job].lower())
                Game.run()
            elif choice == 1:
                try:
                    Game.run()
                except:
                    Game.msgbox('\n No saved game to load.\n', 24)
                    continue
            elif choice == 2:
                break
示例#2
0
    def check_level_up():
        level_up_exp = Game.get_exp_to_level()

        while Game.player.fighter.xp >= level_up_exp:
            Game.player.level += 1
            Game.player.fighter.xp -= level_up_exp
            Game.message('Your battle skills grow stronger! You reached level ' + str(Game.player.level) + '!', libtcod.yellow)

            choice = None
            while choice is None:
                choice = Renderer.menu('Level up! Choose a stat to raise:\n',
                    ['+20 HP, from (' + str(Game.player.fighter.max_hp) + ')',
                    '+10 MP, from (' + str(Game.player.job.max_mp) + ')',
                    '+1 attack, from (' + str(Game.player.fighter.power) + ')',
                    '+1 dexterity, from (' + str(Game.player.fighter.dexterity) + ')'], Renderer.LEVEL_SCREEN_WIDTH)

            if choice == 0:
                Game.player.fighter.base_max_hp += 20
                Game.player.fighter.hp += 20
            elif choice == 1:
                Game.player.job.base_max_mp += 10
                Game.player.job.mp += 10
            elif choice == 2:
                Game.player.fighter.base_power += 1
            elif choice == 3:
                Game.player.fighter.base_dexterity += 1
            Game.renderer.render_all()
示例#3
0
    def job_menu(header):
        options = []
        abilities = [ability for ability in Game.player.job.abilities if ability['level'] <= Game.player.level]
        for ability in abilities:
            text = ability['name'] + ' (' + str(ability['cost']) + ')'
            options.append(text)

        index = Renderer.menu(header, options, Renderer.INVENTORY_WIDTH)
        if index is None:
            return None
        return Game.player.job.abilities[index]
示例#4
0
    def inventory_menu(header):
        if len(Game.player.inventory) == 0:
            options = ['Inventory is empty.']
        else:
            options = []
            for item in Game.player.inventory:
                text = item.name
                if item.equipment and item.equipment.is_equipped:
                    text = text + ' (on ' + item.equipment.slot + ')'
                options.append(text)

        index = Renderer.menu(header, options, Renderer.INVENTORY_WIDTH)
        if index is None or len(Game.player.inventory) == 0:
            return None
        return Game.player.inventory[index].item
示例#5
0
 def msgbox(text, width=50):
     Renderer.menu(text, [], width)