MattiasBuelens

MCNet devices/servant

Jun 16th, 2012
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.74 KB | None | 0 0
  1. --[[
  2.  
  3.     Minecraft Intranet
  4.     Servant device
  5.  
  6. --]]
  7.  
  8. mcnet = mcnet or {}
  9. local device = mcnet.device or {}
  10. mcnet.device = device
  11.  
  12. local Servant = common.newClass(device.Device, {
  13.     registerServerMessage = nil,
  14.     registeredServerMessage = nil,
  15.     serverId = nil
  16. })
  17. device.Servant = Servant
  18.  
  19. -- Constructor
  20. function Servant:init()
  21.     device.Device.init(self)
  22.  
  23.     self:addMessageHandler{
  24.         [self.registeredServerMessage] = self.handleRegisteredServer,
  25.         deviceOn = self.handleRegisterServer,
  26.         deviceDetect = self.handleRegisterServer,
  27.         deviceOff = self.handleUnregisterServer
  28.     }
  29. end
  30.  
  31. -- Check if this servant is connected to a server
  32. function Servant:isConnected()
  33.     return self.serverId ~= nil
  34. end
  35.  
  36. -- Check if the given device is a server
  37. function Servant:checkServer(deviceType, deviceAddress)
  38.     return true
  39. end
  40.  
  41. function Servant:handleRegisteredServer(senderId, msg)
  42.     if (self:checkAddress(msg.to)) then
  43.         -- Registered
  44.         self.serverId = senderId
  45.         self.address = msg.to
  46.         self:trigger("registeredServer")
  47.         return true
  48.     end
  49.  
  50.     return false
  51. end
  52.  
  53. function Servant:handleRegisterServer(senderId, msg)
  54.     if (self:checkServer(msg.device, msg.from)) then
  55.         -- Register
  56.         self:trigger("registerServer", senderId)
  57.         self:send(senderId, mcnet.message.new{
  58.             type = self.registerServerMessage
  59.         })
  60.         return true
  61.     end
  62.  
  63.     return false
  64. end
  65.  
  66. function Servant:handleUnregisterServer(senderId, msg)
  67.     if (self.serverId == senderId) then
  68.         -- Unregister
  69.         self:trigger("unregisteredServer", self.serverId)
  70.         self.serverId = nil
  71.         return true
  72.     end
  73.  
  74.     return false
  75. end
Advertisement
Add Comment
Please, Sign In to add comment