CommonLibSSE NG
BGSPerk.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSTArray.h"
4 #include "RE/F/FormTypes.h"
5 #include "RE/P/PerkRankVisitor.h"
6 #include "RE/T/TESCondition.h"
7 #include "RE/T/TESDescription.h"
8 #include "RE/T/TESForm.h"
9 #include "RE/T/TESFullName.h"
10 #include "RE/T/TESIcon.h"
11 
12 namespace RE
13 {
14  class BGSPerkEntry;
15 
16  struct PerkData // DATA
17  {
18  bool trait; // 0
19  std::int8_t level; // 1
20  std::int8_t numRanks; // 2
21  bool playable; // 3
22  bool hidden; // 4
23  };
24  static_assert(sizeof(PerkData) == 0x5);
25 
26  class BGSPerk :
27  public TESForm, // 00
28  public TESFullName, // 20
29  public TESDescription, // 30
30  public TESIcon // 40
31  {
32  public:
33  inline static constexpr auto RTTI = RTTI_BGSPerk;
34  inline static constexpr auto VTABLE = VTABLE_BGSPerk;
35  inline static constexpr auto FORMTYPE = FormType::Perk;
36 
37  struct RecordFlags
38  {
39  enum RecordFlag : std::uint32_t
40  {
41  kNonPlayable = 1 << 2,
42  kDeleted = 1 << 5,
43  kIgnored = 1 << 12
44  };
45  };
46 
48  {
49  public:
50  inline static constexpr auto RTTI = RTTI_BGSPerk__FindPerkInRanksVisitor;
51 
52  // override (PerkRankVisitor)
53  bool operator()(const PerkRankData* a_entry) override; // 00
54  };
55  static_assert(sizeof(FindPerkInRanksVisitor) == 0x8);
56 
58  {
59  public:
60  inline static constexpr auto RTTI = RTTI_BGSPerk__ApplyPerksVisitor;
61 
62  // override (PerkRankVisitor)
63  bool operator()(const PerkRankData* a_entry) override; // 00
64  };
65  static_assert(sizeof(ApplyPerksVisitor) == 0x8);
66 
68  {
69  public:
70  inline static constexpr auto RTTI = RTTI_BGSPerk__AddPerkVisitor;
71 
72  // override (PerkRankVisitor)
73  bool operator()(const PerkRankData* a_entry) override; // 00
74  };
75  static_assert(sizeof(AddPerkVisitor) == 0x8);
76 
77  ~BGSPerk() override; // 00
78 
79  // override (TESForm)
80  void InitializeData() override; // 04
81  void ClearData() override; // 05
82  bool Load(TESFile* a_mod) override; // 06
83  void InitItemImpl() override; // 13
84 
85  // members
86  PerkData data; // 50 - DATA
87  std::uint8_t pad55; // 55
88  std::uint16_t pad56; // 56
91  BGSPerk* nextPerk; // 78 - NNAM
92  };
93  static_assert(sizeof(BGSPerk) == 0x80);
94 }
Definition: BGSPerk.h:68
bool operator()(const PerkRankData *a_entry) override
static constexpr auto RTTI
Definition: BGSPerk.h:70
Definition: BGSPerk.h:58
static constexpr auto RTTI
Definition: BGSPerk.h:60
bool operator()(const PerkRankData *a_entry) override
Definition: BGSPerk.h:48
bool operator()(const PerkRankData *a_entry) override
static constexpr auto RTTI
Definition: BGSPerk.h:50
Definition: BGSPerk.h:31
static constexpr auto VTABLE
Definition: BGSPerk.h:34
BGSPerk * nextPerk
Definition: BGSPerk.h:91
static constexpr auto FORMTYPE
Definition: BGSPerk.h:35
std::uint8_t pad55
Definition: BGSPerk.h:87
bool Load(TESFile *a_mod) override
std::uint16_t pad56
Definition: BGSPerk.h:88
void InitializeData() override
static constexpr auto RTTI
Definition: BGSPerk.h:33
void ClearData() override
PerkData data
Definition: BGSPerk.h:86
BSTArray< BGSPerkEntry * > perkEntries
Definition: BGSPerk.h:90
TESCondition perkConditions
Definition: BGSPerk.h:89
~BGSPerk() override
void InitItemImpl() override
Definition: BSTArray.h:377
Definition: PerkRankVisitor.h:10
Definition: TESCondition.h:992
Definition: TESDescription.h:12
Definition: TESFile.h:17
Definition: TESForm.h:36
Definition: TESFullName.h:9
Definition: TESIcon.h:8
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_BGSPerk__AddPerkVisitor(686894, 394743, 0x1f07790)
constexpr REL::VariantID RTTI_BGSPerk__FindPerkInRanksVisitor(686874, 394723, 0x1f07088)
constexpr REL::VariantID RTTI_BGSPerk__ApplyPerksVisitor(686875, 394724, 0x1f070c0)
constexpr std::array< REL::VariantID, 4 > VTABLE_BGSPerk
Definition: Offsets_VTABLE.h:890
constexpr REL::VariantID RTTI_BGSPerk(513872, 392257, 0x1ed7540)
Definition: BGSPerk.h:38
RecordFlag
Definition: BGSPerk.h:40
@ kDeleted
Definition: BGSPerk.h:42
@ kNonPlayable
Definition: BGSPerk.h:41
@ kIgnored
Definition: BGSPerk.h:43
Definition: BGSPerk.h:17
bool playable
Definition: BGSPerk.h:21
std::int8_t level
Definition: BGSPerk.h:19
bool trait
Definition: BGSPerk.h:18
bool hidden
Definition: BGSPerk.h:22
std::int8_t numRanks
Definition: BGSPerk.h:20
Definition: BGSPerkRankArray.h:11