Beispiel #1
0
 def _clients(self, players, local_login, main_server):
     clients = []
     for login, a, f in players:
         if login.startswith("ai_"):
             c = DummyClient(login[3:])
         else:
             if login != local_login:
                 c = RemoteClient(login)
             else:
                 c = Coordinator(local_login, main_server, self)
                 self.me = c
         c.alliance = a
         c.faction = f
         clients.append(c)
     return clients
Beispiel #2
0
 def populate_map(self, players, alliances, factions=()):
     # add "true" (non neutral) players
     worldrandom.shuffle(self.players_starts)
     for client in players:
         start = self.players_starts.pop()
         if client.__class__.__name__ == "DummyClient":
             self._add_player(Computer, client, start, False)
         else:
             self._add_player(Human, client, start)
     # create the alliances
     if alliances:
         for p, pa in zip(self.players, alliances):
             for other, oa in zip(self.players, alliances):
                 if other is not p and oa == pa:
                     p.allied.append(other)
     else:  # computer players are allied by default
         for p in self.players:
             if isinstance(p, Computer):
                 for other in self.players:
                     if other is not p and isinstance(other, Computer):
                         p.allied.append(other)
     # set the factions for players
     if factions:
         for p, pr in zip(self.players, factions):
             if pr == "random_faction":
                 p.faction = worldrandom.choice(self.get_factions())
             else:
                 p.faction = pr
     # add "neutral" (independent) computers
     for start in self.computers_starts:
         self._add_player(Computer, DummyClient(), start, True)
     # init all players positions
     for player in self.players:
         player.init_position()
     self.admin = players[0]  # define get_admin()?
Beispiel #3
0
 def __init__(self, map, players, factions):
     self.map = map
     self.seed = random.randint(0, 10000)
     self.me = DirectClient(config.login, self)
     self.players = [self.me] + [DummyClient(x) for x in players[1:]]
     for p, f in zip(self.players, factions):
         p.faction = f
Beispiel #4
0
 def __init__(self, replay):
     self._file = open(replay)
     game_type_name = self.replay_read()
     if game_type_name in ("multiplayer", "training"):
         self.default_triggers = _MultiplayerGame.default_triggers
     game_name = self.replay_read()
     voice.alert([game_name])
     version = self.replay_read()
     mods = self.replay_read()
     if mods != config.mods:
         config.mods = mods
         reload_all()
     _compatibility_version = self.replay_read()
     if _compatibility_version != compatibility_version():
         voice.alert([1029, 4012])  # hostile sound  "version error"
         warning(
             "Version mismatch. Version should be: %s. Mods should be: %s.",
             version, mods)
     self.map = Map()
     self.map.unpack(self.replay_read())
     players = self.replay_read().split()
     self.alliances = map(int, self.replay_read().split())
     self.factions = self.replay_read().split()
     self.seed = int(self.replay_read())
     self.me = ReplayClient(players[0], self)
     self.players = [self.me]
     for x in players[1:]:
         if x in ["aggressive", "easy"]:  # the "ai_" prefix wasn't recorded
             self.players += [DummyClient(x)]
         else:
             self.players += [HalfDummyClient(x)]
             self.me.nb_humans += 1
Beispiel #5
0
 def __init__(self, replay):
     self._file = open(replay)
     game_type_name = self.replay_read()
     if game_type_name in ("multiplayer", "training"):
         self.default_triggers = _MultiplayerGame.default_triggers
     game_name = self.replay_read()
     voice.alert([game_name])
     version = self.replay_read()
     mods = self.replay_read()
     res.set_mods(mods)
     _compatibility_version = self.replay_read()
     if _compatibility_version != compatibility_version():
         voice.alert([1029, 4012]) # hostile sound  "version error"
         warning("Version mismatch. Version should be: %s. Mods should be: %s.",
                 version, mods)
     campaign_path_or_packed_map = self.replay_read()
     if game_type_name == "mission" and "***" not in campaign_path_or_packed_map:
         from campaign import Campaign
         self.map = Campaign(campaign_path_or_packed_map)._get(int(self.replay_read()))
     else:
         self.map = Map()
         self.map.unpack(campaign_path_or_packed_map)
     players = self.replay_read().split()
     self.alliances = map(int, self.replay_read().split())
     self.factions = self.replay_read().split()
     self.seed = int(self.replay_read())
     self.me = ReplayClient(players[0], self)
     self.players = [self.me]
     for x in players[1:]:
         if x in ["aggressive", "easy"]: # the "ai_" prefix wasn't recorded
             self.players += [DummyClient(x)]
         else:
             self.players += [HalfDummyClient(x)]
             self.me.nb_humans += 1
Beispiel #6
0
 def _computers_and_humans(self, players, my_login):
     computers = []
     humans = []
     for p in players:
         if p in ["ai_aggressive", "ai_easy"]:
             computers.append(DummyClient(p[3:]))
         else:
             if p != my_login:
                 humans.append(HalfDummyClient(p))
             else:
                 humans.append(None) # marked for further replacement, because the order must be the same (the worlds must be the same)
     return computers, humans
Beispiel #7
0
 def __init__(self, replay):
     self._file = open(replay)
     game_type_name = self.replay_read()
     if game_type_name in ("multiplayer", "training"):
         self.default_triggers = _MultiplayerGame.default_triggers
         self.must_apply_equivalent_type = True
     game_name = self.replay_read()
     voice.alert([game_name])
     version = self.replay_read()
     mods = self.replay_read()
     res.set_mods(mods)
     _compatibility_version = self.replay_read()
     if _compatibility_version != compatibility_version():
         voice.alert(mp.BEEP + mp.VERSION_ERROR)
         warning(
             "Version mismatch. Version should be: %s. Mods should be: %s.",
             version, mods)
     campaign_path_or_packed_map = self.replay_read()
     if game_type_name == "mission" and "***" not in campaign_path_or_packed_map:
         from campaign import Campaign
         self.map = Campaign(campaign_path_or_packed_map)._get(
             int(self.replay_read()))
     else:
         self.map = Map()
         self.map.unpack(campaign_path_or_packed_map)
     players = self.replay_read().split()
     alliances = self.replay_read().split()
     factions = self.replay_read().split()
     self.seed = int(self.replay_read())
     self.me = ReplayClient(players[0], self)
     self.players = [self.me]
     for x in players[1:]:
         if x.startswith("ai_"):
             x = x[3:]
         if x in ["aggressive", "easy", "ai2"]:
             self.players += [DummyClient(x)]
         else:
             self.players += [RemoteClient(x)]
             self.me.nb_humans += 1
     for p, a, f in zip(self.players, alliances, factions):
         p.alliance = a
         p.faction = f
Beispiel #8
0
 def _clients(self, players, local_login, main_server):
     clients = []
     for login, a, f in players:
         if login.startswith("ai_"):
             c = DummyClient(login[3:])
         else:
             if login != local_login:
                 c = RemoteClient(login)
             else:
                 c = Coordinator(local_login, main_server, self)
                 self.me = c
         c.alliance = a
         c.faction = f
         clients.append(c)
     return clients
Beispiel #9
0
 def _create_neutrals(self):
     for start in self.computers_starts:
         self._add_player(DummyClient(neutral=True), start)