/// <summary> /// Boots the MatchManager given a specific <see cref="MatchSettings"/> /// </summary> /// <param name="matchConfig"></param> public void CreateMatch(MatchSettings matchConfig) { MapManager.Initialize(matchConfig.MapSize.x, matchConfig.MapSize.y); if (Factions != null) { foreach (var faction in Factions) { faction.Clean(); } } Factions = new List <FactionManager>(); BotFactions = new List <FactionManager>(); int factionIndex = 0; foreach (var playerConfig in matchConfig.PlayerConfigs) { var factionManager = new FactionManager(factionIndex, playerConfig.PlayerType); if (playerConfig.PlayerType == PlayerType.Human) { HumanFaction = factionManager; } else { BotFactions.Add(factionManager); } foreach (var unitConfig in playerConfig.Units) { var unit = m_unitFactory.CreateUnit(unitConfig.UnitType, factionIndex, unitConfig.SpawnPosition); MapManager.PlaceUnit(unitConfig.SpawnPosition, unit); factionManager.AddUnit(unit); unit.transform.parent = MapManager.transform; } Factions.Add(factionManager); factionIndex++; } }
/// <summary> /// Creates the <see cref="PlayerController"/> of a specific type depending on <see cref="PlayerType"/> and <see cref="AIType"/> /// </summary> /// <param name="faction"></param> /// <param name="aiType"></param> /// <returns></returns> private GameObject createPlayerControllerForFaction(FactionManager faction, AIType aiType) { var go = new GameObject() { name = "PlayerController" + faction.FactionIndex }; switch (faction.PlayerType) { case PlayerType.Human: humanPlayer = go.AddComponent <HumanPlayerController>(); break; case PlayerType.Bot: switch (aiType) { case AIType.Dummy: go.AddComponent <DummyAIAgentController>(); break; case AIType.Aggressive: go.AddComponent <AgressiveAIAgentController>(); break; case AIType.RandomWalker: go.AddComponent <RandomWalkerAIAgentController>(); break; } break; case PlayerType.Scripted: ScriptedPlayerControllers.Add(go.AddComponent <ScriptedPlayerController>()); break; } return(go); }
public override void Initialize(MatchManager matchController, FactionManager factionManager) { base.Initialize(matchController, factionManager); FactionManager.Units.OrderBy(u => u.AttackPower).Reverse(); }
/// <summary> /// Called by <see cref="GameController"/> when turn starts /// </summary> public virtual void TurnStart() { FactionManager.RegenerateActionPoints(); }
public virtual void Initialize(MatchManager matchController, FactionManager factionManager) { MatchManager = matchController; FactionManager = factionManager; }