def main(self): single_player_menu = Menu([4030], [(c.title, c) for c in campaigns()] + [ ([4055], self.training_menu), ([4113], self.restore_game), ([4118], END_LOOP), ]) server_menu = Menu([4043], [ ([4044, 4045], (start_server_and_connect, "admin_only")), ([4046, 4047], (start_server_and_connect, "")), ([4121, 4122], (start_server_and_connect, "admin_only no_metaserver")), ([4048], None), ]) options_menu = Menu([4086], [ ([4087], self.modify_login), ([4319], self.modify_default_mods), [[4323], self.manage_packages], ([4118], END_LOOP), ]) main_menu = Menu([4029, 4030], [ [[4031, 4032], single_player_menu.loop], [[4033, 4034], self.multiplayer_menu], [[4035, 4036], server_menu], [[4315], self.replay_menu], [[4037, 4038], options_menu.loop], [[4041, 4042], END_LOOP], ]) if "connect_localhost" in sys.argv: connect_and_play() else: main_menu.loop()
def manage_packages(self): def add(): menu = Menu([4325]) for p in get_packages(): if not p.is_active: menu.append([p.name], (p.add, voice)) menu.append([4118], None) menu.run() def deactivate(): menu = Menu([4326]) for p in get_packages(): if p.is_active: menu.append([p.name], p.deactivate) menu.append([4118], None) menu.run() def update(): menu = Menu([4327]) for p in get_packages(): if p.is_active: menu.append([p.name], (p.update, voice)) menu.append([4118], None) menu.run() menu = Menu([4324], [ ([4325], add), ([4326], deactivate), ([4327], update), ([4076], END_LOOP), ]) menu.loop() reload_all()
def modify_default_mods(self): def available_mods(): result = [] for path in get_all_packages_paths(): mods_path = os.path.join(path, "mods") for mod in os.listdir(mods_path): if os.path.isdir(os.path.join(mods_path, mod)) \ and mod not in result and mod not in mods: result.append(mod) return result def select_next_mod(parent): def add_mod(mod): if mod not in mods: mods.append(mod) parent.title = mods menu = Menu([4320] + mods) for mod in available_mods(): menu.append([mod], (add_mod, mod)) menu.append([4118], None) menu.run() def save(): previous_mods = config.mods config.config_mods = ",".join(mods) config.mods = config.config_mods config.save() if config.mods != previous_mods: reload_all() return END_LOOP mods = [] menu = Menu([4321]) # the list is empty menu.append([4320], (select_next_mod, menu)) menu.append([4096], save) menu.append([4098], END_LOOP) menu.loop()