public static void Init(GraphicsDevice graphics) { UnlockedTowers = 0; rnd = new Random(); UiManager.UiScreens.Clear(); UiSideScreen = new UiSideGameScreen(graphics); UiTopScreen = new UiTopGameScreen(graphics); WaveManager.Reset(); EnemyManager.Init(); EnemyListener.InitiliseListener(); TowerManager.Init(); TowerListener.InitiliseListener(); TroopManager.Init(); TroopListener.InitiliseListener(); QuestionPopUpManager.Init(); // CHEATY TEST !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! /*UnlockedTowers |= Unlocks.RocketTower; * UnlockedTowers |= Unlocks.SamTower; * UnlockedTowers |= Unlocks.TeslaTower; * UnlockedTowers |= Unlocks.Upgrade; * ModifyResources(100000); * for (int i = 0; i < 100; i++) * TroopManager.SpawnTroop();*/ }
public static void Draw(SpriteBatch sb) { EffectManager.Draw(sb, 0); EnemyManager.Draw(sb); TowerManager.Draw(sb); EffectManager.Draw(sb, 1); }
public void Update() { if (m_enemy != null) { m_velocity = m_enemy.ScreenPos - m_position; m_velocity.Normalize(); m_velocity *= m_speed; if (Vector2.Distance(m_enemy.ScreenPos, m_position) < 10) { Lifetime = 0; EnemyManager.EnemyDamaged(m_damage, m_enemy, TypeofProj); } } else if (m_tower != null) { m_velocity = m_tower.Position - m_position; m_velocity.Normalize(); m_velocity *= m_speed; if (Vector2.Distance(m_tower.Position, m_position) < 10) { Lifetime = 0; TowerManager.TowerDamaged(m_damage, m_tower, TypeofProj); } } TimeSinceSpawn += 1 / 60f; m_position += m_velocity; Position = m_position; m_rotation = m_velocity.ToAngle(); }
// as towers are not static towers should be treated as normal objects rather than elements of squares. static void BuildTower() { string TowerType = BuildToTowerType(); GameManager.CostGet(); if (!GameManager.mouseSqrCoords.CoordEqual(GameManager.ENDPOINT)) { if (GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building == Squares.BuildingType.Concrete) { if (GameManager.Manpower >= ManPower && GameManager.Resources >= Resources) { if (GridManager.InaccessibleSquareCheck(GameManager.grid.gridSquares, GameManager.mouseSqrCoords)) { TowerManager.SpawnTower(TowerType, GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].PixelScreenPos, GameManager.mouseSqrCoords); } else { BlockedNotification(); } } else { ResourceManpowerNotification(); } } else { NeedConcreteNotification(); } } }
public static void Update(GameTime gameTime) { if (mouseSqrCoords != null) { MouseScreenPos = new Vector2(mouseSqrCoords.x * SQUARESIZE, mouseSqrCoords.y * SQUARESIZE + BORDERTOP); } m_manPower = TroopListener.TroopList.Count(); UiSideScreen.Update(); UiTopScreen.Update(); QuestionPopUpManager.Update(); WaveManager.Update(gameTime); TowerManager.Update(); TroopManager.Update(gameTime); EffectManager.Update(gameTime); PopUpTextManager.Update(gameTime); PopUpNotificationManager.Update(gameTime); MessageBoxManager.Update(gameTime); if (BaseHealth <= 0) { if (EffectManager.EffectList.Count < 10) { for (int i = 0; i < 1; i++) { EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, new Vector2(ENDPOINT.x * SQUARESIZE + rnd.Next(-30, 60), ENDPOINT.y * SQUARESIZE + BORDERTOP + rnd.Next(-30, 60)), true); } } GameState = GameStates.LoseScreen; } if (GameState == GameStates.LoseScreen && SaveData) { SaveData = false; Scores.AllTimeKills += WaveManager.EnemiesKilled; if (Scores.HighestWaveKills <= WaveManager.EnemiesKilled && Scores.HighestWave <= WaveManager.WaveNumber) { Scores.HighestWaveKills = WaveManager.EnemiesKilled; Scores.HighestWave = WaveManager.WaveNumber; } Scores.SaveData(Scores); } if (GameState == GameStates.PlayScreen && !SaveData) { SaveData = true; } if (HelpMode) { HelpDialogManager.Update(); } }
public static void Update(GameTime gameTime) { UiSideScreen.Update(); UiTopScreen.Update(); WaveManager.Update(gameTime); TowerManager.Update(); EffectManager.Update(gameTime); }
// as towers are not static towers should be treated as normal objects rather than elements of squares. static void BuildTower() { string TowerType = BuildToTowerType(); if (!GameManager.mouseSqrCoords.CoordEqual(GameManager.ENDPOINT)) { if (GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building == Squares.BuildingType.Concrete) { if (GridManager.InaccessibleSquareCheck(GameManager.grid.gridSquares, GameManager.mouseSqrCoords)) { TowerManager.SpawnTower(TowerType, GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].PixelScreenPos, GameManager.mouseSqrCoords); } } } }
public static void Draw(SpriteBatch sb) { EffectManager.Draw(sb, 0); TowerManager.Draw(sb); EnemyManager.Draw(sb); TroopManager.Draw(sb); EffectManager.Draw(sb, 1); PopUpTextManager.Draw(sb); QuestionPopUpManager.Draw(sb); PopUpNotificationManager.Draw(sb); MessageBoxManager.Draw(sb); if (HelpMode) { HelpDialogManager.Draw(sb); } }
public static void Delete() { if (GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building != Squares.BuildingType.None) { if (GridManager.InaccessibleSquareCheck(GameManager.grid.gridSquares, GameManager.mouseSqrCoords) && !GameManager.mouseSqrCoords.CoordEqual(GameManager.ENDPOINT)) { foreach (Tower tower in TowerListener.TowersList) { if (tower.towerCoords.CoordEqual(GameManager.mouseSqrCoords)) { BuildManager.RemoveTowerFromSquare(tower); TowerManager.DestroyTower(tower.TowerID); break; } } } GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].typeOfSquare = Squares.SqrFlags.Unoccupied; GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building = Squares.BuildingType.None; GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].sqrEdited = true; } }
public static void Delete() { bool IStower = false; if (GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building != Squares.BuildingType.None) { foreach (Tower tower in TowerListener.TowersList) { if (tower.towerCoords.CoordEqual(GameManager.mouseSqrCoords)) { if (tower.TowerType == "Gun") { GameManager.BuildState = GameManager.BuildStates.TowerGun; GameManager.CostGet(); } else if (tower.TowerType == "Rocket") { GameManager.BuildState = GameManager.BuildStates.TowerRocket; GameManager.CostGet(); } else if (tower.TowerType == "SAM") { GameManager.BuildState = GameManager.BuildStates.TowerSAM; GameManager.CostGet(); } else if (tower.TowerType == "Tesla") { GameManager.BuildState = GameManager.BuildStates.TowerSAM; GameManager.CostGet(); } BuildManager.RemoveTowerFromSquare(tower); GameManager.ObjectWasDemolished(tower.TowerType); TowerManager.DestroyTower(tower.TowerID); IStower = true; break; } } if (!GameManager.mouseSqrCoords.CoordEqual(new Coordinates(GameManager.WIDTH - 2, GameManager.HEIGHT - 1)) && !GameManager.mouseSqrCoords.CoordEqual(new Coordinates(GameManager.WIDTH - 1, GameManager.HEIGHT - 1)) && !GameManager.mouseSqrCoords.CoordEqual(new Coordinates(GameManager.WIDTH - 1, GameManager.HEIGHT - 2)) && !GameManager.mouseSqrCoords.CoordEqual(new Coordinates(GameManager.WIDTH - 3, GameManager.HEIGHT - 1)) && !GameManager.mouseSqrCoords.CoordEqual(new Coordinates(GameManager.WIDTH - 1, GameManager.HEIGHT - 3))) { if (GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building == Squares.BuildingType.Concrete && !IStower) { GameManager.BuildState = GameManager.BuildStates.Concrete; GameManager.CostGet(); GameManager.ObjectWasDemolished("Concrete"); } else if (GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building == Squares.BuildingType.Trench && !IStower) { GameManager.BuildState = GameManager.BuildStates.Trench; GameManager.CostGet(); GameManager.ObjectWasDemolished("Trench"); } GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].typeOfSquare = Squares.SqrFlags.Unoccupied; GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].Building = Squares.BuildingType.None; GameManager.grid.gridSquares[(int)GameManager.mouseSqrCoords.x, (int)GameManager.mouseSqrCoords.y].sqrEdited = true; GameManager.BuildState = GameManager.BuildStates.Destroy; } } }