11#pragma once
22
33#include " RE/B/BSStringT.h"
4+ #include " RE/B/BSTList.h"
45#include " RE/M/MENU_CLASS.h"
56#include " RE/N/NiTList.h"
67
@@ -15,11 +16,88 @@ namespace RE
1516 inline static constexpr auto RTTI = RTTI::Tile;
1617 inline static constexpr auto VTABLE = VTABLE::Tile;
1718
18- struct Action ; // sizeof(Action) == 0x30
19+ struct TileTemplate ;
20+ struct TileTemplateItem ;
21+ struct Value ;
1922
20- struct FadeControl
23+ enum class enumAction : std::int32_t
24+ {
25+ hNullAction = 0x0 ,
26+ hGroupStart = 0xA ,
27+ hGroupEnd = 0xF ,
28+ hActionStart = 0x14 ,
29+ hActionEnd = 0x19 ,
30+ hTraitStart = 0x1E ,
31+ hTraitEnd = 0x23 ,
32+ hTileStart = 0x28 ,
33+ hTileEnd = 0x2D ,
34+ hSimpleTrait = 0x32 ,
35+ hSimpleAction = 0x37 ,
36+ hTraitLink = 0x3C ,
37+ hTop = 0x65 ,
38+ hCopy = 0x7D1 ,
39+ hFirstAction = 0x7D1 ,
40+ hAdd = 0x7D2 ,
41+ hSub = 0x7D3 ,
42+ hMult = 0x7D4 ,
43+ hDiv = 0x7D5 ,
44+ hRand = 0x7D6 ,
45+ hUser = 0x7D7 ,
46+ hGt = 0x7D8 ,
47+ hGte = 0x7D9 ,
48+ hEq = 0x7DA ,
49+ hLte = 0x7DB ,
50+ hLt = 0x7DC ,
51+ hMin = 0x7DD ,
52+ hMax = 0x7DE ,
53+ hAnd = 0x7DF ,
54+ hOr = 0x7E0 ,
55+ hNeq = 0x7E1 ,
56+ hMod = 0x7E2 ,
57+ hTrunc = 0x7E3 ,
58+ hAbs = 0x7E4 ,
59+ hOnlyIf = 0x7E5 ,
60+ hOnlyIfNot = 0x7E6 ,
61+ hLn = 0x7E7 ,
62+ hLog = 0x7E8 ,
63+ hCeil = 0x7E9 ,
64+ hNot = 0x7EA ,
65+ hRef = 0x7EB ,
66+ hLastAction = 0x7EB ,
67+ };
68+
69+ struct Action
2170 {
71+ private:
72+ union union_t
73+ {
74+ float value;
75+ Value* owner;
76+ enumAction groupType;
77+ };
78+
2279 public:
80+ Action* prevAction; // 00
81+ Action* nextAction; // 08
82+ union_t value; // 10
83+ enumAction action; // 18
84+ Action* prevReaction; // 20
85+ Action* nextReaction; // 28
86+ };
87+ static_assert (sizeof (Action) == 0x30 );
88+
89+ struct BuildStorage
90+ {
91+ // members
92+ TileTemplate* _template; // 00
93+ BSSimpleList<TileTemplate*> subTemplates; // 08
94+ TileTemplate* currentTemplate; // 18
95+ bool deleteTemplates; // 20
96+ };
97+ static_assert (sizeof (BuildStorage) == 0x28 );
98+
99+ struct FadeControl
100+ {
23101 // members
24102 Tile* parent; // 00
25103 std::int32_t trait; // 08
@@ -30,9 +108,46 @@ namespace RE
30108 };
31109 static_assert (sizeof (FadeControl) == 0x20 );
32110
33- struct Value
111+ struct StringListElement
34112 {
113+ // members
114+ std::int32_t index; // 00
115+ std::int32_t accessCount; // 04
116+ BSString string; // 08
117+ };
118+ static_assert (sizeof (StringListElement) == 0x18 );
119+
120+ struct TileTemplate
121+ {
122+ // members
123+ BSString name; // 00
124+ BuildStorage* parent; // 10
125+ NiTList<TileTemplateItem*> list; // 18
126+ };
127+ static_assert (sizeof (TileTemplate) == 0x38 );
128+
129+ struct TileTemplateItem
130+ {
131+ private:
132+ union union_t
133+ {
134+ std::int32_t ta;
135+ Tile* tile;
136+ TileTemplate* _template;
137+ };
138+
35139 public:
140+ // members
141+ std::int32_t cmd; // 00
142+ float val; // 04
143+ BSString str; // 08
144+ union_t u; // 18
145+ std::int32_t line; // 20
146+ };
147+ static_assert (sizeof (TileTemplateItem) == 0x28 );
148+
149+ struct Value
150+ {
36151 // members
37152 Tile* parent; // 00
38153 float value; // 08
0 commit comments