Mercurial > wow > askmrrobot
comparison AskMrRobot.lua @ 41:0e78d6424532 v13
added region to import/export, some prep for new combat logging
| author | yellowfive |
|---|---|
| date | Fri, 24 Oct 2014 12:08:47 -0700 |
| parents | 4d1a9865c90e |
| children | 262083330ac9 |
comparison
equal
deleted
inserted
replaced
| 40:a489324103e5 | 41:0e78d6424532 |
|---|---|
| 137 -- initialize settings when the addon loads | 137 -- initialize settings when the addon loads |
| 138 function AskMrRobot.InitializeSettings() | 138 function AskMrRobot.InitializeSettings() |
| 139 | 139 |
| 140 -- global settings | 140 -- global settings |
| 141 if not AmrSettings then AmrSettings = {} end | 141 if not AmrSettings then AmrSettings = {} end |
| 142 if not AmrSettings.Logins then AmrSettings.Logins = {} end | |
| 143 | 142 |
| 144 -- per-character settings | 143 -- per-character settings |
| 145 if not AmrDb then AmrDb = {} end | 144 if not AmrDb then AmrDb = {} end |
| 146 | 145 |
| 147 -- addon stuff | 146 -- addon stuff |
| 177 end | 176 end |
| 178 | 177 |
| 179 -- record logins when the addon starts up, used to help figure out which character logged which parts of a log file | 178 -- record logins when the addon starts up, used to help figure out which character logged which parts of a log file |
| 180 function AskMrRobot.RecordLogin() | 179 function AskMrRobot.RecordLogin() |
| 181 | 180 |
| 182 -- delete entries that are more than 10 days old to prevent the table from growing indefinitely | 181 -- only need to record the region now (only thing we can't get from the log file still) |
| 183 if AmrSettings.Logins and #AmrSettings.Logins > 0 then | 182 AmrSettings.Region = AskMrRobot.regionNames[GetCurrentRegion()] |
| 184 local now = time() | 183 |
| 185 local oldDuration = 60 * 60 * 24 * 10 | 184 -- remove the old Logins data, don't need it anymore |
| 186 local entryTime | 185 AmrSettings.Logins = nil |
| 187 repeat | |
| 188 -- parse entry and get time | |
| 189 local parts = {} | |
| 190 for part in string.gmatch(AmrSettings.Logins[1], "([^;]+)") do | |
| 191 tinsert(parts, part) | |
| 192 end | |
| 193 entryTime = tonumber(parts[3]) | |
| 194 | |
| 195 -- entries are in order, remove first entry if it is old | |
| 196 if difftime(now, entryTime) > oldDuration then | |
| 197 tremove(AmrSettings.Logins, 1) | |
| 198 end | |
| 199 until #AmrSettings.Logins == 0 or difftime(now, entryTime) <= oldDuration | |
| 200 end | |
| 201 | |
| 202 -- record the time a player logs in, used to figure out which player logged which parts of their log file | |
| 203 local key = AmrDb.RealmName .. ";" .. AmrDb.CharacterName .. ";" | |
| 204 local loginData = key .. time() | |
| 205 if AmrSettings.Logins and #AmrSettings.Logins > 0 then | |
| 206 local last = AmrSettings.Logins[#AmrSettings.Logins] | |
| 207 if string.len(last) >= string.len(key) and string.sub(last, 1, string.len(key)) ~= key then | |
| 208 table.insert(AmrSettings.Logins, loginData) | |
| 209 end | |
| 210 else | |
| 211 table.insert(AmrSettings.Logins, loginData) | |
| 212 end | |
| 213 end | 186 end |
| 214 | 187 |
| 215 function AskMrRobot.InitializeMinimap() | 188 function AskMrRobot.InitializeMinimap() |
| 216 | 189 |
| 217 -- minimap icon and data broker icon plugin thingy | 190 -- minimap icon and data broker icon plugin thingy |
| 269 AskMrRobot.GetSpecs() | 242 AskMrRobot.GetSpecs() |
| 270 end | 243 end |
| 271 | 244 |
| 272 -- gets all basic character properties | 245 -- gets all basic character properties |
| 273 function AskMrRobot.ScanCharacter() | 246 function AskMrRobot.ScanCharacter() |
| 247 AmrDb.Region = AskMrRobot.regionNames[GetCurrentRegion()] | |
| 274 AmrDb.RealmName = GetRealmName() | 248 AmrDb.RealmName = GetRealmName() |
| 275 AmrDb.CharacterName = UnitName("player") | 249 AmrDb.CharacterName = UnitName("player") |
| 276 AmrDb.Guild = GetGuildInfo("player") | 250 AmrDb.Guild = GetGuildInfo("player") |
| 277 AmrDb.ActiveSpec = GetActiveSpecGroup() | 251 AmrDb.ActiveSpec = GetActiveSpecGroup() |
| 278 AmrDb.Level = UnitLevel("player"); | 252 AmrDb.Level = UnitLevel("player"); |
| 630 function AskMrRobot.ExportToCompressedString(complete) | 604 function AskMrRobot.ExportToCompressedString(complete) |
| 631 local fields = {} | 605 local fields = {} |
| 632 | 606 |
| 633 -- compressed string uses a fixed order rather than inserting identifiers | 607 -- compressed string uses a fixed order rather than inserting identifiers |
| 634 table.insert(fields, GetAddOnMetadata(AskMrRobot.AddonName, "Version")) | 608 table.insert(fields, GetAddOnMetadata(AskMrRobot.AddonName, "Version")) |
| 609 table.insert(fields, AmrDb.Region) | |
| 635 table.insert(fields, AmrDb.RealmName) | 610 table.insert(fields, AmrDb.RealmName) |
| 636 table.insert(fields, AmrDb.CharacterName) | 611 table.insert(fields, AmrDb.CharacterName) |
| 637 | 612 |
| 638 -- guild name | 613 -- guild name |
| 639 local guildName = GetGuildInfo("player") | 614 local guildName = GetGuildInfo("player") |
| 764 return "$" .. table.concat(fields, ";") .. "$" | 739 return "$" .. table.concat(fields, ";") .. "$" |
| 765 end | 740 end |
| 766 | 741 |
| 767 function AskMrRobot.ExportToAddonChat(timestamp) | 742 function AskMrRobot.ExportToAddonChat(timestamp) |
| 768 local msg = AskMrRobot.ExportToCompressedString(false) | 743 local msg = AskMrRobot.ExportToCompressedString(false) |
| 769 local msgPrefix = timestamp .. "\n" .. AmrDb.RealmName .. "\n" .. AmrDb.CharacterName .. "\n" | 744 local msgPrefix = timestamp .. "\n" .. AmrDb.Region .. "\n" .. AmrDb.RealmName .. "\n" .. AmrDb.CharacterName .. "\n" |
| 770 | 745 |
| 771 -- break the data into 250 character chunks (to deal with the short limit on addon message size) | 746 -- break the data into 250 character chunks (to deal with the short limit on addon message size) |
| 772 local chunks = {} | 747 local chunks = {} |
| 773 local i = 1 | 748 local i = 1 |
| 774 local length = string.len(msg) | 749 local length = string.len(msg) |
| 830 local ver = tonumber(parts[1]) | 805 local ver = tonumber(parts[1]) |
| 831 if ver < MIN_IMPORT_VERSION then | 806 if ver < MIN_IMPORT_VERSION then |
| 832 return L.AMR_IMPORT_ERROR_VERSION | 807 return L.AMR_IMPORT_ERROR_VERSION |
| 833 end | 808 end |
| 834 | 809 |
| 835 -- require realm/name match | 810 -- require name match (don't match realm due to language issues for now) |
| 836 if not isTest then | 811 if not isTest then |
| 837 local realm = parts[2] | 812 local realm = parts[2] |
| 838 local name = parts[3] | 813 local name = parts[3] |
| 839 if name ~= AmrDb.CharacterName then | 814 if name ~= AmrDb.CharacterName then |
| 840 local badPers = name .. " (" .. realm .. ")" | 815 local badPers = name .. " (" .. realm .. ")" |
| 861 end | 836 end |
| 862 | 837 |
| 863 -- require spec match | 838 -- require spec match |
| 864 local spec = tonumber(parts[11]) | 839 local spec = tonumber(parts[11]) |
| 865 if spec ~= AmrDb.Specs[AmrDb.ActiveSpec] then | 840 if spec ~= AmrDb.Specs[AmrDb.ActiveSpec] then |
| 866 print(AmrDb.ActiveSpec) | 841 --print(AmrDb.ActiveSpec) |
| 867 print(spec) | 842 --print(spec) |
| 868 print(AmrDb.Specs[AmrDb.ActiveSpec]) | 843 --print(AmrDb.Specs[AmrDb.ActiveSpec]) |
| 869 local _, specName = GetSpecializationInfoByID(AskMrRobot.gameSpecIds[spec]) | 844 local _, specName = GetSpecializationInfoByID(AskMrRobot.gameSpecIds[spec]) |
| 870 return L.AMR_IMPORT_ERROR_SPEC:format(specName) | 845 return L.AMR_IMPORT_ERROR_SPEC:format(specName) |
| 871 end | 846 end |
| 872 | 847 |
| 873 -- require talent match | 848 -- require talent match |
