1#ifndef MessageManager_H
2#define MessageManager_H
12 Message_CurrentGameChanged,
13 Message_CurrentStyleChanged,
14 Message_PlayModeChanged,
16 Message_CurrentSongChanged,
17 Message_CurrentStepsChanged,
18 Message_GameplayLeadInChanged,
19 Message_GameplayModeChanged,
20 Message_EditStepsTypeChanged,
21 Message_EditCourseDifficultyChanged,
22 Message_EditSourceStepsChanged,
23 Message_EditSourceStepsTypeChanged,
24 Message_PreferredStepsTypeChanged,
25 Message_PreferredDifficultyP1Changed,
26 Message_PreferredDifficultyP2Changed,
27 Message_PreferredCourseDifficultyP1Changed,
28 Message_PreferredCourseDifficultyP2Changed,
29 Message_EditCourseEntryIndexChanged,
30 Message_EditLocalProfileIDChanged,
32 Message_NoteWillCrossIn400Ms,
33 Message_NoteWillCrossIn800Ms,
34 Message_NoteWillCrossIn1200Ms,
35 Message_CardRemovedP1,
36 Message_CardRemovedP2,
48 Message_MenuSelectionChanged,
50 Message_PlayerUnjoined,
51 Message_AutosyncChanged,
52 Message_PreferredSongGroupChanged,
53 Message_PreferredCourseGroupChanged,
54 Message_SortOrderChanged,
58 Message_LessonCleared,
60 Message_StorageDevicesChanged,
61 Message_AutoJoyMappingApplied,
62 Message_ScreenChanged,
64 Message_ScoreMultiplierChangedP1,
65 Message_ScoreMultiplierChangedP2,
66 Message_StarPowerChangedP1,
67 Message_StarPowerChangedP2,
68 Message_CurrentComboChangedP1,
69 Message_CurrentComboChangedP2,
70 Message_StarMeterChangedP1,
71 Message_StarMeterChangedP2,
72 Message_LifeMeterChangedP1,
73 Message_LifeMeterChangedP2,
74 Message_UpdateScreenHeader,
79 Message_MouseWheelDown,
80 Message_ReloadedMetrics,
81 Message_ReloadedScripts,
82 Message_ReloadedOverlayScreens,
83 Message_ReloadedTextures,
84 Message_ReloadedCurrentSong,
85 Message_ReloadedCurrentPack,
86 Message_FavoritesUpdated,
87 Message_PermamirrorUpdated,
89 Message_SpectatorInputUpdate,
90 Message_SpectatorHoldUpdate,
91 Message_SpectatorMineUpdate,
92 Message_SpectatorMissUpdate,
93 Message_SpectatorV2Update,
98MessageIDToString(MessageID m) ->
const std::string&;
102 explicit Message(
const std::string& s);
103 explicit Message(MessageID
id);
107 void SetName(
const std::string& sName) { m_sName = sName; }
108 [[nodiscard]]
auto GetName()
const -> std::string {
return m_sName; }
110 [[nodiscard]]
auto IsBroadcast()
const ->
bool {
return m_bBroadcast; }
111 void SetBroadcast(
const bool b) { m_bBroadcast = b; }
113 void PushParamTable(lua_State* L);
114 [[nodiscard]]
auto GetParamTable()
const ->
const LuaReference&;
117 void GetParamFromStack(lua_State* L,
const std::string& sName)
const;
118 void SetParamFromStack(lua_State* L,
const std::string& sName);
121 auto GetParam(
const std::string& sName, T& val)
const ->
bool
124 GetParamFromStack(L, sName);
125 bool bRet = LuaHelpers::Pop(L, val);
131 void SetParam(
const std::string& sName,
const T& val)
134 LuaHelpers::Push(L, val);
135 SetParamFromStack(L, sName);
140 void SetParam(
const std::string& sName,
const std::vector<T>& val)
143 LuaHelpers::CreateTableFromArray(val, L);
144 SetParamFromStack(L, sName);
148 auto operator==(
const std::string& s)
const ->
bool {
return m_sName == s; }
149 auto operator==(
const MessageID
id)
const ->
bool
151 return MessageIDToString(
id) == m_sName;
174 virtual void HandleMessage(
const Message& msg) = 0;
175 void ClearMessages(
const std::string& sMessage =
"");
191 void SubscribeToMessage(
193 void SubscribeToMessage(
194 const std::string& sMessageName);
196 void UnsubscribeAll();
199 std::vector<std::string> m_vsSubscribedTo;
210 const std::string& sMessage);
213 const std::string& sMessage);
215 void Broadcast(
Message& msg)
const;
216 void Broadcast(
const std::string& sMessage)
const;
217 void Broadcast(MessageID m)
const;
219 const std::string& sMessage) -> bool;
222 const MessageID message) ->
bool
224 return IsSubscribedToMessage(pSubscriber, MessageIDToString(message));
227 void SetLogging(
bool set) { m_Logging = set; }
231 void PushSelf(lua_State* L);
240 MessageID mSendWhenChanged;
247 mSendWhenChanged = m;
249 [[nodiscard]]
auto Get()
const -> T {
return val; }
253 MESSAGEMAN->Broadcast(MessageIDToString(mSendWhenChanged));
255 operator T()
const {
return val; }
256 auto operator==(
const T& other)
const ->
bool {
return val == other; }
257 auto operator!=(
const T& other)
const ->
bool {
return val != other; }
266 LuaHelpers::Push<T>(L, Object.Get());
273 MessageID mSendWhenChanged;
279 mSendWhenChanged = m;
282 [[nodiscard]]
auto Get()
const -> T* {
return val; }
287 MESSAGEMAN->Broadcast(MessageIDToString(mSendWhenChanged));
294 void SetWithoutBroadcast(T* t) { val = t; }
295 operator T*()
const {
return val; }
296 auto operator->()
const -> T* {
return val; }
302 MessageID mSendWhenChanged;
308 mSendWhenChanged = m;
311 [[nodiscard]]
auto Get()
const -> T* {
return val; }
316 Message msg(MessageIDToString(mSendWhenChanged));
317 msg.SetParam(
"ptr", t);
318 MESSAGEMAN->Broadcast(msg);
325 void SetWithoutBroadcast(T* t) { val = t; }
326 operator T*()
const {
return val; }
327 auto operator->()
const -> T* {
return val; }
Definition MessageManager.h:301
Definition MessageManager.h:272
Definition MessageManager.h:239
Definition MessageManager.h:171
A self-cleaning Lua reference.
Definition LuaReference.h:10
Definition LuaReference.h:106
Deliver messages to any part of the program as needed.
Definition MessageManager.h:204
Definition MessageManager.h:182
Utilities for working with Lua.
Definition LuaReference.cpp:172
Definition MessageManager.h:101