LeviLamina
Loading...
Searching...
No Matches
NpcComponent.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/entity/components_json_legacy/NpcGUIOffset.h"
7#include "mc/legacy/ActorUniqueID.h"
8#include "mc/world/actor/ActorDataIDs.h"
9#include "mc/world/actor/npc/ActionContainer.h"
10
11// auto generated forward declare list
12// clang-format off
13class Actor;
15class CompoundTag;
16class DataLoadHelper;
18class NpcI18nObserver;
19class Player;
20struct SkinData;
21namespace Json { class Value; }
22namespace npc { struct CommandAction; }
23namespace npc { struct UrlAction; }
24// clang-format on
25
26class NpcComponent {
27public:
28 // NpcComponent inner types define
29 using TextFilter = ::std::function<::std::string(::std::string const&)>;
30
31public:
32 // member variables
33 // NOLINTBEGIN
34 ::ll::TypedStorage<4, 4, int> mCurrentSkin;
35 ::ll::TypedStorage<4, 36, ::NpcGUIOffset> mPortraitOffsets;
36 ::ll::TypedStorage<4, 36, ::NpcGUIOffset> mPickerOffsets;
37 ::ll::TypedStorage<8, 24, ::std::vector<::SkinData>> mNPCSkins;
38 ::ll::TypedStorage<8, 48, ::npc::ActionContainer> mActionsContainer;
39 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ActorUniqueID, ::std::string>> mPlayerSceneState;
40 ::ll::TypedStorage<8, 32, ::std::string> mDefaultSceneId;
41 ::ll::TypedStorage<8, 40, ::std::optional<::std::string>> mInteractText;
42 ::ll::TypedStorage<8, 64, ::std::function<::std::string(::std::string const&)>> mInteractTextFilter;
43 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::NpcI18nObserver>> mNpcI18nObserver;
44 ::ll::TypedStorage<1, 1, bool> mIsGloballyAccessed;
45 // NOLINTEND
46
47public:
48 // prevent constructor by default
49 NpcComponent& operator=(NpcComponent const&);
50 NpcComponent(NpcComponent const&);
51
52public:
53 // virtual functions
54 // NOLINTBEGIN
55 virtual ~NpcComponent();
56 // NOLINTEND
57
58public:
59 // member functions
60 // NOLINTBEGIN
61 MCAPI NpcComponent();
62
63 MCAPI NpcComponent(::NpcComponent&& rhs);
64
65 MCAPI void _defineEntityDataString(::Actor& owner, ::ActorDataIDs id);
66
67 MCAPI void _deserializeData(::Json::Value const& npcData);
68
69 MCAPI void _loadData(::Actor& owner);
70
71#ifdef LL_PLAT_C
72 MCAPI void addAction(::std::variant<::npc::CommandAction, ::npc::UrlAction>&& action);
73#endif
74
75 MCAPI void addAdditionalSaveData(::CompoundTag& tag, ::Actor const& owner) const;
76
77 MCAPI void clearSceneStateForAllPlayers();
78
79 MCAPI void executeClosingCommands(::Actor& owner, ::Player& sourcePlayer, ::std::string const& sceneName);
80
81 MCAPI void
82 executeCommandAction(::Actor& owner, ::Player& sourcePlayer, int actionIndex, ::std::string const& sceneName);
83
84 MCAPI void executeOpeningCommands(::Actor& owner, ::Player& sourcePlayer, ::std::string const& sceneName);
85
86#ifdef LL_PLAT_C
87 MCAPI ::std::variant<::npc::CommandAction, ::npc::UrlAction>* getActionAt(uint64 index);
88
89 MCAPI uint64 getActionCount() const;
90#endif
91
92 MCFOLD ::npc::ActionContainer& getActionsContainer();
93
94 MCAPI ::std::vector<int> getCommandCounts() const;
95
96 MCFOLD ::std::string const& getDefaultSceneId() const;
97
98 MCAPI ::InteractionResult getInteraction(::Actor& owner, ::Player& player, ::ActorInteraction& interaction);
99
100#ifdef LL_PLAT_C
101 MCAPI ::std::string const& getInteractiveRawText(::Actor const& owner) const;
102#endif
103
104 MCAPI ::std::string const& getInteractiveText(::Actor& owner) const;
105
106 MCAPI ::std::string const& getName(::Actor const& owner) const;
107
108 MCAPI ::std::string const& getNameRawText(::Actor const& owner) const;
109
110#ifdef LL_PLAT_C
111 MCFOLD ::NpcGUIOffset const& getPickerOffset() const;
112
113 MCFOLD ::NpcGUIOffset const& getPortraitOffset() const;
114#endif
115
116 MCAPI ::std::string const& getSceneStateForPlayer(::ActorUniqueID const& playerID) const;
117
118#ifdef LL_PLAT_C
119 MCAPI ::SkinData const& getSelectedSkinData() const;
120#endif
121
122 MCAPI uint64 getSkinCount() const;
123
124#ifdef LL_PLAT_C
125 MCAPI ::SkinData const& getSkinData(int index) const;
126#endif
127
128 MCAPI int getSkinIndex() const;
129
130 MCAPI int getUrlCount() const;
131
132 MCAPI void initClientOnlyData(::Actor& owner);
133
134 MCAPI void initFromDefinition(::Actor& owner);
135
136 MCFOLD bool isGloballyAccessed() const;
137
138 MCAPI void loadActions(::Actor& owner);
139
140 MCAPI void loadInteractiveRawText(::Actor& owner);
141
142 MCAPI void loadNPCData(::Actor& owner);
143
144 MCAPI void loadNameRawText(::Actor& owner);
145
146 MCAPI ::NpcComponent& operator=(::NpcComponent&& rhs);
147
148 MCAPI void readAdditionalSaveData(::Actor& owner, ::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper);
149
150#ifdef LL_PLAT_C
151 MCAPI void removeActionAt(uint64 index);
152
153 MCAPI void removeInteractiveTextFilter();
154#endif
155
156 MCAPI ::std::string sanitizeRawText(::std::string const& rawText) const;
157
158 MCAPI void setDefaultSceneId(::std::string sceneId);
159
160 MCAPI bool setDialogueScene(::Actor& owner, ::std::string const& sceneName);
161
162 MCAPI void setInteractiveText(::Actor& owner, ::std::string const& text, bool setLocal);
163
164#ifdef LL_PLAT_C
165 MCAPI void
166 setInteractiveTextFilter(::std::function<::std::string(::std::string const&)> filter, bool shouldRunFilter);
167#endif
168
169 MCAPI void setIsGloballyAccessed();
170
171 MCAPI void setName(::Actor& owner, ::std::string const& name, bool setLocal);
172
173 MCAPI void setSceneStateForPlayer(::Actor& owner, ::ActorUniqueID const& playerID, ::std::string const& sceneName);
174
175 MCAPI bool setSkinIndex(::Actor& owner, int skinIndex, bool setLocal);
176
177 MCAPI void syncActionsWithClient(::Actor& owner);
178
179#ifdef LL_PLAT_C
180 MCAPI void syncActionsWithServer(::Actor& owner) const;
181#endif
182 // NOLINTEND
183
184public:
185 // static variables
186 // NOLINTBEGIN
187 MCAPI static ::std::string const& ACTIONS_TAG();
188
189 MCAPI static ::std::string const& INTERACTIVE_TAG();
190
191 MCAPI static ::std::string const& NAME_RAW_TEXT_TAG();
192
193 MCAPI static ::std::string const& PLAYER_ID_TAG();
194
195 MCAPI static ::std::string const& PLAYER_SCENE_MAPPING_TAG();
196
197 MCAPI static ::std::string const& SCENE_NAME_TAG();
198
199 MCAPI static ::std::string const& URL_TAG();
200 // NOLINTEND
201
202public:
203 // constructor thunks
204 // NOLINTBEGIN
205 MCAPI void* $ctor();
206
207 MCAPI void* $ctor(::NpcComponent&& rhs);
208 // NOLINTEND
209
210public:
211 // destructor thunk
212 // NOLINTBEGIN
213 MCAPI void $dtor();
214 // NOLINTEND
215
216public:
217 // vftables
218 // NOLINTBEGIN
219 MCNAPI static void** $vftable();
220 // NOLINTEND
221};
Definition ActorInteraction.h:8
Definition Actor.h:125
Definition CompoundTag.h:23
Definition DataLoadHelper.h:20
Definition InteractionResult.h:5
Definition Value.h:16
static MCAPI void ** $vftable()
Definition NpcI18nObserver.h:15
Definition Player.h:137
Definition ActorUniqueID.h:10
Definition SkinData.h:11
Definition CommandAction.h:17
Definition UrlAction.h:11