comparison AskMrRobot-Serializer/AskMrRobot-Serializer.lua @ 133:a0894ffebd15 v62

Bug fixes and tweaks for 8.0.
author yellowfive
date Wed, 25 Jul 2018 12:17:24 -0700
parents 318c93e0cd6b
children 57be71eccc0a
comparison
equal deleted inserted replaced
132:2279d58793c6 133:a0894ffebd15
1 -- AskMrRobot-Serializer will serialize and communicate character data between users. 1 -- AskMrRobot-Serializer will serialize and communicate character data between users.
2 2
3 local MAJOR, MINOR = "AskMrRobot-Serializer", 61 3 local MAJOR, MINOR = "AskMrRobot-Serializer", 62
4 local Amr, oldminor = LibStub:NewLibrary(MAJOR, MINOR) 4 local Amr, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
5 5
6 if not Amr then return end -- already loaded by something else 6 if not Amr then return end -- already loaded by something else
7 7
8 -- event and comm used for player snapshotting on entering combat 8 -- event and comm used for player snapshotting on entering combat
282 end 282 end
283 end 283 end
284 284
285 -- returns true if currently in a supported instance for logging 285 -- returns true if currently in a supported instance for logging
286 function Amr.IsSupportedInstance() 286 function Amr.IsSupportedInstance()
287 local zone, _, difficultyIndex, _, _, _, _, instanceMapID = GetInstanceInfo() 287 local _, _, _, _, _, _, _, instanceMapID = GetInstanceInfo()
288 return Amr.IsSupportedInstanceId(instanceMapID) 288 return Amr.IsSupportedInstanceId(instanceMapID)
289 end 289 end
290 290
291 -- helper to iterate over a table in order by its keys 291 --[[
292 local function spairs(t, order)
293 -- collect the keys
294 local keys = {}
295 for k in pairs(t) do keys[#keys+1] = k end
296
297 -- if order function given, sort by it by passing the table and keys a, b,
298 -- otherwise just sort the keys
299 if order then
300 table.sort(keys, function(a,b) return order(t, a, b) end)
301 else
302 table.sort(keys)
303 end
304
305 -- return the iterator function
306 local i = 0
307 return function()
308 i = i + 1
309 if keys[i] then
310 return keys[i], t[keys[i]]
311 end
312 end
313 end
314
315 -- scanning tooltip b/c for some odd reason the api has no way to get basic item properties... 292 -- scanning tooltip b/c for some odd reason the api has no way to get basic item properties...
316 -- so you have to generate a fake item tooltip and search for pre-defined strings in the display text 293 -- so you have to generate a fake item tooltip and search for pre-defined strings in the display text
317 local _scanTt 294 local _scanTt
318 function Amr.GetScanningTooltip() 295 function Amr.GetScanningTooltip()
319 if not _scanTt then 296 if not _scanTt then
334 else 311 else
335 tt:SetHyperlink(link) 312 tt:SetHyperlink(link)
336 end 313 end
337 return tt 314 return tt
338 end 315 end
339 316 ]]
317
318 --[[
340 function Amr.GetItemLevel(bagId, slotId, link) 319 function Amr.GetItemLevel(bagId, slotId, link)
341 local itemLevelPattern = _G["ITEM_LEVEL"]:gsub("%%d", "(%%d+)") 320 local itemLevelPattern = _G["ITEM_LEVEL"]:gsub("%%d", "(%%d+)")
342 local tt = Amr.GetItemTooltip(bagId, slotId, link) 321 local tt = Amr.GetItemTooltip(bagId, slotId, link)
343 322
344 local regions = { tt:GetRegions() } 323 local regions = { tt:GetRegions() }
355 end 334 end
356 335
357 -- 0 means we couldn't find it for whatever reason 336 -- 0 means we couldn't find it for whatever reason
358 return 0 337 return 0
359 end 338 end
339 ]]
360 340
361 341
362 ---------------------------------------------------------------------------------------- 342 ----------------------------------------------------------------------------------------
363 -- Character Reading 343 -- Character Reading
364 ---------------------------------------------------------------------------------------- 344 ----------------------------------------------------------------------------------------
365 345
366 local function readProfessionInfo(prof, ret) 346 local function readProfessionInfo(prof, ret)
367 if prof then 347 if prof then
368 local name, icon, skillLevel, maxSkillLevel, numAbilities, spelloffset, skillLine, skillModifier = GetProfessionInfo(prof); 348 local _, _, skillLevel, _, _, _, skillLine = GetProfessionInfo(prof);
369 if Amr.ProfessionSkillLineToName[skillLine] ~= nil then 349 if Amr.ProfessionSkillLineToName[skillLine] ~= nil then
370 ret.Professions[Amr.ProfessionSkillLineToName[skillLine]] = skillLevel; 350 ret.Professions[Amr.ProfessionSkillLineToName[skillLine]] = skillLevel;
371 end 351 end
372 end 352 end
373 end 353 end
487 ret.Guild = GetGuildInfo("player") 467 ret.Guild = GetGuildInfo("player")
488 ret.ActiveSpec = GetSpecialization() 468 ret.ActiveSpec = GetSpecialization()
489 ret.Level = UnitLevel("player"); 469 ret.Level = UnitLevel("player");
490 readHeartOfAzerothLevel(ret) 470 readHeartOfAzerothLevel(ret)
491 471
492 local cls, clsEn = UnitClass("player") 472 local _, clsEn = UnitClass("player")
493 ret.Class = clsEn; 473 ret.Class = clsEn;
494 474
495 local race, raceEn = UnitRace("player") 475 local _, raceEn = UnitRace("player")
496 ret.Race = raceEn; 476 ret.Race = raceEn;
497 ret.Faction = UnitFactionGroup("player") 477 ret.Faction = UnitFactionGroup("player")
498 478
499 ret.Professions = {}; 479 ret.Professions = {};
500 local prof1, prof2, archaeology, fishing, cooking, firstAid = GetProfessions(); 480 local prof1, prof2, archaeology, fishing, cooking, firstAid = GetProfessions();