Skip to content

Commit 81ef3e0

Browse files
authored
Merge pull request #8 from SkyHorizon3/main
feat: Menu related and misc stuff
2 parents ab23313 + 9558f75 commit 81ef3e0

25 files changed

Lines changed: 939 additions & 5 deletions

include/RE/F/FILE_HEADER.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
struct FILE_HEADER
6+
{
7+
public:
8+
// members
9+
float version; // 00
10+
std::uint32_t formCount; // 04
11+
std::uint32_t nextFormID; // 08
12+
};
13+
static_assert(sizeof(FILE_HEADER) == 0xC);
14+
}

include/RE/F/FORM.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,15 @@ namespace RE
1111
std::uint32_t flags; // 08
1212
TESFormID formID; // 0C
1313
std::uint32_t versionControl; // 10
14-
std::uint16_t formVersion; // 14
15-
std::uint16_t vcVersion; // 16
1614
};
17-
static_assert(sizeof(FORM) == 0x18);
15+
static_assert(sizeof(FORM) == 0x14);
1816

1917
struct FORM_GROUP
2018
{
2119
public:
2220
// members
2321
FORM groupData; // 00
24-
std::uint64_t groupOffset; // 18
22+
std::uint32_t groupOffset; // 14
2523
};
26-
static_assert(sizeof(FORM_GROUP) == 0x20);
24+
static_assert(sizeof(FORM_GROUP) == 0x18);
2725
}

include/RE/G/GAMEPAD_BUTTON.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
enum class GAMEPAD_BUTTON : std::int32_t
6+
{
7+
kButtonNone = 0,
8+
kButtonDPadUp = 1,
9+
kButtonDPadDown = 2,
10+
kButtonDPadRight = 3,
11+
kButtonDPadLeft = 4,
12+
kButtonStart = 5,
13+
kButtonBack = 6,
14+
kButtonLThumb = 7,
15+
kButtonRThumb = 8,
16+
kButtonA = 9,
17+
kButtonB = 10,
18+
kButtonX = 11,
19+
kButtonY = 12,
20+
kButtonLT = 13,
21+
kButtonRT = 14,
22+
kButtonLB = 15,
23+
kButtonRB = 16,
24+
kButtonDownEvent = 2,
25+
kButtonUpEvent = 1,
26+
kButtonStillDownEvent = 0,
27+
kButtonIdleEvent = -1,
28+
kButtonClick = -2,
29+
};
30+
31+
}

include/RE/H/HUDEffectIcon.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#pragma once
2+
3+
#include "RE/B/BSTList.h"
4+
5+
namespace RE
6+
{
7+
class Tile;
8+
9+
class HUDEffectIcon
10+
{
11+
public:
12+
// members
13+
Tile* tile; // 00
14+
BSSimpleList<void*>* fxList; // 08 - BSSimpleList<ActiveEffect*>*
15+
};
16+
static_assert(sizeof(HUDEffectIcon) == 0x10);
17+
}

include/RE/H/HUDInfoMenu.h

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#pragma once
2+
3+
#include "RE/M/Menu.h"
4+
5+
namespace RE
6+
{
7+
class TESObjectREFR;
8+
class Tile;
9+
10+
class HUDInfoMenu :
11+
public Menu
12+
{
13+
public:
14+
inline static constexpr auto RTTI = RTTI::HUDInfoMenu;
15+
inline static constexpr auto VTABLE = VTABLE::HUDInfoMenu;
16+
17+
virtual ~HUDInfoMenu() override; // 07
18+
19+
// override (IVPairableItem)
20+
virtual void ProcessPairItem() override; // 01
21+
virtual void ProcessUnpairItem() override; // 02
22+
23+
// override (Menu)
24+
virtual void AttachTileByID(std::int32_t a_ID, Tile* a_tile) override; // 08
25+
virtual void DoIdle() override; // 12
26+
virtual std::int32_t GetClass() override; // 14
27+
virtual void StartFadeOut() override; // 16
28+
virtual void StartFadeIn() override; // 18
29+
30+
// members
31+
Tile* name; // 50
32+
Tile* value; // 58
33+
Tile* weight; // 60
34+
Tile* damage; // 68
35+
Tile* armor; // 70
36+
Tile* quality; // 78
37+
Tile* health; // 80
38+
Tile* uses; // 88
39+
Tile* dest; // 90
40+
Tile* lock; // 98
41+
Tile* actionHint; // A0
42+
TESObjectREFR* lastObject; // A8
43+
std::int32_t updateCounter; // B0
44+
bool skipFadeIn; // B4
45+
};
46+
static_assert(sizeof(HUDInfoMenu) == 0xB8);
47+
48+
}

