TriggerBase.lua 718 B

12345678910111213141516171819202122232425262728293031323334353637
  1. local TriggerBase = {}
  2. function TriggerBase:new(o)
  3. o = o or {}
  4. o.id = o.id or {}
  5. o.fn = o.fn or {}
  6. o.y = o.y or {}
  7. o.e = o.e or {}
  8. setmetatable(o, self)
  9. self.__index = self
  10. return o
  11. end
  12. function TriggerBase:call(event)
  13. self.ERM.activeEvent = event
  14. self.ERM.activeTrigger = self
  15. for _, fn in ipairs(self.fn) do
  16. fn(self.e, self.y)
  17. end
  18. self.ERM.activeTrigger = nil
  19. self.ERM.activeEvent = nil
  20. end
  21. function TriggerBase:addHandler(fn)
  22. table.insert(self.fn, fn)
  23. end
  24. function TriggerBase:checkSub(sub, sub_name)
  25. if type(sub) == "string" then
  26. error(sub_name .. " subscription failed: "..sub)
  27. elseif type(sub) ~= "userdata" then
  28. error(sub_name .. " subscription failed")
  29. end
  30. end
  31. return TriggerBase