CommonLibVR
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  private:
24  KEEP_FOR_RE()
25  };
26  static_assert(sizeof(PerkData) == 0x5);
27 
28  class BGSPerk :
29  public TESForm, // 00
30  public TESFullName, // 20
31  public TESDescription, // 30
32  public TESIcon // 40
33  {
34  public:
35  inline static constexpr auto RTTI = RTTI_BGSPerk;
36  inline static constexpr auto VTABLE = VTABLE_BGSPerk;
37  inline static constexpr auto FORMTYPE = FormType::Perk;
38 
39  struct RecordFlags
40  {
41  enum RecordFlag : std::uint32_t
42  {
43  kNonPlayable = 1 << 2,
44  kDeleted = 1 << 5,
45  kIgnored = 1 << 12
46  };
47  };
48 
50  {
51  public:
52  inline static constexpr auto RTTI = RTTI_BGSPerk__FindPerkInRanksVisitor;
53  inline static constexpr auto VTABLE = VTABLE_BGSPerk__FindPerkInRanksVisitor;
54 
55  // override (PerkRankVisitor)
56  bool operator()(const PerkRankData* a_entry) override; // 00
57  };
58  static_assert(sizeof(FindPerkInRanksVisitor) == 0x8);
59 
61  {
62  public:
63  inline static constexpr auto RTTI = RTTI_BGSPerk__ApplyPerksVisitor;
64  inline static constexpr auto VTABLE = VTABLE_BGSPerk__ApplyPerksVisitor;
65 
66  // override (PerkRankVisitor)
67  bool operator()(const PerkRankData* a_entry) override; // 00
68  };
69  static_assert(sizeof(ApplyPerksVisitor) == 0x8);
70 
72  {
73  public:
74  inline static constexpr auto RTTI = RTTI_BGSPerk__AddPerkVisitor;
75  inline static constexpr auto VTABLE = VTABLE_BGSPerk__AddPerkVisitor;
76 
77  // override (PerkRankVisitor)
78  bool operator()(const PerkRankData* a_entry) override; // 00
79  };
80  static_assert(sizeof(AddPerkVisitor) == 0x8);
81 
82  ~BGSPerk() override; // 00
83 
84  // override (TESForm)
85  void InitializeData() override; // 04
86  void ClearData() override; // 05
87  bool Load(TESFile* a_mod) override; // 06
88  void InitItemImpl() override; // 13
89 
90  // members
91  PerkData data; // 50 - DATA
92  std::uint8_t pad55; // 55
93  std::uint16_t pad56; // 56
96  BGSPerk* nextPerk; // 78 - NNAM
97  private:
98  KEEP_FOR_RE()
99  };
100  static_assert(sizeof(BGSPerk) == 0x80);
101 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BGSPerk.h:72
static constexpr auto VTABLE
Definition: BGSPerk.h:75
bool operator()(const PerkRankData *a_entry) override
static constexpr auto RTTI
Definition: BGSPerk.h:74
Definition: BGSPerk.h:61
static constexpr auto RTTI
Definition: BGSPerk.h:63
static constexpr auto VTABLE
Definition: BGSPerk.h:64
bool operator()(const PerkRankData *a_entry) override
Definition: BGSPerk.h:50
bool operator()(const PerkRankData *a_entry) override
static constexpr auto VTABLE
Definition: BGSPerk.h:53
static constexpr auto RTTI
Definition: BGSPerk.h:52
Definition: BGSPerk.h:33
static constexpr auto VTABLE
Definition: BGSPerk.h:36
BGSPerk * nextPerk
Definition: BGSPerk.h:96
static constexpr auto FORMTYPE
Definition: BGSPerk.h:37
std::uint8_t pad55
Definition: BGSPerk.h:92
bool Load(TESFile *a_mod) override
std::uint16_t pad56
Definition: BGSPerk.h:93
void InitializeData() override
static constexpr auto RTTI
Definition: BGSPerk.h:35
void ClearData() override
PerkData data
Definition: BGSPerk.h:91
BSTArray< BGSPerkEntry * > perkEntries
Definition: BGSPerk.h:95
TESCondition perkConditions
Definition: BGSPerk.h:94
~BGSPerk() override
void InitItemImpl() override
Definition: BSTArray.h:378
Definition: PerkRankVisitor.h:10
Definition: TESCondition.h:992
Definition: TESDescription.h:12
Definition: TESFile.h:17
Definition: TESForm.h:40
Definition: TESFullName.h:9
Definition: TESIcon.h:8
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 4 > VTABLE_BGSPerk
Definition: Offsets_VTABLE.h:8711
constexpr REL::ID RTTI_BGSPerk__AddPerkVisitor(static_cast< std::uint64_t >(686894))
constexpr REL::ID RTTI_BGSPerk__ApplyPerksVisitor(static_cast< std::uint64_t >(686875))
constexpr REL::ID RTTI_BGSPerk__FindPerkInRanksVisitor(static_cast< std::uint64_t >(686874))
constexpr std::array< REL::ID, 1 > VTABLE_BGSPerk__FindPerkInRanksVisitor
Definition: Offsets_VTABLE.h:8716
constexpr std::array< REL::ID, 1 > VTABLE_BGSPerk__AddPerkVisitor
Definition: Offsets_VTABLE.h:8714
constexpr REL::ID RTTI_BGSPerk(static_cast< std::uint64_t >(513872))
constexpr std::array< REL::ID, 1 > VTABLE_BGSPerk__ApplyPerksVisitor
Definition: Offsets_VTABLE.h:8715
Definition: BGSPerk.h:40
RecordFlag
Definition: BGSPerk.h:42
@ kDeleted
Definition: BGSPerk.h:44
@ kNonPlayable
Definition: BGSPerk.h:43
@ kIgnored
Definition: BGSPerk.h:45
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