71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UObject/ObjectMacros.h"
|
|
#include "GameSettingValue.h"
|
|
#include "EnhancedActionKeyMapping.h"
|
|
|
|
#include "LyraSettingKeyboardInput.generated.h"
|
|
|
|
//--------------------------------------
|
|
// ULyraSettingKeyboardInput
|
|
//--------------------------------------
|
|
|
|
class UPlayerMappableInputConfig;
|
|
|
|
struct FKeyboardOption
|
|
{
|
|
FKeyboardOption() = default;
|
|
|
|
FEnhancedActionKeyMapping InputMapping {};
|
|
|
|
const UPlayerMappableInputConfig* OwningConfig = nullptr;
|
|
|
|
void ResetToDefault();
|
|
|
|
/** Store the currently set FKey that this is bound to */
|
|
void SetInitialValue(FKey InKey);
|
|
|
|
/** Get the most recently stored initial value */
|
|
FKey GetInitialStoredValue() const { return InitialMapping; };
|
|
|
|
private:
|
|
|
|
/** The key that this option is bound to initially, used in case the user wants to cancel their mapping */
|
|
FKey InitialMapping;
|
|
};
|
|
|
|
UCLASS()
|
|
class ULyraSettingKeyboardInput : public UGameSettingValue
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
ULyraSettingKeyboardInput();
|
|
|
|
/** Initalize this setting widget based off the given mapping */
|
|
void SetInputData(FEnhancedActionKeyMapping& BaseMapping, const UPlayerMappableInputConfig* InOwningConfig, int32 InKeyBindSlot);
|
|
|
|
FText GetPrimaryKeyText() const;
|
|
FText GetSecondaryKeyText() const;
|
|
|
|
virtual void StoreInitial() override;
|
|
virtual void ResetToDefault() override;
|
|
virtual void RestoreToInitial() override;
|
|
|
|
bool ChangeBinding(int32 InKeyBindSlot, FKey NewKey);
|
|
|
|
FText GetSettingDisplayName() const { return FirstMappableOption.InputMapping.PlayerMappableOptions.DisplayName; }
|
|
|
|
protected:
|
|
/** ULyraSetting */
|
|
virtual void OnInitialized() override;
|
|
|
|
protected:
|
|
|
|
FKeyboardOption FirstMappableOption;
|
|
FKeyboardOption SecondaryMappableOption;
|
|
};
|