include/RE/H/HUDMainMenu.h

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#pragma once
2+
3+
#include "RE/I/IconArray.h"
4+
#include "RE/M/Menu.h"
5+
6+
namespace RE
7+
{
8+
class TESQuestTarget;
9+
class Tile;
10+
11+
class HUDMainMenu :
12+
public Menu
13+
{
14+
public:
15+
inline static constexpr auto RTTI = RTTI::HUDMainMenu;
16+
inline static constexpr auto VTABLE = VTABLE::HUDMainMenu;
17+
18+
enum class MENU_POSITION : std::int32_t
19+
{
20+
kMENU_POSITION_NONE = -1,
21+
kMENU_POSITION_A = 0,
22+
kMENU_POSITION_B = 1,
23+
kMENU_POSITION_C = 2,
24+
kMENU_POSITION_D = 3,
25+
kMENU_POSITION_COUNT = 4,
26+
};
27+
28+
virtual ~HUDMainMenu() override; // 07
29+
30+
// override (IVPairableItem)
31+
virtual void ProcessPairItem() override; // 01
32+
virtual void ProcessUnpairItem() override; // 02
33+
34+
// override (Menu)
35+
virtual void AttachTileByID(std::int32_t a_ID, Tile* a_tile) override; // 08
36+
virtual void DoDownClick(std::int32_t a_ID, Tile* a_target) override; // 09
37+
virtual void DoClick(std::int32_t a_ID, Tile* a_target) override; // 0A
38+
virtual void DoStillDown(std::int32_t a_ID, Tile* a_target) override; // 0F
39+
virtual void DoIdle() override; // 12
40+
virtual std::int32_t GetClass() override; // 14
41+
virtual void StartFadeOut() override; // 16
42+
virtual void StartFadeIn() override; // 18
43+
44+
// members
45+
Tile* background; // 050
46+
Tile* health; // 058
47+
Tile* magic; // 060
48+
Tile* fatigue; // 068
49+
Tile* weapon; // 070
50+
Tile* spell; // 078
51+
Tile* compass; // 080
52+
Tile* compassFace; // 088
53+
Tile* frame; // 090
54+
Tile* playerGrab; // 098
55+
Tile* activeFXIcons; // 0A0
56+
Tile* levelupIcon; // 0A8
57+
Tile* brackets; // 0B0
58+
REX::Enum<MENU_POSITION, std::int32_t> currentLoc; // 0B8
59+
REX::Enum<MENU_POSITION, std::int32_t> destLoc; // 0BC
60+
BSSimpleList<TESQuestTarget*>* questList; // 0C0
61+
float mouseDownX; // 0C8
62+
float mouseDownY; // 0CC
63+
float zoomPos; // 0D0
64+
std::uint32_t killRegionDisplay; // 0D4
65+
IconArray activeFX; // 0D8
66+
bool isVisible; // 100
67+
};
68+
static_assert(sizeof(HUDMainMenu) == 0x108);
69+
}

include/RE/H/HUDReticle.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
3+
#include "RE/M/Menu.h"
4+
5+
namespace RE
6+
{
7+
class HUDReticle :
8+
public Menu
9+
{
10+
public:
11+
inline static constexpr auto RTTI = RTTI::HUDReticle;
12+
inline static constexpr auto VTABLE = VTABLE::HUDReticle;
13+
14+
virtual ~HUDReticle() override; // 07
15+
16+
// override (Menu)
17+
virtual void AttachTileByID(std::int32_t a_ID, Tile* a_tile) override; // 08
18+
virtual std::int32_t GetClass() override; // 14
19+
};
20+
static_assert(sizeof(HUDReticle) == 0x50);
21+
}

