86 lines
1.9 KiB
Lua
86 lines
1.9 KiB
Lua
-----------------------------------
|
|
-- Seasonal Events Handler
|
|
-----------------------------------
|
|
xi = xi or {}
|
|
xi.events = xi.events or {}
|
|
xi.events.handler = xi.events.handler or {}
|
|
|
|
-- Seasonal Event Type
|
|
SeasonalEvent = {}
|
|
SeasonalEvent.__index = SeasonalEvent
|
|
SeasonalEvent.__eq = function(c1, c2)
|
|
return c1.id == c2.id
|
|
end
|
|
|
|
function SeasonalEvent:new(id)
|
|
local obj = {}
|
|
setmetatable(obj, self)
|
|
obj.id = id
|
|
obj.isEnabled = false
|
|
obj.enableCheck = function()
|
|
return false
|
|
end
|
|
|
|
obj.startFunc = {}
|
|
obj.endFunc = {}
|
|
return obj
|
|
end
|
|
|
|
function SeasonalEvent:setEnableCheck(enableCheck)
|
|
self.enableCheck = enableCheck
|
|
return self
|
|
end
|
|
|
|
function SeasonalEvent:setStartFunction(func)
|
|
self.startFunc = func
|
|
return self
|
|
end
|
|
|
|
function SeasonalEvent:setEndFunction(func)
|
|
self.endFunc = func
|
|
return self
|
|
end
|
|
|
|
function SeasonalEvent:checkStarting()
|
|
local isEnabled = self.enableCheck()
|
|
if isEnabled then
|
|
print('Starting Seasonal Event: ' .. self.id)
|
|
self:startFunc()
|
|
end
|
|
|
|
return self
|
|
end
|
|
|
|
function SeasonalEvent:checkEnding()
|
|
local isEnabled = self:enableCheck()
|
|
if not isEnabled then
|
|
print('Ending Seasonal Event: ' .. self.id)
|
|
self:endFunc()
|
|
end
|
|
|
|
return self
|
|
end
|
|
|
|
-- NOTE: Since this is caching require'd tables, this system won't easily
|
|
-- : work with Lua hot-reloading (yet)!
|
|
xi.events.registeredEvents =
|
|
{
|
|
require('scripts/events/starlight_celebration'),
|
|
require('scripts/events/egg_hunt_egg-stravaganza'),
|
|
require('scripts/events/mog_bonanza'),
|
|
require('scripts/events/strange_happenings'),
|
|
}
|
|
|
|
xi.events.handler.checkSeasonalEvents = function()
|
|
print('Checking Seasonal Events')
|
|
|
|
for _, event in pairs(xi.events.registeredEvents) do
|
|
event:checkEnding()
|
|
end
|
|
|
|
for _, event in pairs(xi.events.registeredEvents) do
|
|
event:checkStarting()
|
|
end
|
|
end
|
|
|
|
return xi.events.handler
|