forked from Ryan-rsm-McKenzie/CommonLibF4
-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: Dialogue-system centered declarations. * feat: Update 3 IDs. * feat: Declare `TESResponse`.
- Loading branch information
1 parent
383b878
commit 6fe6fb5
Showing
7 changed files
with
311 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,228 @@ | ||
#pragma once | ||
|
||
#include "RE/Bethesda/BSTArray.h" | ||
#include "RE/Bethesda/BSTSmartPointer.h" | ||
#include "RE/Bethesda/TESCondition.h" | ||
#include "RE/Bethesda/TESForms.h" | ||
|
||
namespace RE | ||
{ | ||
class Actor; | ||
class BGSScene; | ||
class BGSKeyword; | ||
class BGSSoundDescriptorForm; | ||
class BGSSoundOutput; | ||
class BSInputEnableLayer; | ||
class TESCondition; | ||
class TESPackage; | ||
class TESQuest; | ||
class TESTopic; | ||
|
||
class __declspec(novtable) BGSSceneAction | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneAction }; | ||
static constexpr auto VTABLE{ VTABLE::BGSSceneAction }; | ||
|
||
struct STARTSCENEACTIONDATA | ||
{ | ||
BGSScene* pScene; | ||
std::uint16_t sceneStartPhase; | ||
TESQuest* parentQuest; | ||
TESCondition sceneConditions; | ||
}; | ||
|
||
enum SCENE_ACTION_PLAYER_RESPONSE_TYPE : std::uint32_t | ||
{ | ||
kPositive = 0, | ||
kNegative = 1, | ||
kNeutral = 2, | ||
kQuestion = 3, | ||
kTotal = 4, | ||
kNone | ||
}; | ||
|
||
enum SCENE_ACTION_TYPE : std::uint32_t | ||
{ | ||
kDialogue = 0, | ||
kPackage = 1, | ||
kTimer = 2, | ||
kPlayerDialogue = 3, | ||
kStartScene = 4, | ||
kNPCResponse = 5, | ||
kRadio = 6, | ||
}; | ||
|
||
enum class Flag | ||
{ | ||
kPlayerUseDialogueSubtypePositive = 1 << 7, | ||
kPlayerUseDialogueSubtypeNegative = 1 << 8, | ||
kPlayerUseDialogueSubtypeNeutral = 1 << 9, | ||
kUseDialogueSubtype = 1 << 10, | ||
kPlayerUseDialogueSubtypeQuestion = 1 << 11, | ||
kFaceTaget = 1 << 15, | ||
kHeadTrackPlayer = 1 << 17, | ||
kIngoreForCompletion = 1 << 19, | ||
kCameraSpeakerTarget = 1 << 21 | ||
}; | ||
|
||
enum class Status | ||
{ | ||
kStopped, | ||
kRunning, | ||
kComplete | ||
}; | ||
|
||
virtual ~BGSSceneAction(); // 00 | ||
|
||
// add | ||
virtual void Unk_01(void); // 01 | ||
virtual void Unk_02(void); // 02 | ||
virtual void Unk_03(void); // 03 | ||
virtual void Unk_04(void); // 04 | ||
virtual void Unk_05(void); // 05 | ||
virtual bool QIsLooping(void); // 06 | ||
virtual bool QFaceHeadTrackTarget(const BGSScene* scene); // 07 | ||
virtual SCENE_ACTION_TYPE GetActionType() const = 0; // 08 | ||
virtual bool QActionCanEnd(); // 09 | ||
virtual bool IsPackageActive(BGSScene* scene, TESPackage* package, Actor* actor); // 0A | ||
virtual void Unk_0B(void); // 0B | ||
virtual void Unk_0C(void); // 0C | ||
virtual void Unk_0D(void); // 0D | ||
virtual void Unk_0E(void); // 0E | ||
virtual void Unk_0F(void); // 0F | ||
virtual void Unk_10(void); // 10 | ||
virtual void Unk_11(void); // 11 | ||
virtual void StartAction(BGSScene* scene); // 12 | ||
virtual void EndAction(BGSScene* scene); // 13 | ||
virtual void CleanUpActionActor(void); // 14 | ||
virtual void UpdateAction(BGSScene* scene); // 14 | ||
|
||
// members | ||
std::uint32_t actorID; // 08 | ||
std::uint16_t startPhase; // 0C | ||
std::uint16_t endPhase; // 0E | ||
stl::enumeration<Flag, std::uint32_t> flags; // 10 | ||
stl::enumeration<Status, std::uint8_t> status; // 14 | ||
std::uint32_t uniqueID; // 18 | ||
}; | ||
static_assert(sizeof(BGSSceneAction) == 0x20); | ||
|
||
class __declspec(novtable) BGSSceneActionDialogue : | ||
public BGSSceneAction | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneActionDialogue }; | ||
static constexpr auto VTABLE{ VTABLE::BGSSceneActionDialogue }; | ||
|
||
// members | ||
TESTopic* topic; // 20 | ||
float fMaxLoopTime; // 28 | ||
float fMinLoopTime; // 2C | ||
BSTArray<std::uint32_t> iHeadTrackTargetA; // 30 | ||
float fCurrentLoopTimer; // 48 | ||
BGSKeyword* pAnimFaceArchType; // 50 | ||
BGSKeyword* pSubtypeKeyword; // 58 | ||
BGSSoundOutput* outputModel; // 60 | ||
BSTSmartPointer<BSInputEnableLayer> pInputLayer; // 68 | ||
std::uint32_t iHeadTargetValue; // 74 | ||
float fHeadTrackChangeTimer; // 78 | ||
}; | ||
static_assert(sizeof(BGSSceneActionDialogue) == 0x78); | ||
|
||
class __declspec(novtable) BGSSceneActionConversationBase : | ||
public BGSSceneAction | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneActionConversationBase }; | ||
static constexpr auto VTABLE{ VTABLE::BGSSceneActionConversationBase }; | ||
|
||
TESTopic* responseTopics[4]; // 20 | ||
BGSKeyword* pResponseSubtypeKeywords[4]; // 40 | ||
BGSSoundOutput* pOutputModel; // 60 | ||
BSTArray<std::uint32_t> iHeadTrackTargetA; // 68 | ||
std::uint32_t iHeadTargetValue; // 80 | ||
float fHeadTrackChangeTimer; // 84 | ||
TESTopic* currentTopic; // 88 | ||
}; | ||
static_assert(sizeof(BGSSceneActionConversationBase) == 0x90); | ||
|
||
class __declspec(novtable) BGSSceneActionPlayerDialogue : | ||
public BGSSceneActionConversationBase | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneActionPlayerDialogue }; | ||
static constexpr auto VTABlE{ VTABLE::BGSSceneActionPlayerDialogue }; | ||
|
||
std::uint64_t dialogueTarget; // 90 | ||
TESTopic* pNPCResponseTopics[4]; // 98 | ||
BGSKeyword* pNPCResponseSubtypeKeywords[4]; // B8 | ||
TESTopic* pTopic; // D8 | ||
SCENE_ACTION_PLAYER_RESPONSE_TYPE playerInput; // E0 | ||
}; | ||
static_assert(sizeof(BGSSceneActionPlayerDialogue) == 0xE8); | ||
|
||
class __declspec(novtable) BGSSceneActionNPCResponseDialogue : public BGSSceneActionConversationBase { }; | ||
|
||
class __declspec(novtable) BGSSceneActionStartScene : | ||
public BGSSceneAction | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneActionStartScene }; | ||
static constexpr auto VTABlE{ VTABLE::BGSSceneActionStartScene }; | ||
|
||
BSTArray<STARTSCENEACTIONDATA*> scenesA; // 20 | ||
BGSScene* scene; // 38 | ||
std::uint16_t sceneStartPhase; // 40 | ||
bool endSceneSayGreeting; // 42 | ||
}; | ||
static_assert(sizeof(BGSSceneActionStartScene) == 0x48); | ||
|
||
class __declspec(novtable) BGSSceneActionTimer : | ||
public BGSSceneAction | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneActionTimer }; | ||
static constexpr auto VTABlE{ VTABLE::BGSSceneActionTimer }; | ||
|
||
float fSeconds; // 20 | ||
float fMinSeconds; // 24 | ||
float fTimer; // 28 | ||
bool scriptEndRun; // 2C | ||
bool runEnd; // 2D | ||
float fCurrentSeconds; // 30 | ||
}; | ||
static_assert(sizeof(BGSSceneActionTimer) == 0x38); | ||
|
||
class __declspec(novtable) BGSSceneActionRadio : | ||
public BGSSceneAction | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneActionRadio }; | ||
static constexpr auto VTABlE{ VTABLE::BGSSceneActionRadio }; | ||
|
||
TESTopic* topic; // 20 | ||
BGSSoundDescriptorForm* sound; // 28 | ||
BGSSoundOutput* outputModel; // 30 | ||
BGSKeyword* subtypeKeyword; // 38 | ||
BGSSoundDescriptorForm* topicSound; // 40 | ||
float fSoundDuration; // 48 | ||
std::uint32_t soundID; // 4C | ||
bool soundDone; // 50 | ||
TESTopic* currentTopic; // 58 | ||
float fFailTimer; // 60 | ||
}; | ||
static_assert(sizeof(BGSSceneActionRadio) == 0x68); | ||
|
||
class __declspec(novtable) BGSSceneActionPackage : | ||
public BGSSceneAction | ||
{ | ||
public: | ||
static constexpr auto RTTI{ RTTI::BGSSceneActionPackage }; | ||
static constexpr auto VTABlE{ VTABLE::BGSSceneActionPackage }; | ||
|
||
std::uint32_t currentPackIndex; // 20 | ||
BSTArray<TESPackage*> packages; // 28 | ||
}; | ||
static_assert(sizeof(BGSSceneActionPackage) == 0x40); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters