add gs
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
local listeners = {}
|
||||
-- listeners is a table that holds arrays of listener objects
|
||||
-- Ex - listeners["login"] = { Listener , Listener, Listener }
|
||||
|
||||
local function createListener(idString, callbackFunction)
|
||||
local Listener = {
|
||||
id = idString,
|
||||
callback = callbackFunction
|
||||
}
|
||||
|
||||
return Listener
|
||||
end
|
||||
|
||||
-- Initialize all the functions for the EventHub
|
||||
local EventHub = {}
|
||||
do
|
||||
function EventHub:addEventListener(eventString, objectIDString, callbackFunction)
|
||||
if (listeners[eventString] == nil) then
|
||||
listeners[eventString] = {}
|
||||
end
|
||||
|
||||
table.insert(listeners[eventString], createListener(objectIDString, callbackFunction))
|
||||
end
|
||||
|
||||
function EventHub:removeEventListener(eventString, objectIDString)
|
||||
if (listeners[eventString] == nil) then return end
|
||||
|
||||
-- iterate through the listeners for an event string, remove all of the listeners with the provided objectIDString
|
||||
for key, value in ipairs(listeners[eventString]) do
|
||||
local listener = value
|
||||
if (listener ~= nil) then
|
||||
if (listener.id == objectIDString) then
|
||||
table.remove(listeners[eventString], key)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function EventHub:removeCallbackFromEvent(eventString, objectIDString, callbackFunction)
|
||||
-- NOTE- Will not work with anonymous functions
|
||||
if (listeners[eventString] == nil) then return end
|
||||
|
||||
-- iterate through the listeners for an event string, remove the one with the provided objectIDString and callback function
|
||||
for key, value in ipairs(listeners[eventString]) do
|
||||
local listener = value
|
||||
if (listener ~= nil) then
|
||||
if (listener.id == objectIDString) and (listener.callback == callbackFunction) then
|
||||
table.remove(listeners[eventString], key)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function EventHub:dispatchEvent(eventString, ...)
|
||||
if (listeners[eventString] == nil) then
|
||||
return
|
||||
end
|
||||
|
||||
-- loop through all the listeners and call the callback function
|
||||
for _, value in ipairs(listeners[eventString]) do
|
||||
value.callback(...)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- A comprehensive list of notification strings to read from
|
||||
EventHub.Notifications = {
|
||||
AuthenticationSuccess = "rbxNotificationAuthenticationSuccess",
|
||||
GameJoin = "rbxNotificationGameJoin",
|
||||
OpenGames = "rbxNotificationOpenGames",
|
||||
OpenGameDetail = "rbxNotificationOpenGameDetail",
|
||||
OpenGameGenre = "rbxNotificationOpenGameGenre",
|
||||
OpenBadgeScreen = "rbxNotificationOpenBadgeScreen",
|
||||
OpenSettingsScreen = "rbxNotificationOpenSettingsScreen",
|
||||
OpenAvatarEditorScreen = "rbxNotificationOpenAvatarEditorScreen",
|
||||
OpenAccountSettingsScreen = "rbxNotificationOpenAccountSettingsScreen",
|
||||
NavigateToEquippedAvatar = "rbxNotificationNavigateToEquippedAvatar",
|
||||
NavigateToRobuxScreen = "rbxNotificationNavigateToRobuxScreen",
|
||||
RobuxCatalogPurchaseInitiated = "rbxRobuxCatalogPurchaseInitiated",
|
||||
DonnedDifferentPackage = "rbxDonnedDifferentPackage",
|
||||
VotedOnPlace = "rbxVotedOnPlace",
|
||||
AvatarEquipBegin = "rbxAvatarEquipBegin",
|
||||
DonnedDifferentOutfit = "rbxDonnedDifferentOutfit",
|
||||
AvatarEquipSuccess = "rbxAvatarEquipSuccess",
|
||||
AvatarPurchaseBegin = "rbxAvatarPurchaseBegin",
|
||||
AvatarPurchaseSuccess = "rbxAvatarPurchaseSuccess",
|
||||
FavoriteToggle = "rbxFavoriteToggle",
|
||||
PlayedGamesChanged = "rbxPlayedGamesChanged",
|
||||
UnlockedUGC = "rbxNotificationUnlockedUGC",
|
||||
|
||||
--Add for avatar editor equip/update
|
||||
CharacterEquipped = "CharacterEquipped",
|
||||
CharacterUpdated = "CharacterUpdated",
|
||||
}
|
||||
end
|
||||
|
||||
return EventHub
|
||||
Reference in New Issue
Block a user