-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathGoldStockSummary.lua
More file actions
91 lines (75 loc) · 2.81 KB
/
GoldStockSummary.lua
File metadata and controls
91 lines (75 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---@type string
local addonName = ...
---@class ns
local ns = select(2, ...)
local AceAddon = LibStub("AceAddon-3.0")
local AceDB = LibStub("AceDB-3.0")
---@class GoldStockSummary : AceConsole-3.0, AceEvent-3.0, AceAddon
local Core = AceAddon:NewAddon(addonName, "AceConsole-3.0", "AceEvent-3.0")
function Core:OnInitialize()
self.db = AceDB:New("GoldStockSummaryDB", ns.dbDefaults, true)
ns.db = self.db
self:RegisterMessage("GoldStockSummary_ToggleUI", "ToggleUI")
self:RegisterMessage("GoldStockSummary_DeleteCharacter", "OnDeleteCharacter")
self:RegisterMessage("GoldStockSummary_ExportCharacters", "OnExportCharacters")
self:RegisterMessage("GoldStockSummary_ExportRealms", "OnExportRealms")
end
function Core:ToggleUI()
if ns.MainUI:IsVisible() then
ns.MainUI:Hide()
else
self:ShowCharacterGoldTable()
end
end
function Core:ShowCharacterGoldTable()
ns.MainUI:Show({
characters = function()
return self:CharactersGoldTable()
end,
realms = function()
return self:RealmsGoldTable()
end,
}, self.db)
end
local characterFields = { "realm", "faction", "name", "totalMoney", "personalMoney", "guildBankMoney", "lastUpdate" }
local realmFields = { "realm", "faction", "totalMoney", "personalMoney", "guildBankMoney" }
function Core:CharactersGoldTable()
local db = self.db.global
local moneyTable = ns.MoneyTable.Factory.Characters(ns.TrackedMoney.Create(db.characters, db.guilds))
return ns.MoneyTable.To.ScrollingTable(characterFields, moneyTable)
end
function Core:RealmsGoldTable()
local db = self.db.global
local moneyTable = ns.MoneyTable.Factory.Realms(ns.TrackedMoney.Create(db.characters, db.guilds))
return ns.MoneyTable.To.ScrollingTable(realmFields, moneyTable)
end
---@param nameAndRealm string
function Core:OnDeleteCharacter(_, nameAndRealm)
self.db.global.characters[nameAndRealm] = nil
self:SendMessage("GoldStockSummary_CharacterMoneyUpdated", nameAndRealm)
end
---@param format string
function Core:OnExportCharacters(_, format, data)
local moneyTable = ns.MoneyTable.Factory.Characters(ns.TrackedMoney.Create(data.characters, data.guilds))
local output = ""
if format == "csv" then
output = ns.MoneyTable.To.CSV(characterFields, moneyTable, {
floorGold = self.db.profile.csvFloorGold,
})
elseif format == "json" then
output = ns.MoneyTable.To.JSON("characters", moneyTable)
end
self:SendMessage("GoldStockSummary_CopyText", output)
end
function Core:OnExportRealms(_, format, data)
local moneyTable = ns.MoneyTable.Factory.Realms(ns.TrackedMoney.Create(data.characters, data.guilds))
local output = ""
if format == "csv" then
output = ns.MoneyTable.To.CSV(realmFields, moneyTable, {
floorGold = self.db.profile.csvFloorGold,
})
elseif format == "json" then
output = ns.MoneyTable.To.JSON("realms", moneyTable)
end
self:SendMessage("GoldStockSummary_CopyText", output)
end