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
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()
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]
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
def msgbox(text, width=50): Renderer.menu(text, [], width)