include/RE/I/IconArray.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#pragma once
2+
3+
#include "RE/H/HUDEffectIcon.h"
4+
#include "RE/N/NiTArray.h"
5+
6+
namespace RE
7+
{
8+
class HUDEffectIcon;
9+
10+
class IconArray :
11+
public NiTLargeArray<HUDEffectIcon>
12+
{
13+
public:
14+
virtual ~IconArray() override;
15+
16+
// add
17+
virtual HUDEffectIcon* RemoveAt(std::uint32_t a_index); // 01
18+
19+
// members
20+
std::uint8_t numFading; // 00
21+
};
22+
static_assert(sizeof(IconArray) == 0x28);
23+
24+
}

include/RE/IDs.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ namespace RE::ID
3434
inline constexpr REL::Offset SetString{ 0x6710B70 };
3535
}
3636

37+
namespace TESDataHandler
38+
{
39+
inline constexpr REL::Offset Singleton{ 0x94B5C98 };
40+
}
41+
3742
namespace TESForm
3843
{
3944
inline constexpr REL::Offset AllForms{ 0x8FDDD30 };
@@ -45,6 +50,12 @@ namespace RE::ID
4550
inline constexpr REL::Offset GetInterior{ 0x65A8400 };
4651
}
4752

53+
namespace Tile
54+
{
55+
inline constexpr REL::Offset GetMenuByClass{ 0x671B0C0 };
56+
inline constexpr REL::Offset GetMenu{ 0x671B070 };
57+
}
58+
4859
inline constexpr REL::Offset RTDynamicCast{ 0x6C23656 };
4960
}
5061

include/RE/M/MENU_CLASS.h

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
enum class MENU_CLASS : std::int32_t
6+
{
7+
kNoMenu = 0x0,
8+
kMainFour = 0x1,
9+
kOtherRoot = 0x2,
10+
kConsoleMenu = 0x3,
11+
12+
kMessageMenu = 0x3E9,
13+
kInventoryMenu = 0x3EA,
14+
kStatsMenu = 0x3EB,
15+
kHUDMainMenu = 0x3EC,
16+
kHUDInfoMenu = 0x3ED,
17+
kHUDReticle = 0x3EE,
18+
kLoadingMenu = 0x3EF,
19+
kContainerMenu = 0x3F0,
20+
kDialogMenu = 0x3F1,
21+
kHUDSubtitleMenu = 0x3F2,
22+
kGenericMenu = 0x3F3,
23+
kSleepWaitMenu = 0x3F4,
24+
kPauseMenu = 0x3F5,
25+
kLockPickMenu = 0x3F6,
26+
kOptionsMenu = 0x3F7,
27+
kQuantityMenu = 0x3F8,
28+
kAudioMenu = 0x3F9,
29+
kVideoMenu = 0x3FA,
30+
kVideoDisplayMenu = 0x3FB,
31+
kGameplayMenu = 0x3FC,
32+
kControlsMenu = 0x3FD,
33+
kMagicMenu = 0x3FE,
34+
kMapMenu = 0x3FF,
35+
kMagicPopupMenu = 0x400,
36+
kNegotiateMenu = 0x401,
37+
kBookMenu = 0x402,
38+
kLevelUpMenu = 0x403,
39+
kTrainingMenu = 0x404,
40+
kBirthSignMenu = 0x405,
41+
kClassMenu = 0x406,
42+
kSkillsMenu = 0x408,
43+
kPersuasionMenu = 0x40A,
44+
kRepairMenu = 0x40B,
45+
kRaceSexMenu = 0x40C,
46+
kSpellPurchaseMenu = 0x40D,
47+
kLoadMenu = 0x40E,
48+
kSaveMenu = 0x40F,
49+
kAlchemyMenu = 0x410,
50+
kSpellMakingMenu = 0x411,
51+
kEnchantmentMenu = 0x412,
52+
kEffectSettingMenu = 0x413,
53+
kMainMenu = 0x414,
54+
kBreathMenu = 0x415,
55+
kQuickKeysMenu = 0x416,
56+
kCreditsMenu = 0x417,
57+
kSigilStoneMenu = 0x418,
58+
kRechargeMenu = 0x419,
59+
kDownloadsMenu = 0x41A,
60+
kTextEditMenu = 0x41B,
61+
};
62+
}

0 commit comments

Comments
 (0)