public void EndTurn() { ActiveTurn = false; if (this.GameState == GameState.AttackerTurn) { this.GameState = GameState.DefenderTurn; this.AttackerUI.SetActive(false); this.DefenderUI.SetActive(true); TurnText.text = "Defender's\nTurn"; TurnText.color = new Color(0, .5F, 1F); this.WaterLeavingSystemOnLastTurnChange = this.WaterFlowController.TickModules(); foreach (WaterObject w in this.WaterLeavingSystemOnLastTurnChange) { ScoreController.AddDefenderScore(w.GetWaterScore()); } TurnText.transform.Rotate(0, 0, 180); ScoreController.RotateScoreText(180); AttackerUICover.gameObject.SetActive(true); DefenderUICover.gameObject.SetActive(false); } else { this.GameState = GameState.AttackerTurn; this.NumAvailableAttacks = this.NumberOfAttacksPerTurn; AttackerUICover.gameObject.SetActive(false); DefenderUICover.gameObject.SetActive(true); ScoreController.RotateScoreText(180); this.AttackerUI.SetActive(true); this.DefenderUI.SetActive(false); // Reset modules attachments foreach (AttackableModule m in this.GameBoardObjects) { m.HasInspectorAttached = false; m.HasFixerAttached = false; m.ResetColor(); } // Oracles Get their values and fixes done foreach (Oracle o in this.oracles) { o.InputActive = false; o.InspectModule(); o.FixModule(); } // Score points for non-fixed modules foreach (AttackableModule m in this.GameBoardObjects) { if (m.IsAttacked) { m.SetAttackDuration(m.GetAttackDuration() + 1); ScoreController.AddAttackerScore(m.GetAttackDuration() * Ints.Score.Defender.Fix); } } if (++Turn > TurnLimit) { Options.Round = ++Options.Round; Results.AttackerVictory = ScoreController.GetWinner(); this.SceneLoader.LoadVictoryScene(); } AttackerUIObject.SetTurnText(" Turn: " + Turn + "/" + TurnLimit); DefenderUIObject.SetTurnText(" Turn: " + Turn + "/" + TurnLimit); TurnText.text = "Attacker's\n Turn"; TurnText.color = new Color(1F, 0, 0); TurnText.transform.Rotate(0, 0, 180); } ScreenCover.gameObject.GetComponentsInChildren <Text>()[0].text = TurnText.text; ScreenCover.gameObject.GetComponentsInChildren <Text>()[0].color = TurnText.color; StartCoroutine(WaitForClick()); GameEvents.DispatchTurnChangeEvent(this.GameState); }