CommonLibVR
BGSScene.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/T/TESCondition.h"
6 #include "RE/T/TESForm.h"
7 
8 namespace RE
9 {
10  class BGSSceneAction;
11 
12  enum class SCENE_ACTOR_FLAG // LNAM
13  {
14  kNone = 0,
15  kNoPlayerActivation = 1 << 0,
16  kOptional = 1 << 1,
17  kRunOnlyScenePackages = 1 << 2,
18  kNoCommandState = 1 << 3
19  };
20 
22  {
23  public:
24  // members
28  private:
29  KEEP_FOR_RE()
30  };
31  static_assert(sizeof(BGSScenePhase) == 0x18);
32 
33  class BGSScene : public TESForm
34  {
35  public:
36  inline static constexpr auto RTTI = RTTI_BGSScene;
37  inline static constexpr auto VTABLE = VTABLE_BGSScene;
38  inline static constexpr auto FORMTYPE = FormType::Scene;
39 
40  enum class Flag
41  {
42  kNone = 0,
43  kBeginOnQuestStart = 1 << 0,
44  kStopOnQuestEnd = 1 << 1,
46  kInterruptible = 1 << 4
47  };
48 
49  enum class BehaviourFlag // DNAM
50  {
51  kNone = 0,
52  kDeathPause = 1 << 0, // unused
53  kDeathEnd = 1 << 1,
54  kCombatPause = 1 << 2,
55  kCombatEnd = 1 << 3,
56  kDialoguePause = 1 << 4,
57  kDialogueEnd = 1 << 5,
58  kOBS_COMPause = 1 << 6,
59  kOBS_COMEnd = 1 << 7
60  };
61 
62  struct ChangeFlags
63  {
64  enum ChangeFlag : std::uint32_t
65  {
66  kActive = (std::uint32_t)1 << 31
67  };
68  };
69 
70  struct RecordFlags
71  {
72  enum RecordFlag : std::uint32_t
73  {
74  kDeleted = 1 << 5,
75  kIgnored = 1 << 12
76  };
77  };
78 
79  ~BGSScene() override; // 00
80 
81  // override (TESForm)
82  void InitializeData() override; // 05
83  bool Load(TESFile* a_mod) override; // 06
84  void SaveGame(BGSSaveFormBuffer* a_buf) override; // 0E
85  void LoadGame(BGSLoadFormBuffer* a_buf) override; // 0F
86  void InitLoadGame(BGSLoadFormBuffer* a_buf) override; // 10
87  void Revert(BGSLoadFormBuffer* a_buf) override; // 12
88  void InitItemImpl() override; // 13
89 
90  // members
92  BSTArray<FormID> actors; // 00 - ALID
96  TESQuest* parentQuest; // 98 - PNAM
98  std::uint32_t padA4; // A4
99  TESCondition conditions; // A8 - CTDA
100  bool isPlaying; // B0
101  std::uint8_t unkB1; // B1
102  std::uint8_t unkB2; // B2
103  std::uint8_t unkB3; // B3
104  std::uint32_t unkB4; // B4
105  std::uint32_t unkB8; // B8
106  std::uint32_t unkBC; // BC
107  std::uint32_t unkC0; // C0
108  std::uint32_t padC4; // C4
109  private:
110  KEEP_FOR_RE()
111  };
112  static_assert(sizeof(BGSScene) == 0xC8);
113 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BGSLoadFormBuffer.h:11
Definition: BGSSaveFormBuffer.h:8
Definition: BGSScene.h:22
TESCondition startConditions
Definition: BGSScene.h:25
BGSStoryManagerQuestNode * questNode
Definition: BGSScene.h:27
TESCondition completionConditions
Definition: BGSScene.h:26
Definition: BGSScene.h:34
TESCondition conditions
Definition: BGSScene.h:99
BSTArray< BGSSceneAction * > actions
Definition: BGSScene.h:95
BSTArray< FormID > actors
Definition: BGSScene.h:92
std::uint8_t unkB2
Definition: BGSScene.h:102
void LoadGame(BGSLoadFormBuffer *a_buf) override
static constexpr auto RTTI
Definition: BGSScene.h:36
BehaviourFlag
Definition: BGSScene.h:50
std::uint8_t unkB1
Definition: BGSScene.h:101
static constexpr auto VTABLE
Definition: BGSScene.h:37
void InitializeData() override
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
BSTArray< stl::enumeration< SCENE_ACTOR_FLAG, std::uint32_t > > actorFlags
Definition: BGSScene.h:93
bool isPlaying
Definition: BGSScene.h:100
bool Load(TESFile *a_mod) override
std::uint32_t padA4
Definition: BGSScene.h:98
stl::enumeration< Flag, std::uint32_t > flags
Definition: BGSScene.h:97
std::uint8_t unkB3
Definition: BGSScene.h:103
void InitItemImpl() override
~BGSScene() override
std::uint32_t unkBC
Definition: BGSScene.h:106
void SaveGame(BGSSaveFormBuffer *a_buf) override
std::uint32_t padC4
Definition: BGSScene.h:108
std::uint32_t unkB4
Definition: BGSScene.h:104
std::uint32_t unkC0
Definition: BGSScene.h:107
void Revert(BGSLoadFormBuffer *a_buf) override
Flag
Definition: BGSScene.h:41
static constexpr auto FORMTYPE
Definition: BGSScene.h:38
std::uint32_t unkB8
Definition: BGSScene.h:105
BSTArray< stl::enumeration< BehaviourFlag, std::uint32_t > > actorProgressionFlags
Definition: BGSScene.h:94
TESQuest * parentQuest
Definition: BGSScene.h:96
BSTArray< BGSScenePhase * > phases
Definition: BGSScene.h:91
Definition: BGSStoryManagerQuestNode.h:11
Definition: BSTArray.h:378
Definition: TESCondition.h:992
Definition: TESFile.h:17
Definition: TESForm.h:40
Definition: TESQuest.h:197
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_BGSScene
Definition: Offsets_VTABLE.h:8852
SCENE_ACTOR_FLAG
Definition: BGSScene.h:13
constexpr REL::ID RTTI_BGSScene(static_cast< std::uint64_t >(513909))
@ kNone
Definition: BGSScene.h:63
ChangeFlag
Definition: BGSScene.h:65
@ kActive
Definition: BGSScene.h:66
Definition: BGSScene.h:71
RecordFlag
Definition: BGSScene.h:73
@ kIgnored
Definition: BGSScene.h:75
@ kDeleted
Definition: BGSScene.h:74