Skip to content

File InputBuffer.h

File List > Battle > Misc > InputBuffer.h

Go to the documentation of this file

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "NightSkyEngine/Battle/Script/State.h"
#include "InputBuffer.generated.h"

constexpr int32 InputSequenceSize = 0x10;
constexpr int32 InputBufferSize = 0x20;

USTRUCT()
struct FInputBuffer
{
    GENERATED_BODY()

private:
    FInputBitmask InputSequence[InputSequenceSize] = {  };
    int32 ImpreciseInputCount = 0;
    TArray<TEnumAsByte<EInputFlags>> DisallowedInputs{};


public:
    int32 InputBufferInternal[InputBufferSize] = { 16 };
    int32 InputTime[InputBufferSize] = {};

    void WriteInputCondition(const FInputCondition& InputCondition);

    void Update(int32 Input, bool bStopped = false);
    void Emplace(int32 Input, uint32 Index);
    bool CheckInputCondition(const FInputCondition& InputCondition);

    bool CheckInputSequence() const;
    bool CheckInputSequenceStrict() const;
    bool CheckInputSequenceOnce() const;
    bool CheckInputSequenceOnceStrict() const;
    bool CheckInputSequencePressAndRelease() const;
    bool CheckInputSequencePressAndReleaseStrict() const;
    bool CheckInputSequenceNegative() const;
    bool CheckInputSequenceNegativeStrict() const;
    void FlipInputsInBuffer();
};