public void SubmitCharacterAction(Character playerCharacter, List <ExecuteableAction> lockedInActions) { SubmittedAction existingSubmission = _submittedPlayerActions.FirstOrDefault(x => x.TargetingCharacter == playerCharacter); if (existingSubmission != null) { _submittedPlayerActions.Remove(existingSubmission); } _submittedPlayerActions.Add(new SubmittedAction(playerCharacter, lockedInActions)); }
private IEnumerator HandleSubmittedAction(SubmittedAction submittedAction, float actionTime) { int actionSegements = submittedAction.ExecuteableActions.Count; float segmentTime = actionTime / actionSegements; foreach (var executableAction in submittedAction.ExecuteableActions) { ExecuteableAction recalculatedAction = RecalculateTargets(executableAction); ExecuteAction(recalculatedAction); yield return(new WaitForSeconds(segmentTime)); } }
public void EndPlayersTurns() { RemovePlayerShields(); List <Character> alivePlayers = CharacterManager.Instance.GetAlivePlayers(); foreach (var player in alivePlayers) { if (_submittedPlayerActions.FirstOrDefault(x => x.TargetingCharacter == player) == null) { ExecuteableAction executeableAction = new ExecuteableAction(player, _defaultAction.TargetedActions[0]); executeableAction.Targets.Add(CharacterManager.Instance.GetRandomAliveEnemy()); List <ExecuteableAction> defaultActions = new List <ExecuteableAction> { executeableAction }; SubmittedAction submittedAction = new SubmittedAction(player, defaultActions); _submittedPlayerActions.Add(submittedAction); } } _actionSequence = StartCoroutine(ProcessSubmittedTurns(_submittedPlayerActions, false)); }