CameraBuddy.Spectate.Situation.Game.GetGameState C# (CSharp) Method

GetGameState() public static method

public static GetGameState ( ) : GameState
return GameState
        public static GameState GetGameState()
        {
            // Gate is up
            if (Timing.IsGateUp)
            {
                return UpdateGameStateData(GameState.GameStart,
                    new GameStateInfo(Buildings.Ally.Nexus.Position, Region.Location.None));
            }
            //Gate is down, and minions have not spawned
            if (Timing.HaveMinionsSpawned)
            {
                return UpdateGameStateData(GameState.MinionsSpawning,
                    new GameStateInfo(Player.Posistion, Region.InWhatRegion(Player.Posistion)));
            }
            //Gate is down, and minions have spawned but Jungle minions have not spawned
            if (Timing.HasJungleSpawned)
            {
                return UpdateGameStateData(GameState.JungleSpawning,
                    new GameStateInfo(Player.Posistion, Region.InWhatRegion(Player.Posistion)));
            }
            //Minions have arrived in lane
            if (
                (
                    (Player.IsLaneAssigned(Lane.Bottom, Lane.Top) && Timing.HaveTopBotMinionsContacted) ||
                    (Player.IsLaneAssigned(Lane.Middle, Lane.Jungle) && Timing.HaveMidMinionsContacted)
                    ) &&
                !_minionsHaveContacted
                )
            {
                _minionsHaveContacted = true;
                return UpdateGameStateData(GameState.FirstMinionContact,
                    new GameStateInfo(Player.Posistion, Region.InWhatRegion(Player.Posistion)));
                ;
            }
            Vector3 posistion;
            List<AIHeroClient> heroes;
            //Ally nexus turrents have been hurt 
            if (
                (Buildings.Ally.Turrents.GetTeir(Buildings.TurrentTier.Nexus)
                    .Count(x => !x.IsDead || x.HealthPercent < 100) < 2) &&
                Heros.AreGrouped(HeroType.Enemy, 1, out posistion, out heroes, 3000) &&
                posistion.Distance(Buildings.Ally.Nexus.Position) < 3500)
            {
                return UpdateGameStateData(GameState.AllyFinishing,
                    new GameStateInfo(Buildings.Ally.Nexus.Position, Region.Location.None));
            }

            if (Heros.AreGrouped(HeroType.Enemy, 3, out posistion, out heroes))
            {
                return UpdateGameStateData(GameState.EnemyGrouping, new GameStateInfo(posistion, posistion.InWhatRegion()));
            }
            if (Heros.AreGrouped(HeroType.Ally, 3, out posistion, out heroes))
            {
                return UpdateGameStateData(GameState.AllyGrouping, new GameStateInfo(posistion, posistion.InWhatRegion()));
            }
            if (_minionsHaveContacted)
            {
                return UpdateGameStateData(GameState.Laning,
                    new GameStateInfo(Player.Posistion, Player.Posistion.InWhatRegion()));
            }

            //Enemy nexus turrents have been hurt
            if (
                (Buildings.Enemy.Turrents.GetTeir(Buildings.TurrentTier.Nexus)
                    .Count(x => !x.IsDead || x.HealthPercent < 100) < 2) &&
                Heros.AreGrouped(HeroType.Ally, 2, out posistion, out heroes, 3000) &&
                posistion.Distance(Buildings.Enemy.Nexus.Position) < 3500)
            {
                return UpdateGameStateData(GameState.EnemyFinishing,
                    new GameStateInfo(Buildings.Enemy.Nexus.Position, Region.Location.None));
            }

            return GameState.FirstMinionContact;
        }