public void RemoveUnit(IUnitEnemy unit) { Units.Remove(unit); GameUnitManager.RemoveUnit(unit); UnitChainEvaluator.Instance.RemoveUnit(unit); OnRemoveUnit(unit); }
private void HandleArrival() { if (_currentStreak >= GameUnitManager.UnitsOnScreenFromPercent(_fearThresholdPercent)) { GameUnitManager.PerformPostKillFear(_player); } }
public void RegisterUnit(IUnitEnemy unit) { Units.Add(unit); GameUnitManager.RegisterUnit(unit); UnitChainEvaluator.Instance.AddUnit(unit); OnRegisterUnit(unit); }
public static Vector2[] Path(IUnitEnemy unitEnemy, Vector2 targetPosition) { if (Player == null) { Player = Object.FindObjectOfType <Player>(); } var startingNode = NodeGrid.Instance.NodeFromWorldPosition(unitEnemy.Transform.position); var targetNode = NodeGrid.Instance.NodeFromWorldPosition(targetPosition); if (GameUnitManager.IsValidNodeFromUnit(targetNode, unitEnemy) && targetNode.IsWalkable) { var openSet = new Heap <Node>(NodeGrid.Instance.MaxSize); var closedSet = new HashSet <Node>(); openSet.Add(startingNode); while (openSet.Count > 0) { var currentNode = openSet.RemoveFirst(); closedSet.Add(currentNode); if (currentNode == targetNode) { return(RetracePath(startingNode, targetNode)); } foreach (var neighbor in NodeGrid.Instance.Neighbors(currentNode, _defaultNeighborScalar)) { if (!GameUnitManager.IsValidNodeFromUnit(neighbor, unitEnemy) || NodeGrid.Instance.NodeTooCloseToSafetyGrid(Player.transform.position, neighbor) || !GameUnitManager.IsValidNodeFromPlayer(neighbor, Player) || !neighbor.IsWalkable || closedSet.Contains(neighbor)) { continue; } var newMovementCostToNeighbor = currentNode.GCost + GetDistance(currentNode, neighbor); if (newMovementCostToNeighbor < neighbor.GCost || !openSet.Contains(neighbor)) { neighbor.GCost = newMovementCostToNeighbor; neighbor.HCost = GetDistance(neighbor, targetNode); neighbor.Parent = currentNode; if (!openSet.Contains(neighbor)) { openSet.Add(neighbor); } else { openSet.UpdateItem(neighbor); } } } } } return(null); }
public static void Reload() { Time.timeScale = 1f; Pool.ClearPools(); GameUnitManager.Clear(); UnitChainEvaluator.Instance.Clear(); SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); SceneManager.LoadScene("Game Menu UI Scene", LoadSceneMode.Additive); }
public LevelDirector(GameUnitManager gameUnitManager, List <MonsterStats> monsterUnits, int maxUnit) { _gameUnitManager = gameUnitManager; MaxUnit = maxUnit; _monsterStats = monsterUnits; _utilityTheory = new UtilityTheory(); _phaseInterfaceDict = SetUpPhaseAI(); _phaseDictLength = _phaseInterfaceDict.Count; currentPhase = Phase.BuildUp; BuildWaveStructure(currentPhase); }
public void Init(GameUnitManager gameUnitManager, MapBlockManager mapHolder, MapGrid mapGrid, List <MonsterStats> allMonsterUnits) { _levelDirector = new LevelDirector(gameUnitManager, allMonsterUnits, PoolManager.instance.GetObjectLength(VariableFlag.Pooling.MonsterID)); _spawnQueue = new Queue <MonsterStats>(); _gameUnitManager = gameUnitManager; _mapHolder = mapHolder; _mapGrid = mapGrid; _monsterUnits = allMonsterUnits; _strategyMapper = new GameStrategyMapper(); monsterLength = _monsterUnits.Count; _levelDirector.OnCallReinforcement += CallReinforcement; }
public void SetUp(GameInputManager gameInputManager, GameUnitManager gameUnitManager, LevelDesignManager levelDesign, MapGrid mapGrid, MapBlockManager mapBlockManager, STPTheme stpTheme, StatsHolder statHolder) { _gameInputManager = gameInputManager; _gameInputManager.OnSelectTileNode += SelectTileListener; _gameUnitManager = gameUnitManager; _levelDesignManager = levelDesign; _mapGrid = mapGrid; _mapBlockManager = mapBlockManager; _stpTheme = stpTheme; _statHolder = statHolder; if (ConstructionUI != null) { ConstructionUI.TowerClickEvent += SelectTowerToBuild; } }
private void Awake() { var monsterPools = statsHolder.FindObjectByType <MonsterStats>(); _blockManager = GetComponentInChildren <MapBlockManager>(); _mapGrid = GetComponentInChildren <MapGrid>(); _gameInputManager = GetComponentInChildren <GameInputManager>(); _gameInteractorCtrl = GetComponentInChildren <InGameUICtrl>(); _poolManager = GetComponentInChildren <PoolManager>(); _gameUnitManager = GetComponentInChildren <GameUnitManager>(); _levelDesignManager = GetComponentInChildren <LevelDesignManager>(); _headView = GetComponentInChildren <HeaderView>(); _mapBlockBottomView = GetComponentInChildren <MapBlockBottomView>(); _mapGrid.SetUp(); _gameInputManager.SetUp(_mapGrid, _blockManager); _gameUnitManager.SetUp(_blockManager, _mapGrid, poolingTheme.total); _levelDesignManager.Init(_gameUnitManager, _blockManager, _mapGrid, monsterPools); _gameInteractorCtrl.SetUp(_gameInputManager, _gameUnitManager, _levelDesignManager, _mapGrid, _blockManager, poolingTheme, statsHolder); }
public void LoadMainMenu() { SceneManager.LoadScene("Main Menu"); Pool.ClearPools(); GameUnitManager.Clear(); }
private void Start() { GameUnitManager.RegisterUnit(this); UnitChainEvaluator.Instance.AddUnit(this); }