Пример #1
0
        protected override void OnStateExited()
        {
            // cleanup battle here
            BattlePlayerTeams.ClearTeams();
            BattleRecyclables.Clear();
            PlayerSpawner.CleanupAllPlayers();
            AISpawner.CleanupAllPlayers();

            InGameConstants.AllowChargingLasers = true;
            InGameConstants.EnableQuacking      = false;

            celebrateActionAccumulator_.EndAccumulating();

            Hint.Hide();
        }
Пример #2
0
        protected override void Activate()
        {
            PlayerSpawner.SpawnAllPlayers();

            // Sort the players from lowest score to highest score
            List <Player> players = RegisteredPlayers.AllPlayers.ToList();

            players.Sort((playerA, playerB) => {
                return(PlayerScores.GetScoreFor(playerA).CompareTo(PlayerScores.GetScoreFor(playerB)));
            });

            teams_ = new HashSet <Player> [kNumberOfTeams];
            if (players.Count == 4 && kNumberOfTeams == 2)
            {
                teams_[0] = new HashSet <Player>()
                {
                    players[0], players[3]
                };
                teams_[1] = new HashSet <Player>()
                {
                    players[1], players[2]
                };
            }
            else
            {
                Debug.LogWarning("Assumptions failed when creating teams - random teams!");

                players.Shuffle();

                int teamIndex = 0;
                foreach (Player player in players)
                {
                    if (teams_[teamIndex] == null)
                    {
                        teams_[teamIndex] = new HashSet <Player>();
                    }

                    teams_[teamIndex].Add(player);

                    teamIndex = MathUtil.Wrap(teamIndex + 1, 0, kNumberOfTeams);
                }
            }

            // set override color for players
            for (int i = 0; i < teams_.Length; i++)
            {
                HashSet <Player> team = teams_[i];

                foreach (Player player in team)
                {
                    BattlePlayer battlePlayer = PlayerSpawner.GetBattlePlayerFor(player);
                    ObjectPoolManager.Create(accessoryPrefabs_[i], parent: battlePlayer.AccessoriesContainer);
                }
            }

            foreach (HashSet <Player> team in teams_)
            {
                BattlePlayerTeams.DeclareTeam(team.Select(p => PlayerSpawner.GetBattlePlayerFor(p)));
            }

            List <int> playerOrdering           = new List <int>();
            List <GameModeIntroView.Icon> icons = new List <GameModeIntroView.Icon>();

            for (int i = 0; i < teams_.Length - 1; i++)
            {
                playerOrdering.AddRange(teams_[i].Select(p => RegisteredPlayers.AllPlayers.IndexOf(p)));
                icons.AddRange(teams_[i].Select(p => GameModeIntroView.Icon.Player));
                icons.Add(GameModeIntroView.Icon.Swords);
            }
            playerOrdering.AddRange(teams_[teams_.Length - 1].Select(p => RegisteredPlayers.AllPlayers.IndexOf(p)));
            icons.AddRange(teams_[teams_.Length - 1].Select(p => GameModeIntroView.Icon.Player));

            GameModeIntroView.Show(DisplayTitle, icons, playerOrdering);

            PlayerSpawner.OnSpawnedPlayerRemoved += HandleSpawnedPlayerRemoved;
        }