public void StartGame(Action onGameLost, Action onGameWon) { _player1LegsController.ResetProgress(); _player2LegsController.ResetProgress(); _player1Board.DisplayText("", true); _player2Board.DisplayText("", true); _currentSequence = GetNextSequence(); _onGameLost = onGameLost; _onGameWon = onGameWon; StartCoroutine(StartGameCoroutine()); }
private IEnumerator SequenceEndCoroutine(GameplaySequence sequence) { GameplaySequence sequenceToPlay = null; if (sequence.Success) { Debug.Log("Sequence " + sequence.RequiredScore.ToString() + " won."); Dialogue dialogue = GetRandomPositiveDialogue(); yield return(StartCoroutine(DisplayBoardTextCoroutine(sequence.StartingBoard, dialogue.Sentence, true))); yield return(StartCoroutine(DisplayBoardTextCoroutine(sequence.OtherBoard, dialogue.Answer, true))); } else { Debug.Log("Sequence " + sequence.RequiredScore.ToString() + " lost."); Dialogue dialogue = GetRandomNegativeDialogue(); yield return(StartCoroutine(DisplayBoardTextCoroutine(sequence.StartingBoard, dialogue.Sentence, false))); yield return(StartCoroutine(DisplayBoardTextCoroutine(sequence.OtherBoard, dialogue.Answer, false))); } LegsController legsToMove = sequence.Success ? GetLowestProgressPlayer() : GetHighestProgressPlayer(); legsToMove.StepToPosition(sequence.Success, false); while (sequence.Legs.IsMoving) { yield return(null); } _currentSequence = GetNextSequence(); if (_currentSequence != null) { _currentSequence.Start(OnGameplaySequenceFinished); } else { EndGame(sequence.Success); } }
private void OnGameplaySequenceFinished(GameplaySequence sequence) { StartCoroutine(SequenceEndCoroutine(sequence)); }