float lerpedWhammyVal()
    {
        float rawVal = GuitarInput.kNoWhammy;

        rawVal = GuitarInput.GetWhammyInput();

        if (!canWhammy)
        {
            currentWhammyVal = GuitarInput.kNoWhammy;
        }
        else
        {
            if (rawVal > currentWhammyVal)
            {
                currentWhammyVal += whammyLerpSpeed * Time.deltaTime;
                if (currentWhammyVal > rawVal)
                {
                    currentWhammyVal = rawVal;
                }
            }
            else if (rawVal.Round(2) < currentWhammyVal)
            {
                currentWhammyVal -= whammyLerpSpeed * Time.deltaTime;
                if (currentWhammyVal < rawVal)
                {
                    currentWhammyVal = rawVal;
                }
            }
        }

        return(currentWhammyVal);
    }
예제 #2
0
    public void Update(float time, GuitarSustainHitKnowledge sustainKnowledge, uint noteStreak)
    {
        var currentSustains = sustainKnowledge.currentSustains;

        int inputMask            = GuitarInput.GetFretInputMask();
        int extendedSustainsMask = sustainKnowledge.extendedSustainsMask;

        int shiftCount;
        int shiftedExtendedSustainsMask = GameplayInputFunctions.BitshiftToIgnoreLowerUnusedFrets(extendedSustainsMask, out shiftCount);

        foreach (GuitarSustainHitKnowledge.SustainKnowledge sustain in currentSustains.ToArray())     // Take a copy so we can remove as we go
        {
            if (noteStreak == 0)
            {
                BreakSustain(time, sustain);
            }
            else if (extendedSustainsMask != 0)
            {
                int shiftedInputMask = inputMask >> shiftCount;

                if ((shiftedInputMask & ~shiftedExtendedSustainsMask) != 0)
                {
                    BreakSustain(time, sustain);
                }
            }
            else if (!GameplayInputFunctions.ValidateFrets(sustain.note, inputMask, noteStreak))
            {
                BreakSustain(time, sustain);
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        ChartEditor editor = ChartEditor.Instance;

        if (editor.currentState == ChartEditor.State.Playing && !GameSettings.bot)
        {
            Chart.GameMode gameMode = editor.currentChart.gameMode;
            LaneInfo       laneInfo = editor.laneInfo;

            if (gameMode == Chart.GameMode.Drums)
            {
                foreach (Note.DrumPad drumPad in EnumX <Note.DrumPad> .Values)
                {
                    if (bannedDrumPadInputs.ContainsKey(drumPad))
                    {
                        continue;
                    }

                    if (DrumsInput.GetPadPressedInput(drumPad, laneInfo))
                    {
                        animations[(int)drumPad].Press();
                    }
                    else
                    {
                        animations[(int)drumPad].Release();
                    }
                }
            }
            else
            {
                foreach (Note.GuitarFret fret in EnumX <Note.GuitarFret> .Values)
                {
                    if (bannedFretInputs.ContainsKey(fret))
                    {
                        continue;
                    }

                    if (GuitarInput.GetFretInput(fret))
                    {
                        animations[(int)fret].Press();
                    }
                    else
                    {
                        animations[(int)fret].Release();
                    }
                }
            }
        }
        else
        {
            for (int i = 0; i < animations.Length; ++i)
            {
                if (!animations[i].running)
                {
                    animations[i].Release();
                }
            }
        }
    }
예제 #4
0
    public void Update(float time, GuitarSustainHitKnowledge sustainKnowledge)
    {
        var currentSustains = sustainKnowledge.currentSustains;

        float whammyValue = GuitarInput.GetWhammyInput();

        foreach (var sustain in currentSustains)
        {
            foreach (Note note in sustain.note.chord)
            {
                NoteController nCon = note.controller;
                if (nCon != null)
                {
                    nCon.SetDesiredWhammy(whammyValue);
                }
            }
        }
    }
    void UpdateGuitarFretPresses()
    {
        foreach (Note.GuitarFret fret in EnumX <Note.GuitarFret> .Values)
        {
            if (bannedFretInputs.ContainsKey(fret))
            {
                continue;
            }

            if (GuitarInput.GetFretInput(fret))
            {
                animations[(int)fret].Press();
            }
            else
            {
                animations[(int)fret].Release();
            }
        }
    }
    public void Update(float time, HitWindow <GuitarNoteHitKnowledge> hitWindow, uint noteStreak, GuitarSustainHitKnowledge sustainKnowledge)
    {
        // Capture input
        bool strum     = GuitarInput.GetStrumInput();
        int  inputMask = GuitarInput.GetFretInputMask();

        if (inputMask != previousInputMask)
        {
            canTap = true;
        }

        if (strum)
        {
            WriteInputToChart(time, inputMask);
        }

        // What note is the player trying to hit next?
        GuitarNoteHitKnowledge nextNoteToHit = hitWindow.oldestUnhitNote;

        UpdateNoteKnowledge(time, hitWindow, inputMask, strum, noteStreak, nextNoteToHit, sustainKnowledge);

        if (nextNoteToHit != null)
        {
            Note nextSeperate = nextNoteToHit.note.nextSeperateNote;

            if (noteStreak > 0)
            {
                PreserveStreakDetect(time, hitWindow, strum, noteStreak, nextNoteToHit, inputMask);
            }
            else
            {
                RecoveryDetect(time, hitWindow, inputMask, strum, noteStreak);
            }
        }
        // No note in window
        else
        {
            BlankWindowDetect(time, strum);
        }

        previousInputMask = inputMask;
    }
예제 #7
0
    // Update is called once per frame
    void Update()
    {
        ChartEditor editor = ChartEditor.Instance;

        if (editor.currentState == ChartEditor.State.Playing && !GameSettings.bot)
        {
            Chart.GameMode gameMode = editor.currentChart.gameMode;
            LaneInfo       laneInfo = editor.laneInfo;

            if (gameMode == Chart.GameMode.Drums)
            {
                foreach (Note.DrumPad drumPad in EnumX <Note.DrumPad> .Values)
                {
                    if (bannedDrumPadInputs.ContainsKey(drumPad))
                    {
                        continue;
                    }

                    bool lanePressed = false;
                    switch (GameSettings.drumsModeOptions)
                    {
                    case GameSettings.DrumModeOptions.ProDrums:
                    {
                        lanePressed = DrumsInput.GetTomPressedInput(drumPad, laneInfo) || DrumsInput.GetCymbalPressedInput(drumPad, laneInfo);
                        break;
                    }

                    default:
                    {
                        lanePressed = DrumsInput.GetPadPressedInput(drumPad, laneInfo);
                        break;
                    }
                    }

                    if (lanePressed)
                    {
                        animations[(int)drumPad].Press();
                    }
                    else
                    {
                        animations[(int)drumPad].Release();
                    }
                }
            }
            else
            {
                foreach (Note.GuitarFret fret in EnumX <Note.GuitarFret> .Values)
                {
                    if (bannedFretInputs.ContainsKey(fret))
                    {
                        continue;
                    }

                    if (GuitarInput.GetFretInput(fret))
                    {
                        animations[(int)fret].Press();
                    }
                    else
                    {
                        animations[(int)fret].Release();
                    }
                }
            }
        }
        else
        {
            for (int i = 0; i < animations.Length; ++i)
            {
                if (!animations[i].running)
                {
                    animations[i].Release();
                }
            }
        }
    }