예제 #1
0
 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()
예제 #2
0
 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()
예제 #3
0
 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()
예제 #4
0
 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()
예제 #5
0
 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()
예제 #6
0
 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()
예제 #7
0
 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()
예제 #8
0
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()
예제 #9
0
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()
예제 #10
0
 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
예제 #11
0
 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
예제 #12
0
        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()
예제 #13
0
 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
예제 #14
0
 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
예제 #15
0
 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
예제 #16
0
 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
예제 #17
0
 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
예제 #18
0
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()
예제 #19
0
 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
예제 #20
0
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()
예제 #21
0
 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
예제 #22
0
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
예제 #23
0
 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
예제 #24
0
 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
예제 #25
0
 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
예제 #26
0
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
예제 #27
0
 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
예제 #28
0
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
예제 #29
0
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
예제 #30
0
 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()
예제 #31
0
파일: campaign.py 프로젝트: ctoth/soundrts
 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()
예제 #32
0
    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()
예제 #33
0
    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()
예제 #34
0
 def _victory(self):
     menu = Menu([], [])
     menu.append([4011], self._get_next())  # continue
     menu.append([4009], None)  # cancel
     menu.run()
예제 #35
0
파일: campaign.py 프로젝트: ctoth/soundrts
 def _defeat(self):
     menu = Menu([], [])
     menu.append([4266], self) # restart
     menu.append([4009], None) # cancel
     menu.run()
예제 #36
0
 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()
예제 #37
0
 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
예제 #38
0
 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
예제 #39
0
 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
예제 #40
0
 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
예제 #41
0
 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
예제 #42
0
 def _victory(self):
     menu = Menu([], [])
     menu.append(mp.CONTINUE, self._get_next())
     menu.append(mp.QUIT, None)
     menu.run()
예제 #43
0
 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()
예제 #44
0
 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()
예제 #45
0
 def _defeat(self):
     menu = Menu([], [])
     menu.append(mp.RESTART, self)
     menu.append(mp.QUIT, None)
     menu.run()
예제 #46
0
파일: campaign.py 프로젝트: ctoth/soundrts
 def _victory(self):
     menu = Menu([], [])
     menu.append([4011], self._get_next()) # continue
     menu.append([4009], None) # cancel
     menu.run()
예제 #47
0
 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
예제 #48
0
 def _defeat(self):
     menu = Menu([], [])
     menu.append([4266], self)  # restart
     menu.append([4009], None)  # cancel
     menu.run()
예제 #49
0
 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()