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,
93MessageIDToString(MessageID m) ->
const std::string&;
97 explicit Message(
const std::string& s);
102 void SetName(
const std::string& sName) { m_sName = sName; }
103 [[nodiscard]]
auto GetName()
const -> std::string {
return m_sName; }
105 [[nodiscard]]
auto IsBroadcast()
const ->
bool {
return m_bBroadcast; }
106 void SetBroadcast(
const bool b) { m_bBroadcast = b; }
108 void PushParamTable(lua_State* L);
109 [[nodiscard]]
auto GetParamTable()
const ->
const LuaReference&;
112 void GetParamFromStack(lua_State* L,
const std::string& sName)
const;
113 void SetParamFromStack(lua_State* L,
const std::string& sName);
116 auto GetParam(
const std::string& sName, T& val)
const ->
bool
119 GetParamFromStack(L, sName);
120 bool bRet = LuaHelpers::Pop(L, val);
126 void SetParam(
const std::string& sName,
const T& val)
129 LuaHelpers::Push(L, val);
130 SetParamFromStack(L, sName);
135 void SetParam(
const std::string& sName,
const std::vector<T>& val)
138 LuaHelpers::CreateTableFromArray(val, L);
139 SetParamFromStack(L, sName);
143 auto operator==(
const std::string& s)
const ->
bool {
return m_sName == s; }
144 auto operator==(
const MessageID
id)
const ->
bool
146 return MessageIDToString(
id) == m_sName;
169 virtual void HandleMessage(
const Message& msg) = 0;
170 void ClearMessages(
const std::string& sMessage =
"");
186 void SubscribeToMessage(
188 void SubscribeToMessage(
189 const std::string& sMessageName);
191 void UnsubscribeAll();
194 std::vector<std::string> m_vsSubscribedTo;
205 const std::string& sMessage);
208 const std::string& sMessage);
210 void Broadcast(
Message& msg)
const;
211 void Broadcast(
const std::string& sMessage)
const;
212 void Broadcast(MessageID m)
const;
214 const std::string& sMessage) -> bool;
217 const MessageID message) ->
bool
219 return IsSubscribedToMessage(pSubscriber, MessageIDToString(message));
222 void SetLogging(
bool set) { m_Logging = set; }
226 void PushSelf(lua_State* L);
235 MessageID mSendWhenChanged;
242 mSendWhenChanged = m;
244 [[nodiscard]]
auto Get()
const -> T {
return val; }
248 MESSAGEMAN->Broadcast(MessageIDToString(mSendWhenChanged));
250 operator T()
const {
return val; }
251 auto operator==(
const T& other)
const ->
bool {
return val == other; }
252 auto operator!=(
const T& other)
const ->
bool {
return val != other; }
261 LuaHelpers::Push<T>(L, Object.Get());
268 MessageID mSendWhenChanged;
274 mSendWhenChanged = m;
277 [[nodiscard]]
auto Get()
const -> T* {
return val; }
282 MESSAGEMAN->Broadcast(MessageIDToString(mSendWhenChanged));
289 void SetWithoutBroadcast(T* t) { val = t; }
290 operator T*()
const {
return val; }
291 auto operator->()
const -> T* {
return val; }
297 MessageID mSendWhenChanged;
303 mSendWhenChanged = m;
306 [[nodiscard]]
auto Get()
const -> T* {
return val; }
311 Message msg(MessageIDToString(mSendWhenChanged));
312 msg.SetParam(
"ptr", t);
313 MESSAGEMAN->Broadcast(msg);
320 void SetWithoutBroadcast(T* t) { val = t; }
321 operator T*()
const {
return val; }
322 auto operator->()
const -> T* {
return val; }
Definition MessageManager.h:296
Definition MessageManager.h:267
Definition MessageManager.h:234
Definition MessageManager.h:166
A self-cleaning Lua reference.
Definition LuaReference.h:10
Definition LuaReference.h:105
Deliver messages to any part of the program as needed.
Definition MessageManager.h:199
Definition MessageManager.h:177
Utilities for working with Lua.
Definition LuaReference.cpp:172
Definition MessageManager.h:96