Skip to content

Commit 5a86758

Browse files
committed
Artifact Power initial commit
1 parent 395a3e2 commit 5a86758

File tree

5 files changed

+276
-8
lines changed

5 files changed

+276
-8
lines changed

Elements/Artifact.lua

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
local SLDataText = LibStub("AceAddon-3.0"):GetAddon("SLDataText")
2+
local L = LibStub("AceLocale-3.0"):GetLocale("SLDataText")
3+
local media = LibStub("LibSharedMedia-3.0")
4+
local justTable, strataTable, pointTable = SLDataText.just, SLDataText.strata, SLDataText.point
5+
local db
6+
7+
local MODNAME = "Artifact"
8+
local Artifact = SLDataText:NewModule(MODNAME, "AceEvent-3.0")
9+
10+
local optGetter, optSetter
11+
do
12+
function optGetter(info)
13+
local key = info[#info]
14+
return db[key]
15+
end
16+
17+
function optSetter(info, value)
18+
local key = info[#info]
19+
db[key] = value
20+
SLDataText:RefreshModule(Artifact)
21+
end
22+
end
23+
24+
local options
25+
local function getOptions()
26+
if ( not options ) then options = {
27+
type = "group",
28+
name = L["Artifact"],
29+
arg = MODNAME,
30+
get = optGetter,
31+
set = optSetter,
32+
args = {
33+
genHeader = {
34+
type = "header",
35+
name = L["GenCorSet"],
36+
order = 25,
37+
},
38+
enabled = {
39+
type = "toggle",
40+
name = L["Enabled"],
41+
desc = L["EnabledDesc"],
42+
get = function() return SLDataText:GetModuleEnabled(MODNAME) end,
43+
set = function(info, value)
44+
SLDataText:SetModuleEnabled(MODNAME, value)
45+
if ( SLDataText:GetModuleEnabled(MODNAME) ) then
46+
Artifact:PLAYER_ENTERING_WORLD()
47+
end
48+
end,
49+
order = 50,
50+
},
51+
noCombatHide = {
52+
type = "toggle",
53+
name = L["SIC"],
54+
desc = L["SICDesc"],
55+
order = 100,
56+
},
57+
dispHeader = {
58+
type = "header",
59+
name = L["DispSet"],
60+
order = 275,
61+
},
62+
secText = {
63+
type = "input",
64+
name = L["SecText"],
65+
desc = L["SecTextDesc"],
66+
width = "double",
67+
order = 300,
68+
},
69+
useGlobalFont = {
70+
type = "toggle",
71+
name = L["UseGblFont"],
72+
desc = L["UseGblFontDesc"],
73+
order = 300,
74+
},
75+
useGlobalFontSize = {
76+
type = "toggle",
77+
name = L["UseGblFSize"],
78+
desc = L["UseGblFSizeDesc"],
79+
order = 350,
80+
},
81+
fontFace = {
82+
type = "select",
83+
name = L["Font"],
84+
desc = L["FontDesc"],
85+
disabled = function()
86+
local isTrue
87+
if ( db.useGlobalFont ) then isTrue = true else isTrue = false end
88+
return isTrue
89+
end,
90+
values = media:List("font"),
91+
get = function()
92+
for k, v in pairs(media:List("font")) do
93+
if db.fontFace == v then
94+
return k
95+
end
96+
end
97+
end,
98+
set = function(_, font)
99+
local list = media:List("font")
100+
db.fontFace = list[font]
101+
SLDataText:RefreshModule(Artifact)
102+
end,
103+
width = "double",
104+
order = 600,
105+
},
106+
fontSize = {
107+
type = "range",
108+
name = L["FontSize"],
109+
desc = L["FontSizeDesc"],
110+
disabled = function()
111+
local isTrue
112+
if ( db.useGlobalFontSize ) then isTrue = true else isTrue = false end
113+
return isTrue
114+
end,
115+
min = 6, max = 36, step = 1,
116+
width = "double",
117+
order = 650,
118+
},
119+
posHeader = {
120+
type = "header",
121+
name = L["LaySet"],
122+
order = 700,
123+
},
124+
justify = {
125+
type = "select",
126+
name = L["TextJust"],
127+
desc = L["TextJustDesc"],
128+
values = justTable,
129+
width = "double",
130+
order = 750,
131+
},
132+
anchor = {
133+
type = "input",
134+
name = L["ParFrm"],
135+
desc = L["ParFrmDesc"],
136+
get = function() return db.anchor end,
137+
width = "double",
138+
order = 800,
139+
},
140+
anchorFrom = {
141+
type = "select",
142+
name = L["AnchFrom"],
143+
desc = L["AnchFromDesc"],
144+
values = pointTable,
145+
get = function() return db.anchorFrom end,
146+
width = "double",
147+
order = 900,
148+
},
149+
offX = {
150+
type = "input",
151+
name = L["XOff"],
152+
desc = L["XOffDesc"],
153+
get = function() return tostring(db.offX) end,
154+
width = "double",
155+
order = 1000,
156+
},
157+
offY = {
158+
type = "input",
159+
name = L["YOff"],
160+
desc = L["YOffDesc"],
161+
get = function() return tostring(db.offY) end,
162+
width = "double",
163+
order = 1100,
164+
},
165+
strata = {
166+
type = "select",
167+
name = L["Strata"],
168+
desc = L["StrataDesc"],
169+
values = strataTable,
170+
width = "double",
171+
order = 1600,
172+
},
173+
},
174+
}
175+
end
176+
177+
return options
178+
end
179+
180+
local int = 1
181+
local f
182+
local function buildModule(self)
183+
if ( not f ) then f = CreateFrame("Frame") end
184+
if ( not self.frame ) then self.frame = CreateFrame("Frame", "SLDT_Artifact", UIParent) end
185+
if ( not self.string ) then self.string = self.frame:CreateFontString(nil, "OVERLAY") end
186+
187+
f:SetScript("OnUpdate", function(self, elapsed)
188+
int = int - elapsed
189+
if ( int <= 0 ) then
190+
Artifact:Refresh()
191+
int = 1
192+
end
193+
end)
194+
195+
Artifact:RegisterEvent("PLAYER_ENTERING_WORLD")
196+
end
197+
198+
function Artifact:PLAYER_ENTERING_WORLD()
199+
SLDataText:RefreshModule(self)
200+
self:UnregisterEvent("PLAYER_ENTERING_WORLD")
201+
end
202+
203+
function Artifact:OnInitialize()
204+
self.db = SLDataText.db:RegisterNamespace(MODNAME)
205+
self.db:RegisterDefaults({
206+
profile = {
207+
noCombatHide = true,
208+
fontFace = "Arial Narrow",
209+
useGlobalFont = true,
210+
fontSize = 12,
211+
useGlobalFontSize = false,
212+
justify = "CENTER",
213+
anchorPoint = "CENTER",
214+
anchor = "UIParent",
215+
anchorFrom = "CENTER",
216+
offX = 200,
217+
offY = -20,
218+
strata = "BACKGROUND",
219+
},
220+
})
221+
db = self.db.profile
222+
if ( not self.isMoving ) then self.isMoving = false end
223+
self:SetEnabledState(SLDataText:GetModuleEnabled(MODNAME))
224+
SLDataText:RegisterModuleOptions(MODNAME, getOptions)
225+
end
226+
227+
function Artifact:OnEnable()
228+
buildModule(self)
229+
if ( not self.frame:IsShown() ) then self.frame:Show() end
230+
end
231+
232+
function Artifact:OnDisable()
233+
self:UnregisterEvent("PLAYER_ENTERING_WORLD")
234+
f:SetScript("OnUpdate", nil)
235+
if ( self.frame:IsShown() ) then self.frame:Hide() end
236+
end
237+
238+
function Artifact:Refresh()
239+
if (not HasArtifactEquipped()) then
240+
return
241+
end
242+
local sec_text = db.secText
243+
local per_text
244+
local current_ap = select(5, C_ArtifactUI.GetEquippedArtifactInfo())
245+
local traits_spent = select(6, C_ArtifactUI.GetEquippedArtifactInfo())
246+
247+
local available = 0
248+
local next_rank_cost = C_ArtifactUI.GetCostForPointAtRank(traits_spent + available) or 0
249+
250+
while current_ap >= next_rank_cost do
251+
current_ap = current_ap - next_rank_cost
252+
available = available + 1
253+
next_rank_cost = C_ArtifactUI.GetCostForPointAtRank(traits_spent + available) or 0
254+
end
255+
256+
per_rnd = round((current_ap / next_rank_cost) * 100, 1)
257+
258+
if string.len(sec_text) > 0 then
259+
local color = SLDataText:GetColor()
260+
sec_text = "|cff" .. color .. sec_text .. "|r "
261+
end
262+
263+
self.string:SetFormattedText(sec_text..per_rnd.."%% ("..available..")")
264+
end

Elements/Experience.lua

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -283,29 +283,29 @@ function Experience:Refresh()
283283
return math.floor(num * mult + 0.5) / mult
284284
end
285285

286-
local exp_rest_per = round(exp_rest_per,1)
286+
local exp_rest_per = round(exp_rest_per, 1)
287287
local exp_cur_per = round(exp_cur_per, 1)
288288

289289
--over 9000
290290
if (db.shortXP) then
291-
if(exp_max > 10000000) then
291+
if (exp_max > 10000000) then
292292
exp_max = exp_max/1000000
293293
exp_max = round(exp_max, 2) .." M"
294-
elseif(exp_max > 1000000) then
294+
elseif (exp_max > 1000000) then
295295
exp_max = exp_max/1000000
296296
exp_max = round(exp_max, 3) .." M"
297-
elseif(exp_max > 100000) then
297+
elseif (exp_max > 100000) then
298298
exp_max = exp_max/1000
299299
exp_max = round(exp_max, 0) .. " K"
300300
end
301301

302-
if(exp_cur > 10000000) then
302+
if (exp_cur > 10000000) then
303303
exp_cur = exp_cur/1000000
304304
exp_cur = round(exp_cur, 2) .." M"
305-
elseif(exp_cur > 1000000) then
305+
elseif (exp_cur > 1000000) then
306306
exp_cur = exp_cur/1000000
307307
exp_cur = round(exp_cur, 3) .." M"
308-
elseif(exp_cur > 100000) then
308+
elseif (exp_cur > 100000) then
309309
exp_cur = exp_cur/1000
310310
exp_cur = round(exp_cur, 0) .. " K"
311311
end

Locale/enUS.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ L["Game"] = "Game"
9797
L["Faction"] = "Faction"
9898
L["Officer Note"] = "Officer Note"
9999

100+
-- Artifact Options
101+
L["Artifact"] = "Artifact"
102+
100103
-- Experience Options
101104
L["Experience"] = "Experience"
102105
L["showRest"] = "Rest XP"

SLDataText.toc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## Interface: 70000
22
## Title: |cff00ff00SLDT|r - Simple Light Data Text
33
## Notes: Text-based data display modules.
4-
## Version: 7.0.0
4+
## Version: 7.0.1
55
## Author: Taffu (fan update by Karaswa & ChronosSF)
66
## SavedVariables: SLDTDB
77
## OptionalDeps: Ace3, LibSharedMedia-3.0, TabletLib

elements.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
22
..\FrameXML\UI.xsd">
3+
<Script file="Elements\Artifact.lua" />
34
<Script file="Elements\Bag.lua" />
45
<Script file="Elements\Clock.lua" />
56
<Script file="Elements\Coords.lua" />

0 commit comments

Comments
 (0)