コード例 #1
0
    public void HandleEvent(WaveEvents ev)
    {
        Debug.Log("Event " + ev.ToString());

        if (!IsStarted())
        {
            return;
        }

        switch (GetState())
        {
        case WaveStates.Initial:
            if (ev == WaveEvents.Wave_Initial)
            {
                WriteLog("Initial Target Waved");
                ChangeState(WaveStates.Delay);
            }
            break;

        case WaveStates.Target:
            if ((int)ev == currentLight && randomProbability <= collisionProbability)
            {
                WriteLog("Probability for Wave " + currentWave + ": " + randomProbability);
                trialController.correctWaves++;

                lightResults = LightResults.Correct;
                ChangeState(WaveStates.Feedback);
            }
            else if ((int)ev == currentLight && randomProbability > collisionProbability)
            {
                WriteLog("Probability for Wave " + currentWave + ": " + randomProbability);
            }
            else if ((int)ev != currentLight)
            {
                lightResults = LightResults.Incorrect;
                trialController.incorrectWaves++;
                ChangeState(WaveStates.Feedback);
            }
            break;

        case WaveStates.End:
            break;
        }
    }
コード例 #2
0
    public void Update()
    {
        if (!IsStarted())
        {
            return;
        }

        switch (GetState())
        {
        case WaveStates.Idle:
            if (GetTimeInState() > 0.25f)
            {
                ChangeState(WaveStates.Initial);
            }
            break;

        case WaveStates.Initial:
            if (GetTimeInState() > 0.25f && !initialLightOn)
            {
                TurnOnInitial();
            }
            break;

        case WaveStates.Delay:
            if (GetTimeInState() > 0.5f && !targetLightOn)
            {
                ChangeState(WaveStates.Target);
            }
            break;

        case WaveStates.Target:
            // Wait between the lights turning on and off
            if (GetTimeInState() > collisionDelay && targetLightOn && !targetColliderOn)
            {
                collisionLights.SetActive(true);
                targetColliderOn = true;
            }
            if (GetTimeInState() > waveTimeOut && targetLightOn)
            {
                trialController.lateWaves++;

                lightResults = LightResults.Late;
                ChangeState(WaveStates.Feedback);
            }
            break;

        case WaveStates.Feedback:
            if (GetTimeInState() > 0.25f && !feedbackOn)
            {
                GiveFeedback();
            }
            if (GetTimeInState() > 1.5f && feedbackOn)
            {
                ChangeState(WaveStates.Interval);
            }
            break;

        case WaveStates.End:
            break;
        }
    }