Mercurial > wow > breuesk
comparison Comm.lua @ 99:5914125bb4ea
Admin comms (partially implemented)
| author | John@Yosemite-PC |
|---|---|
| date | Sun, 29 Apr 2012 15:54:32 -0400 |
| parents | 19fd02bff870 |
| children | 21567b74fcc7 |
comparison
equal
deleted
inserted
replaced
| 98:0cd1d46e7b66 | 99:5914125bb4ea |
|---|---|
| 25 | 25 |
| 26 local function SendMessage(str) | 26 local function SendMessage(str) |
| 27 --commlib:SendCommMessage("BSKADDON"..commversion,str,"GUILD") | 27 --commlib:SendCommMessage("BSKADDON"..commversion,str,"GUILD") |
| 28 commlib:SendCommMessage("BSKADDON"..commversion,str,"RAID") | 28 commlib:SendCommMessage("BSKADDON"..commversion,str,"RAID") |
| 29 end | 29 end |
| 30 local function SendAdminMessage(str) | |
| 31 --commlib:SendCommMessage("BSKADMIN"..commversion,str,"GUILD") | |
| 32 commlib:SendCommMessage("BSKADMIN"..commversion,str,"RAID") | |
| 33 end | |
| 30 | 34 |
| 31 local function Send(handler,message) | 35 local function Send(handler,message) |
| 32 local p,str = BuildPacket(handler,message) | 36 local p,str = BuildPacket(handler,message) |
| 33 SendMessage(str) | 37 SendMessage(str) |
| 38 end | |
| 39 | |
| 40 local function SendAdmin(handler,message) | |
| 41 local p,str = BuildPacket(handler,message) | |
| 42 SendAdminMessage(str) | |
| 34 end | 43 end |
| 35 | 44 |
| 36 -- todo: ActivateList and AddReserve -> state | 45 -- todo: ActivateList and AddReserve -> state |
| 37 Comm = | 46 Comm = |
| 38 { | 47 { |
| 117 end, | 126 end, |
| 118 | 127 |
| 119 ["RequestCatchup"] = function(self) | 128 ["RequestCatchup"] = function(self) |
| 120 if not admin then | 129 if not admin then |
| 121 --local string = _g.tostring(timestamp) | 130 --local string = _g.tostring(timestamp) |
| 122 --for i,v in pairs(db.profile.changes) do -- append all change timestamps | 131 --for i,v in ipairs(db.profile.changes) do -- append all change timestamps |
| 123 -- string = string .. "|" .. _g.tostring(v.time) | 132 -- string = string .. "|" .. _g.tostring(v.time) |
| 124 --end | 133 --end |
| 125 local t = {db.profile.time} | 134 local t = {db.profile.time} |
| 126 for i,v in pairs(db.profile.changes) do -- append all change timestamps | 135 for i,v in ipairs(db.profile.changes) do -- append all change timestamps |
| 127 table.insert(t,v.time) | 136 table.insert(t,v.time) |
| 128 end | 137 end |
| 129 Send("TS", t) -- todo: send privately to loot master | 138 Send("TS", t) -- todo: send privately to loot master |
| 130 else | 139 else |
| 131 -- todo: admins talking to one another | 140 -- todo: admins talking to one another |
| 132 end | 141 end |
| 133 | 142 |
| 134 end, | 143 end, |
| 144 | |
| 145 ["SR"] = function(self,packet,sender,isloop) | |
| 146 if isloop then return end | |
| 147 if admin then | |
| 148 RemoteAdminUpdateReceived(sender,packet) | |
| 149 end | |
| 150 end, | |
| 151 | |
| 152 ["SA"] = function(self,packet,sender,isloop) | |
| 153 print("SA") | |
| 154 if isloop then return end | |
| 155 if admin then | |
| 156 SendAdmin("SR",onloadAdminStatus) -- SR ... prevent infinite loop please | |
| 157 RemoteAdminUpdateReceived(sender,packet) | |
| 158 end | |
| 159 end, | |
| 160 | |
| 161 ["SendAdminStatusTable"] = function(self) | |
| 162 if admin and onloadAdminStatus and _G.next(onloadAdminStatus) then | |
| 163 SendAdmin("SA",onloadAdminStatus) -- only send onload status, since that's the only data you're guaranteed to have safely safed | |
| 164 end | |
| 165 end, | |
| 135 } | 166 } |
| 136 | 167 |
| 137 local function OnCommReceived(prefix, message, distribution, sender) | 168 local function OnCommReceived(prefix, message, distribution, sender) |
| 138 print("Received on", distribution) | 169 print("Received on", distribution) |
| 170 local success,packet = s:Deserialize(message) | |
| 171 local isloop = _G.UnitName("player") == sender | |
| 172 | |
| 173 print("received",message) | |
| 174 | |
| 175 Comm[packet[1]](Comm,packet[2],sender,isloop) | |
| 176 end | |
| 177 | |
| 178 local function OnAdminCommReceived(prefix, message, distribution, sender) | |
| 179 print("Received (admin) on", distribution) | |
| 139 local success,packet = s:Deserialize(message) | 180 local success,packet = s:Deserialize(message) |
| 140 local isloop = _G.UnitName("player") == sender | 181 local isloop = _G.UnitName("player") == sender |
| 141 | 182 |
| 142 print("received",message) | 183 print("received",message) |
| 143 | 184 |
| 168 commlib:RegisterComm("BSKADDON"..i,OnNewerCommReceived) | 209 commlib:RegisterComm("BSKADDON"..i,OnNewerCommReceived) |
| 169 end | 210 end |
| 170 end | 211 end |
| 171 | 212 |
| 172 function DeinitializeComm() | 213 function DeinitializeComm() |
| 173 | 214 -- todo |
| 174 end | 215 end |
| 216 | |
| 217 local adminregistered = false | |
| 218 function RegisterAdminChannels() | |
| 219 if not adminregistered then | |
| 220 for i = 0,commversion-1 do | |
| 221 commlib:RegisterComm("BSKADMIN"..i,OnOlderCommReceived) | |
| 222 end | |
| 223 commlib:RegisterComm("BSKADMIN"..commversion,OnAdminCommReceived) | |
| 224 for i = commversion+1,commversion+5 do -- some sensible number | |
| 225 commlib:RegisterComm("BSKADMIN"..i,OnNewerCommReceived) | |
| 226 end | |
| 227 adminregistered = true | |
| 228 | |
| 229 -- now that we're set up, tell the other admins our status | |
| 230 Comm:SendAdminStatusTable() | |
| 231 end | |
| 232 end | |
| 233 | |
| 234 function UnregisterAdminChannels() | |
| 235 -- todo | |
| 236 end | |
| 237 |
