public override void OnEnter(GameManager gameManager) { GUIManager guiManager = gameManager.GetGUIManager(); guiManager.ShowActions(); guiManager.ShowMoveSelectCountdown(); guiManager.SetMoveSelectCountdownMinMax(0, turnDuration); guiManager.SetMoveSelectCountdownValue(turnDuration); guiManager.HideStatusPanel(); gameManager.ShowTargetingIndicator(); timeElapsed = turnDuration; // Move the camera back into place. gameCamera.GetComponent<CameraMoves>().MoveAndLook(startCameraPosition, gameManager.GetPlayer().transform.position, 2.0f); bool autoSelectPlayerTarget = (gameManager.GetPlayerTarget() == null); // Decided whether auto-select a target if the player hasn't selected any // Pick random actions for the non-player combatants. List<GameObject> actors = gameManager.GetActiveCombatants(); if (actors.Count > 1) { foreach (GameObject actor in actors) { // We don't need to pick an action for the player automatically. if (actor.CompareTag("Player")) { continue; } // Auto-select the first available enemy as the player's target. if (autoSelectPlayerTarget) { gameManager.OnCombatantSelect(actor); autoSelectPlayerTarget = false; } CombatantActions combatant = actor.GetComponent<CombatantActions>(); // Choose a target. // Make sure the combatant doesn't target itself. List<int> possibleTargets = new List<int>(); for (int i = 0; i < actors.Count; i++) { if (actors[i] != actor) { possibleTargets.Add(i); } } int targetIndex = Random.Range(0, possibleTargets.Count); GameObject target = actors[possibleTargets[targetIndex]]; combatant.SetTarget(target); // Pick the action. int randAction = Random.Range(0, combatant.GetActionCount()); CombatantAction action = combatant.GetAction(randAction); gameManager.QueueAction(action); } } gameManager.UnsetSelectedAction(); gameManager.GetPlayer().GetComponent<CombatantActions>().SelectedAction = null; }