IEnumerator ShowDialogList() { for (var i = 0; i < _generatedList.Count; i++) { GameObject dialogItem = Instantiate(prefabDialogItem, dialogHolder.parent); dialogItem.transform.SetParent(dialogHolder); ScopeDialogItem script = dialogItem.GetComponent <ScopeDialogItem>(); script.SetData(playerData.GetRandomCharacter(), _generatedList[i].sentences); _dialogList.Add(dialogItem); if (_dialogList.Count > dialogCountLimit) { Destroy(_dialogList[0]); _dialogList.RemoveAt(0); } yield return(new WaitForSeconds(dialogListDelay)); } yield return(new WaitForSeconds(dialogListDelay * 2)); _state = State.Result; characterData = playerData.GetRandomCharacter(); _currentDialog = resultDialog; _currentDialog.ApplyCharacter(characterData); _currentDialog.Display(playerData, characterData); }
IEnumerator InputGenerationCoroutine() { CodingMamaCharacter character = playerData.GetRandomCharacter(); bool shouldScopeUp = bobController.transform.position.y > 0; if (_random.Next(10) > 6) { // contradict sometimes shouldScopeUp = !shouldScopeUp; } character.SetScopePreference(shouldScopeUp); GameObject dialogItem = Instantiate(prefabDialogItem, dialogHolder.parent); ScopeDialogItem script = dialogItem.GetComponent <ScopeDialogItem>(); EnumScope.Dialog enumScopeDialog; float force; if (shouldScopeUp) { enumScopeDialog = enumScopeUp.GetDialog(); force = enumScopeDialog.value; } else { enumScopeDialog = enumScopeDown.GetDialog(); force = -enumScopeDialog.value; } script.SetData(character, enumScopeDialog.text); bobController.AddExternalForce(force); dialogItem.transform.SetParent(dialogHolder); _dialogList.Add(dialogItem); if (_dialogList.Count > dialogCountLimit) { Destroy(_dialogList[0]); _dialogList.RemoveAt(0); } float randomTime = _random.Next(minGenDuration, maxGenDuration); float elapsedTime = Time.time - _startTime; if (elapsedTime > (gameplayDuration * 0.8)) { randomTime /= 4; } else if (elapsedTime > gameplayDuration / 2) { randomTime /= 2; } yield return(new WaitForSeconds(randomTime)); _inputGenerationCoroutine = InputGenerationCoroutine(); StartCoroutine(_inputGenerationCoroutine); }