void BeginNewGame() { playerHealth = startingPlayerHealth; enemies.Clear(); nonEnemies.Clear(); board.Clear(); activeScenario = scenario.Begin(); }
// métodos padrões void Awake() { playerHealth = startingPlayerHealth; board.Initialize(boardSize, tileContentFactory); board.ShowGrid = true; scenario = new GameScenarioCompiler(enemyFactory); activeScenario = scenario.Begin(); }
void Update() { if (Input.GetMouseButtonDown(0)) { HandleTouch(); } else if (Input.GetMouseButtonDown(1)) { HandleAlternativeTouch(); } if (Input.GetKeyDown(KeyCode.V)) { board.ShowPaths = !board.ShowPaths; } if (Input.GetKeyDown(KeyCode.Alpha1)) { selectedTowerType = TowerType.Laser; } else if (Input.GetKeyDown(KeyCode.Alpha2)) { selectedTowerType = TowerType.Mortar; } if (Input.GetKeyDown(KeyCode.Space)) { // "espaço" pausa o jogo Time.timeScale = Time.timeScale > pausedTimeScale ? pausedTimeScale : 1f; } else if (Time.timeScale > pausedTimeScale) { Time.timeScale = playSpeed; } if (Input.GetKeyDown(KeyCode.B)) { // "b" começa um novo jogo playerHealth = startingPlayerHealth; BeginNewGame(); } if (startingPlayerHealth == 0 && !activeScenario.Progress() && enemies.IsEmpty) { // modo invencivel playerHealth = startingPlayerHealth; enemies.Clear(); activeScenario = scenario.Begin(); } else if (playerHealth <= 0 && startingPlayerHealth > 0) { // sem vida = fim de jogo Debug.Log("Derrota!"); BeginNewGame(); } else if (!activeScenario.Progress() && enemies.IsEmpty) { // cenário acabou e não existem inimigos = vitória Debug.Log("Vitoria!"); BeginNewGame(); activeScenario.Progress(); } activeScenario.Progress(); enemies.GameUpdate(); Physics.SyncTransforms(); board.GameUpdate(); nonEnemies.GameUpdate(); }