TM.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. local ReceiverBase = require("core:erm.ReceiverBase")
  2. local TM = ReceiverBase:new()
  3. local bit = bit
  4. local band, bor, bxor = bit.band, bit.bor, bit.bxor
  5. local ALL_PLAYERS = 0xFF
  6. local DATA = DATA
  7. DATA.ERM.timers = DATA.ERM.timers or {}
  8. local timers = DATA.ERM.timers
  9. local function newTimer(timerId)
  10. return
  11. {
  12. id = timerId,
  13. dayFirst = 1,
  14. dayLast = 1,
  15. interval = 0,
  16. players = 0
  17. }
  18. end
  19. local function getTimer(timerId)
  20. timerId = tostring(timerId)
  21. timers[timerId] = timers[timerId] or newTimer(timerId)
  22. return timers[timerId]
  23. end
  24. function TM:new(ERM, timerId)
  25. assert(timerId ~= nil, "!!TM requires timer identifier")
  26. return ReceiverBase.new(self,
  27. {
  28. timerId = timerId,
  29. timer = getTimer(timerId),
  30. ERM = ERM
  31. })
  32. end
  33. function TM:D(x, playerMask)
  34. --disable by mask
  35. self.timer.players = band(self.timer.players, bnot(playerMask), ALL_PLAYERS)
  36. end
  37. function TM:E(x, playerMask)
  38. --enable by mask
  39. self.timer.players = bor(self.timer.players, playerMask)
  40. end
  41. function TM:S(x, dayFirst, dayLast, interval, playerMask)
  42. local t = self.timer
  43. t.dayFirst = dayFirst
  44. t.dayLast = dayLast
  45. t.interval = interval
  46. t.players = playerMask
  47. end
  48. return TM