def replay_menu(self): menu = Menu([4315]) for n in sorted(os.listdir(REPLAYS_PATH), reverse=True): if n.endswith(".txt"): menu.append([time.strftime("%c", time.localtime(int(n[:-4])))], (self.replay, n)) menu.append([4041], 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()
def choose_server_ip_in_a_list(self): servers_list = None try: f = urllib.urlopen(SERVERS_LIST_URL) if f.read(len(SERVERS_LIST_HEADER)) == SERVERS_LIST_HEADER: servers_list = f.readlines() except: pass if servers_list is None: voice.alert([1029]) # hostile sound warning("couldn't get the servers list from the metaserver" " => using the default servers list") servers_list = DEFAULT_SERVERS nb = 0 menu = Menu() for s in servers_list: try: ip, version, login, port = s.split()[1:] # ignore the first parameter (time) except: warning("line not recognized from the metaserver: %s", s) continue nb += 1 if version == VERSION: menu.append([login, 4073, login], (connect_and_play, ip, port)) menu.title = nb2msg(len(menu.choices)) + [4078] + nb2msg(nb) + [4079] menu.append([4075, 4076], 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 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 replay_menu(): menu = Menu(mp.OBSERVE_RECORDED_GAME) for n in sorted(os.listdir(REPLAYS_PATH), reverse=True): if n.endswith(".txt"): menu.append([time.strftime("%c", time.localtime(int(n[:-4])))], (replay, n)) menu.append(mp.QUIT2, None) menu.run()
def _get_creation_submenu(self, is_public=""): if is_public == "public": title = [4340] else: title = [4055] menu = Menu(title, remember="mapmenu") for n, m in enumerate(self.maps): menu.append(m, (self._create_game, (n, title + m, is_public))) menu.append([4048], None) return menu
def _get_creation_submenu(self, is_public=""): if is_public == "public": title = mp.START_A_PUBLIC_GAME_ON else: title = mp.START_A_GAME_ON menu = Menu(title, remember="mapmenu") for n, m in enumerate(self.maps): menu.append(m, (self._get_speed_submenu, (n, title + m, is_public))) menu.append(mp.CANCEL, None) return menu
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 _build_players_menu(self): menu = Menu() if len(self._players) < self._map.nb_players_max: menu.append(mp.INVITE + mp.QUIET_COMPUTER, (self._add_ai, "easy")) menu.append(mp.INVITE + mp.AGGRESSIVE_COMPUTER, (self._add_ai, "aggressive")) menu.append(mp.INVITE + mp.AGGRESSIVE_COMPUTER + nb2msg(2), (self._add_ai, "ai2")) if len(self._players) >= self._map.nb_players_min: menu.append(mp.START, self._run_game) if len(self._map.factions) > 1: self._add_faction_menus(menu) menu.append(mp.CANCEL, CLOSE_MENU, mp.CANCEL_THIS_GAME) return menu
def make_menu(self): menu = Menu() for g in self.invitations: menu.append([4053] + g[1:], (self.server.write_line, "register %s" % g[0])) menu.append([4055], self._get_creation_submenu()) menu.append([4340], self._get_creation_submenu("public")) menu.append([4041], (self.server.write_line, "quit")) return menu
def make_menu(self): menu = Menu() for g in self.invitations: menu.append(mp.ACCEPT_INVITATION_FROM + g[1:], (self.server.write_line, "register %s" % g[0])) menu.append(mp.START_A_GAME_ON, self._get_creation_submenu()) menu.append(mp.START_A_PUBLIC_GAME_ON, self._get_creation_submenu("public")) menu.append(mp.QUIT2, (self.server.write_line, "quit")) return menu
def build_training_menu_after_map(self): menu = Menu() if len(self.players) < self.map.nb_players_max: menu.append([4058, 4258], (self.training_menu_invite, "easy")) menu.append([4058, 4257], (self.training_menu_invite, "aggressive")) if len(self.players) >= self.map.nb_players_min: menu.append([4059], self.start_training_game) for pn, (p, pr) in enumerate(zip(self.players, self.factions)): self._add_faction_menu(menu, pn, p, pr) menu.append([4048, 4060], END_LOOP) return menu
def choose_server_ip_in_a_list(): servers = servers_list(voice) total = 0 compatible = 0 menu = Menu() for s in servers: try: _, ip, version, login, port = s.split() except ValueError: warning("line not recognized from the metaserver: %s", s) else: total += 1 if version == VERSION: compatible += 1 menu.append([login], (connect_and_play, ip, port), mp.SERVER_HOSTED_BY + [login]) menu.title = nb2msg(compatible) + mp.SERVERS_ON + nb2msg(total) + mp.ARE_COMPATIBLE menu.append(mp.CANCEL2, None, mp.GO_BACK_TO_PREVIOUS_MENU) menu.run()
def choose_server_ip_in_a_list(): servers = servers_list(voice) total = 0 compatible = 0 menu = Menu() for s in servers: try: _, ip, version, login, port = s.split() except ValueError: warning("line not recognized from the metaserver: %s", s) else: total += 1 if version == VERSION: compatible += 1 menu.append([login], (connect_and_play, ip, port), mp.SERVER_HOSTED_BY + [login]) menu.title = nb2msg(compatible) + mp.SERVERS_ON + nb2msg( total) + mp.ARE_COMPATIBLE menu.append(mp.CANCEL2, None, mp.GO_BACK_TO_PREVIOUS_MENU) menu.run()
def make_menu(self): menu = Menu() for g in self.invitations: menu.append([4053] + g[1:], (self.server.write_line, "register %s" % g[0])) menu.append([4055], self._get_creation_submenu()) menu.append([4041], (self.server.write_line, "quit")) return menu
def mods_menu(): mods_menu = Menu(mp.MODS) mods_menu.append([0], (set_and_launch_mod, "")) for mod in res.available_mods(): mods_menu.append([mod], (set_and_launch_mod, mod)) mods_menu.append(mp.BACK, CLOSE_MENU) mods_menu.run() return CLOSE_MENU
def mods_menu(): mods_menu = Menu(["Mods"]) mods_menu.append([0], (set_and_launch_mod, "")) for mod in res.available_mods(): mods_menu.append([mod], (set_and_launch_mod, mod)) mods_menu.append([4118], END_LOOP) mods_menu.run() return END_LOOP
def soundpacks_menu(): soundpacks_menu = Menu(["Soundpacks"]) soundpacks_menu.append([0], (set_and_launch_soundpack, "")) for soundpack in res.available_soundpacks(): soundpacks_menu.append([soundpack], (set_and_launch_soundpack, soundpack)) soundpacks_menu.append([4118], END_LOOP) soundpacks_menu.run() return END_LOOP
def mods_menu(): mods_menu = Menu([4341]) mods_menu.append([0], (set_and_launch_mod, "")) for mod in res.available_mods(): mods_menu.append([mod], (set_and_launch_mod, mod)) mods_menu.append([4118], END_LOOP) mods_menu.run() return END_LOOP
def soundpacks_menu(): soundpacks_menu = Menu([4342]) soundpacks_menu.append([0], (set_and_launch_soundpack, "")) for soundpack in res.available_soundpacks(): soundpacks_menu.append([soundpack], (set_and_launch_soundpack, soundpack)) soundpacks_menu.append([4118], END_LOOP) soundpacks_menu.run() return END_LOOP
def soundpacks_menu(): soundpacks_menu = Menu(mp.SOUNDPACKS) soundpacks_menu.append(mp.NOTHING, (set_and_launch_soundpack, "")) for soundpack in res.available_soundpacks(): soundpacks_menu.append([soundpack], (set_and_launch_soundpack, soundpack)) soundpacks_menu.append(mp.BACK, CLOSE_MENU) soundpacks_menu.run() return CLOSE_MENU
def run(self): if self.mods is not None: res.set_mods(self.mods) try: self.load_resources() menu = Menu(self.title, []) if len(self._available_chapters()) > 1: ch = self._available_chapters()[-1] menu.append(mp.CONTINUE + ch.title, ch) for ch in self._available_chapters(): prefix = nb2msg(ch.id) if ch.id > 0 else [] menu.append(prefix + ch.title, ch) menu.append(mp.BACK, None) menu.run() finally: self.unload_resources()
def run(self): if self.mods is not None: res.set_mods(self.mods) try: self.load_resources() menu = Menu(self.title, []) if len(self._available_chapters()) > 1: ch = self._available_chapters()[-1] menu.append([4011] + ch.title, ch) # "continue" for ch in self._available_chapters(): prefix = nb2msg(ch.id) if ch.id > 0 else [] menu.append(prefix + ch.title, ch) # menu.append([4113], "restore") menu.append([4118], None) # "cancel" menu.run() finally: self.unload_resources()
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()
def _victory(self): menu = Menu([], []) menu.append([4011], self._get_next()) # continue menu.append([4009], None) # cancel menu.run()
def _defeat(self): menu = Menu([], []) menu.append([4266], self) # restart menu.append([4009], None) # cancel menu.run()
def training_menu(self): menu = Menu([4055], remember="mapmenu") for m in res.worlds_multi(): menu.append(m.title, (self.training_menu_after_map, m)) menu.append([4041], None) menu.run()
def _get_creation_submenu(self): menu = Menu([4055], remember="mapmenu") for n, m in enumerate(self.maps): menu.append(m, (self._create_game, (n, m))) menu.append([4048], None) return menu
def make_menu(self): menu = Menu(self.map.title) self._add_faction_menu(menu, *self._get_player()) menu.append([4041, 4061], (self.server.write_line, "unregister")) return menu
def make_menu(self): menu = Menu(self.map.title) if len(self.registered_players) < self.map.nb_players_max: for p in self.available_players: menu.append(mp.INVITE + [p], (self.server.write_line, "invite %s" % p)) menu.append(mp.INVITE + mp.QUIET_COMPUTER, (self.server.write_line, "invite_easy")) menu.append(mp.INVITE + mp.AGGRESSIVE_COMPUTER, (self.server.write_line, "invite_aggressive")) menu.append(mp.INVITE + mp.AGGRESSIVE_COMPUTER + nb2msg(2), (self.server.write_line, "invite_ai2")) if len(self.registered_players) >= self.map.nb_players_min: menu.append(mp.START, (self.server.write_line, "start")) for pn, (login, pa, pr) in enumerate(self.registered_players): pa = int(pa) for a in range(1, len(self.registered_players) + 1): if a != pa: menu.append( mp.MOVE + name(login) + mp.TO_ALLIANCE + nb2msg(a), (self.server.write_line, "move_to_alliance %s %s" % (pn, a))) if login == self.server.login or login.startswith("ai_"): self._add_faction_menu(menu, pn, login, pr) menu.append(mp.CANCEL + mp.CANCEL_THIS_GAME, (self.server.write_line, "cancel_game")) return menu
def make_menu(self): menu = Menu(self.map.title) self._add_faction_menu(menu, *self._get_player()) menu.append(mp.QUIT2 + mp.LEAVE_THIS_GAME, (self.server.write_line, "unregister")) return menu
def _victory(self): menu = Menu([], []) menu.append(mp.CONTINUE, self._get_next()) menu.append(mp.QUIT, None) menu.run()
def run(self): menu = Menu(mp.START_A_GAME_ON, remember="mapmenu") for m in worlds_multi(): menu.append(m.title, (self._open_players_menu, m)) menu.append(mp.QUIT2, None) menu.run()
def _defeat(self): menu = Menu([], []) menu.append(mp.RESTART, self) menu.append(mp.QUIT, None) menu.run()
def make_menu(self): menu = Menu(self.map.title) if len(self.registered_players) < self.map.nb_players_max: for p in self.available_players: menu.append([4058, p], (self.server.write_line, "invite %s" % p)) menu.append([4058, 4258], (self.server.write_line, "invite_easy")) menu.append([4058, 4257], (self.server.write_line, "invite_aggressive")) if len(self.registered_players) >= self.map.nb_players_min: menu.append([4059], (self.server.write_line, "start")) for pn, (p, pa, pr) in enumerate(self.registered_players): pa = int(pa) for a in range(1, len(self.registered_players) + 1): if a != pa: menu.append([4284, p, 4285] + nb2msg(a), (self.server.write_line, "move_to_alliance %s %s" % (pn, a))) if p in (self.server.login, "ai"): self._add_faction_menu(menu, pn, p, pr) menu.append([4048, 4060], (self.server.write_line, "cancel_game")) return menu