87 lines
3.5 KiB
C++
87 lines
3.5 KiB
C++
#pragma once
|
|
|
|
#include "RE/B/BSSoundHandle.h"
|
|
#include "RE/G/GameMenuBase.h"
|
|
#include "RE/N/NiMatrix3.h"
|
|
#include "RE/N/NiPoint3.h"
|
|
#include "RE/N/NiPointer.h"
|
|
|
|
namespace RE
|
|
{
|
|
class NiControllerManager;
|
|
class NiControllerSequence;
|
|
class NiNode;
|
|
|
|
class __declspec(novtable) LockpickingMenu :
|
|
public GameMenuBase // 00
|
|
{
|
|
public:
|
|
static constexpr auto RTTI{ RTTI::LockpickingMenu };
|
|
static constexpr auto VTABLE{ VTABLE::LockpickingMenu };
|
|
static constexpr auto MENU_NAME{ "LockpickingMenu"sv };
|
|
|
|
virtual ~LockpickingMenu(); // 00
|
|
|
|
// override (GameMenuBase)
|
|
virtual UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 03
|
|
virtual void AdvanceMovie(float a_timeDelta, std::uint64_t a_time) override; // 04
|
|
virtual bool OnButtonEventRelease(const BSFixedString& a_eventName) override; // 0F
|
|
|
|
// override (BSInputEventUser)
|
|
virtual bool ShouldHandleEvent(const InputEvent*) override; // 01
|
|
virtual void OnThumbstickEvent(const ThumbstickEvent*) override; // 04
|
|
virtual void OnMouseMoveEvent(const MouseMoveEvent*) override; // 06
|
|
virtual void OnButtonEvent(const ButtonEvent*) override; // 08
|
|
|
|
static void OpenLockpickingMenu(TESObjectREFR* a_lockedRef)
|
|
{
|
|
using func_t = decltype(&LockpickingMenu::OpenLockpickingMenu);
|
|
static REL::Relocation<func_t> func{ ID::LockpickingMenu::OpenLockpickingMenu };
|
|
return func(a_lockedRef);
|
|
}
|
|
|
|
static void DamageLockpick()
|
|
{
|
|
using func_t = decltype(&LockpickingMenu::DamageLockpick);
|
|
static REL::Relocation<func_t> func{ ID::LockpickingMenu::DamageLockpick };
|
|
return func();
|
|
}
|
|
|
|
// members
|
|
NiMatrix3 origPickRotate; // 0E0
|
|
NiPoint3 origPickTranslate; // 110
|
|
NiControllerManager* lockAnimManager; // 120
|
|
NiControllerSequence* lockIntroAnim; // 128
|
|
NiControllerSequence* lockRotateAnim; // 130
|
|
NiControllerManager* pickAnimManager; // 138
|
|
NiControllerSequence* pickIntroAnim; // 140
|
|
NiControllerSequence* pickBendAnim; // 148
|
|
NiControllerSequence* pickBreakAnim; // 150
|
|
NiControllerSequence* currPickAnim; // 158
|
|
NiControllerSequence* currLockAnim; // 160
|
|
void* lockModel; // 168
|
|
void* pickModel; // 170
|
|
NiPointer<NiNode> lockRoot; // 178
|
|
float currPickAnimElapsedSecs; // 180
|
|
float currLockAnimElapsedSecs; // 184
|
|
float pickAngle; // 188
|
|
float lockAngle; // 18C
|
|
float lockDamagePickAngle; // 190
|
|
float pickBreakSecs; // 194
|
|
BSSoundHandle pickTensionSound; // 198
|
|
float sweetSpotCenter; // 1A0
|
|
float sweetSpotLength; // 1A4
|
|
float partialPickLength; // 1A8
|
|
std::uint32_t picksBroken; // 1AC
|
|
bool modelsInit; // 1B0
|
|
bool animating; // 1B1
|
|
bool turningLock; // 1B2
|
|
bool menuCleanedUp; // 1B3
|
|
bool tutorialMenuOpening; // 1B4
|
|
bool crimeDetected; // 1B5
|
|
bool VATSWasEnabled; // 1B6
|
|
bool VATSDepthTestMask; // 1B7
|
|
};
|
|
static_assert(sizeof(LockpickingMenu) == 0x1C0);
|
|
}
|