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 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 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 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(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 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 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 options_menu(): Menu(mp.OPTIONS_MENU, [ (mp.MODIFY_LOGIN, modify_login), (mp.MODS, mods_menu), (mp.SOUNDPACKS, soundpacks_menu), (mp.OPEN_USER_FOLDER, open_user_folder), (mp.BACK, CLOSE_MENU), ]).loop()
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 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([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 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 single_player_menu(): Menu( mp.MAKE_A_SELECTION, [(c.title, c) for c in campaigns()] + [ (mp.START_A_GAME_ON, TrainingMenu().run), # (mp.RESTORE, restore_game), (mp.BACK, CLOSE_MENU), ]).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 _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 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 multiplayer_menu(): if config.login == "player": voice.alert(mp.ENTER_NEW_LOGIN) modify_login() menu = Menu(mp.MAKE_A_SELECTION, [ (mp.CHOOSE_SERVER_IN_LIST, choose_server_ip_in_a_list), (mp.ENTER_SERVER_IP, enter_server_ip), (mp.CANCEL, None), ]) menu.run()
def multiplayer_menu(self): revision_checker.start_if_needed() if config.login == "player": voice.alert([4235]) # type your new login self.modify_login() menu = Menu([4030], [ ([4119], self.choose_server_ip_in_a_list), ([4120], self.enter_server_ip), ([4048], None), ]) menu.run()
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 server_menu(): Menu(mp.WHAT_KIND_OF_SERVER, [ (mp.SIMPLE_SERVER, (start_server_and_connect, "admin_only"), mp.SIMPLE_SERVER_EXPLANATION), (mp.PUBLIC_SERVER, (start_server_and_connect, ""), mp.PUBLIC_SERVER_EXPLANATION), (mp.PRIVATE_SERVER, (start_server_and_connect, "admin_only no_metaserver"), mp.PRIVATE_SERVER_EXPLANATION), (mp.CANCEL, None), ]).run()
def _create_game(self, args): n, title = args Menu([4055] + title, [ ([4103], (self.server.write_line, "create %s 0.5" % n)), ([4104], (self.server.write_line, "create %s 1.0" % n)), ([4105] + nb2msg(2), (self.server.write_line, "create %s 2.0" % n)), ([4105] + nb2msg(4), (self.server.write_line, "create %s 4.0" % n)), ([4048], None), ], default_choice_index=1).run() # XXX not a ServerMenu
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 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 main_menu(): Menu(["SoundRTS %s %s %s," % (VERSION, res.mods, res.soundpacks)] + mp.MAKE_A_SELECTION, [ [ mp.SINGLE_PLAYER, single_player_menu, mp.SINGLE_PLAYER_EXPLANATION ], [mp.MULTIPLAYER2, multiplayer_menu, mp.MULTIPLAYER2_EXPLANATION], [mp.SERVER, server_menu, mp.SERVER_EXPLANATION], [mp.OBSERVE_RECORDED_GAME, replay_menu], [mp.OPTIONS, options_menu, mp.OPTIONS_EXPLANATION], [mp.DOCUMENTATION, launch_manual], [mp.QUIT2, CLOSE_MENU, mp.QUIT2_EXPLANATION], ]).loop()
def main_menu(): import version return Menu([ "SoundRTS %s %s %s," % (version.VERSION, res.mods, res.soundpacks), 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], [[4337], launch_manual], [[4041, 4042], END_LOOP], ])
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 _create_game(self, args): n, title, is_public = args Menu(title, [([4103], (self.server.write_line, "create %s 0.5 %s" % (n, is_public))), ([4104], (self.server.write_line, "create %s 1.0 %s" % (n, is_public))), ([4105] + nb2msg(2), (self.server.write_line, "create %s 2.0 %s" % (n, is_public))), ([4105] + nb2msg(4), (self.server.write_line, "create %s 4.0 %s" % (n, is_public))), ([4048], None), ], default_choice_index=1).run() # XXX not a ServerMenu
def _get_speed_submenu(self, args): n, title, is_public = args def create_with_speed(speed): s = "create %s %s %s" % (n, speed, is_public) return (self.server.write_line, s) Menu(title, [ (mp.SET_SPEED_TO_SLOW, create_with_speed("0.5")), (mp.SET_SPEED_TO_NORMAL, create_with_speed("1.0")), (mp.SET_SPEED_TO_FAST + nb2msg(2), create_with_speed("2.0")), (mp.SET_SPEED_TO_FAST + nb2msg(4), create_with_speed("4.0")), (mp.CANCEL, None), ], default_choice_index=1).run()