コード例 #1
0
    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));
    }
コード例 #2
0
    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));
        }
    }
コード例 #3
0
    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));
    }