Mercurial > wow > askmrrobot
comparison Export.lua @ 81:0515882856f1 v38
updated for 7.0
author | yellowfive |
---|---|
date | Tue, 19 Jul 2016 10:05:32 -0700 |
parents | 69db1c3025ac |
children | 8914581c912f |
comparison
equal
deleted
inserted
replaced
80:8f235b016212 | 81:0515882856f1 |
---|---|
51 lbl2:SetPoint("TOPLEFT", lbl.frame, "BOTTOMLEFT", 0, -15) | 51 lbl2:SetPoint("TOPLEFT", lbl.frame, "BOTTOMLEFT", 0, -15) |
52 | 52 |
53 lbl = createLabel(panel, L.ExportSplash3, 650) | 53 lbl = createLabel(panel, L.ExportSplash3, 650) |
54 lbl:SetFont(Amr.CreateFont("Regular", 14, Amr.Colors.Text)) | 54 lbl:SetFont(Amr.CreateFont("Regular", 14, Amr.Colors.Text)) |
55 lbl:SetPoint("TOPLEFT", lbl2.frame, "BOTTOMLEFT", 0, -15) | 55 lbl:SetPoint("TOPLEFT", lbl2.frame, "BOTTOMLEFT", 0, -15) |
56 | |
57 lbl2 = createLabel(panel, L.ExportSplash4, 650) | |
58 lbl2:SetFont(Amr.CreateFont("Regular", 14, Amr.Colors.Text)) | |
59 lbl2:SetPoint("TOPLEFT", lbl.frame, "BOTTOMLEFT", 0, -15) | |
56 | 60 |
57 local btn = AceGUI:Create("AmrUiButton") | 61 local btn = AceGUI:Create("AmrUiButton") |
58 btn:SetText(L.ExportSplashClose) | 62 btn:SetText(L.ExportSplashClose) |
59 btn:SetBackgroundColor(Amr.Colors.Green) | 63 btn:SetBackgroundColor(Amr.Colors.Green) |
60 btn:SetFont(Amr.CreateFont("Bold", 16, Amr.Colors.White)) | 64 btn:SetFont(Amr.CreateFont("Bold", 16, Amr.Colors.White)) |
79 lbl:SetPoint("TOPLEFT", lbl2.frame, "BOTTOMLEFT", 0, -10) | 83 lbl:SetPoint("TOPLEFT", lbl2.frame, "BOTTOMLEFT", 0, -10) |
80 | 84 |
81 lbl2 = createLabel(container, L.ExportHelp3) | 85 lbl2 = createLabel(container, L.ExportHelp3) |
82 lbl2:SetPoint("TOPLEFT", lbl.frame, "BOTTOMLEFT", 0, -10) | 86 lbl2:SetPoint("TOPLEFT", lbl.frame, "BOTTOMLEFT", 0, -10) |
83 | 87 |
84 lbl = createLabel(container, L.ExportHelp4) | |
85 lbl:SetPoint("TOPLEFT", lbl2.frame, "BOTTOMLEFT", 0, -10) | |
86 | |
87 _txt = AceGUI:Create("AmrUiTextarea") | 88 _txt = AceGUI:Create("AmrUiTextarea") |
88 _txt:SetWidth(800) | 89 _txt:SetWidth(800) |
89 _txt:SetHeight(300) | 90 _txt:SetHeight(300) |
90 _txt:SetPoint("TOP", lbl.frame, "BOTTOM", 0, -20) | 91 _txt:SetPoint("TOP", lbl2.frame, "BOTTOM", 0, -20) |
91 _txt:SetFont(Amr.CreateFont("Regular", 12, Amr.Colors.Text)) | 92 _txt:SetFont(Amr.CreateFont("Regular", 12, Amr.Colors.Text)) |
92 _txt:SetCallback("OnTextChanged", onTextChanged) | 93 _txt:SetCallback("OnTextChanged", onTextChanged) |
93 container:AddChild(_txt) | 94 container:AddChild(_txt) |
94 | 95 |
95 local data = self:ExportCharacter() | 96 local data = self:ExportCharacter() |
149 end | 150 end |
150 end | 151 end |
151 | 152 |
152 -- get the player's current gear and save it, also returns the data from GetPlayerData for efficiency | 153 -- get the player's current gear and save it, also returns the data from GetPlayerData for efficiency |
153 local function getEquipped() | 154 local function getEquipped() |
154 local data = Amr.Serializer:GetPlayerData(Amr.db.char.SubSpecs) | 155 local data = Amr.Serializer:GetPlayerData() |
155 local spec = GetActiveSpecGroup() | 156 local spec = GetSpecialization() |
156 | 157 |
157 Amr.db.char.Equipped[spec] = data.Equipped[spec] | 158 Amr.db.char.Equipped[spec] = data.Equipped[spec] |
158 Amr.db.char.SubSpecs[spec] = data.SubSpecs[spec] | |
159 | 159 |
160 return data | 160 return data |
161 end | 161 end |
162 | 162 |
163 local function scanBags() | 163 local function scanBags() |
239 end | 239 end |
240 | 240 |
241 return reps | 241 return reps |
242 end | 242 end |
243 | 243 |
244 local function scanTalents() | |
245 local specPos = GetSpecialization() | |
246 if not specPos or specPos < 1 or specPos > 4 then return end | |
247 | |
248 local talentInfo = {} | |
249 local maxTiers = 7 | |
250 for tier = 1, maxTiers do | |
251 for col = 1, 3 do | |
252 local id, name, _, _, _, spellId, _, t, c, selected = GetTalentInfoBySpecialization(specPos, tier, col) | |
253 if selected then | |
254 talentInfo[tier] = col | |
255 end | |
256 end | |
257 end | |
258 | |
259 local str = "" | |
260 for i = 1, maxTiers do | |
261 if talentInfo[i] then | |
262 str = str .. talentInfo[i] | |
263 else | |
264 str = str .. '0' | |
265 end | |
266 end | |
267 | |
268 Amr.db.char.Talents[specPos] = str | |
269 end | |
270 | |
271 local function scanArtifact() | |
272 -- TODO: when they put in a real API for this, switch to that instead of using UI methods directly | |
273 local powers = C_ArtifactUI.GetPowers() | |
274 if not powers then return end | |
275 | |
276 local powerRanks = {} | |
277 for k,v in pairs(powers) do | |
278 local spellId, cost, rank, maxRank, relicRank = C_ArtifactUI.GetPowerInfo(v) | |
279 if rank - relicRank > 0 then | |
280 powerRanks[v] = rank - relicRank | |
281 end | |
282 end | |
283 | |
284 local relicInfo = {} | |
285 for i = 1,3 do | |
286 local _, _, _, link = C_ArtifactUI.GetRelicInfo(i); | |
287 table.insert(relicInfo, link or "") | |
288 end | |
289 | |
290 -- make sure that the artifact UI didn't get closed while we were reading it, GetPowers seems to return nil unless it is open | |
291 powers = C_ArtifactUI.GetPowers() | |
292 if not powers then return end | |
293 | |
294 local spec = GetSpecialization() | |
295 Amr.db.char.Artifacts[spec] = { | |
296 Powers = powerRanks, | |
297 Relics = relicInfo | |
298 } | |
299 end | |
300 | |
244 -- Returns a data object containing all information about the current player needed for an export: | 301 -- Returns a data object containing all information about the current player needed for an export: |
245 -- gear, spec, reputations, bag, bank, and void storage items. | 302 -- gear, spec, reputations, bag, bank, and void storage items. |
246 function Amr:ExportCharacter() | 303 function Amr:ExportCharacter() |
247 | 304 |
248 local data = getEquipped() | 305 local data = getEquipped() |
249 scanBags() | 306 scanBags() |
250 | 307 |
251 -- get extra data that is not necessary for the base serializer, but that we add here for completeness | 308 -- scan current spec's talents just before exporting |
309 scanTalents() | |
310 | |
311 data.Talents = Amr.db.char.Talents | |
312 data.Artifacts = Amr.db.char.Artifacts | |
252 data.Equipped = Amr.db.char.Equipped | 313 data.Equipped = Amr.db.char.Equipped |
253 data.Reputations = getReputations() | 314 data.Reputations = getReputations() |
254 data.BagItems = Amr.db.char.BagItems | 315 data.BagItems = Amr.db.char.BagItems |
255 data.BankItems = Amr.db.char.BankItems | 316 data.BankItems = Amr.db.char.BankItems |
256 data.VoidItems = Amr.db.char.VoidItems | 317 data.VoidItems = Amr.db.char.VoidItems |
270 | 331 |
271 Amr:AddEventHandler("VOID_STORAGE_OPEN", scanVoid) | 332 Amr:AddEventHandler("VOID_STORAGE_OPEN", scanVoid) |
272 Amr:AddEventHandler("VOID_STORAGE_CONTENTS_UPDATE", scanVoid) | 333 Amr:AddEventHandler("VOID_STORAGE_CONTENTS_UPDATE", scanVoid) |
273 Amr:AddEventHandler("VOID_STORAGE_DEPOSIT_UPDATE", scanVoid) | 334 Amr:AddEventHandler("VOID_STORAGE_DEPOSIT_UPDATE", scanVoid) |
274 Amr:AddEventHandler("VOID_STORAGE_UPDATE", scanVoid) | 335 Amr:AddEventHandler("VOID_STORAGE_UPDATE", scanVoid) |
336 | |
337 Amr:AddEventHandler("PLAYER_TALENT_UPDATE", scanTalents) | |
338 Amr:AddEventHandler("ARTIFACT_UPDATE", scanArtifact) |