Esempio n. 1
0
        void INotifyCreated.Created(Actor self)
        {
            separateTeamSpawns = self.World.LobbyInfo.GlobalSettings
                                 .OptionOrDefault("separateteamspawns", info.SeparateTeamSpawnsCheckboxEnabled);

            var spawns = new List <CPos>();

            foreach (var n in self.World.Map.ActorDefinitions)
            {
                if (n.Value.Value == "mpspawn")
                {
                    spawns.Add(new ActorReference(n.Key, n.Value.ToDictionary()).GetValue <LocationInit, CPos>());
                }
            }

            spawnLocations = spawns.ToArray();

            // Initialize the list of unoccupied spawn points for AssignSpawnLocations to pick from
            availableSpawnPoints = LobbyUtils.AvailableSpawnPoints(spawnLocations.Length, self.World.LobbyInfo);
            foreach (var kv in self.World.LobbyInfo.Slots)
            {
                var client = self.World.LobbyInfo.ClientInSlot(kv.Key);
                if (client == null || client.SpawnPoint == 0)
                {
                    continue;
                }

                availableSpawnPoints.Remove(client.SpawnPoint);
                occupiedSpawnPoints.Add(client.SpawnPoint, client);
            }
        }
Esempio n. 2
0
        object IAssignSpawnPointsInfo.InitializeState(MapPreview map, Session lobbyInfo)
        {
            var state = new AssignSpawnLocationsState();

            // Initialize the list of unoccupied spawn points for AssignSpawnLocations to pick from
            state.SpawnLocations       = map.SpawnPoints;
            state.AvailableSpawnPoints = LobbyUtils.AvailableSpawnPoints(map.SpawnPoints.Length, lobbyInfo);
            foreach (var kv in lobbyInfo.Slots)
            {
                var client = lobbyInfo.ClientInSlot(kv.Key);
                if (client == null || client.SpawnPoint == 0)
                {
                    continue;
                }

                state.AvailableSpawnPoints.Remove(client.SpawnPoint);
                state.OccupiedSpawnPoints.Add(client.SpawnPoint, client);
            }

            return(state);
        }