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