Skip to content

Commit 55d200f

Browse files
Blitz54LocalIdentity
andauthored
Show Animation for Radius Jewels (#9273)
* Animated timeless jewels * adjust speed --------- Co-authored-by: LocalIdentity <[email protected]>
1 parent 199ace0 commit 55d200f

File tree

2 files changed

+55
-18
lines changed

2 files changed

+55
-18
lines changed

src/Classes/PassiveTreeView.lua

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -802,38 +802,62 @@ function PassiveTreeViewClass:Draw(build, viewPort, inputEvents)
802802
if keystone and keystone.x and keystone.y then
803803
innerSize = 150 * scale
804804
local keyX, keyY = treeToScreen(keystone.x, keystone.y)
805-
DrawImage(self.jewelShadedOuterRing, keyX - outerSize, keyY - outerSize, outerSize * 2, outerSize * 2)
806-
DrawImage(self.jewelShadedOuterRingFlipped, keyX - outerSize, keyY - outerSize, outerSize * 2, outerSize * 2)
807-
DrawImage(self.jewelShadedInnerRing, keyX - innerSize, keyY - innerSize, innerSize * 2, innerSize * 2)
808-
DrawImage(self.jewelShadedInnerRingFlipped, keyX - innerSize, keyY - innerSize, innerSize * 2, innerSize * 2)
805+
self:DrawImageRotated(self.jewelShadedOuterRing, keyX, keyY, outerSize * 2, outerSize * 2, -0.8)
806+
self:DrawImageRotated(self.jewelShadedOuterRingFlipped, keyX, keyY, outerSize * 2, outerSize * 2, 1)
807+
self:DrawImageRotated(self.jewelShadedInnerRing, keyX, keyY, innerSize * 2, innerSize * 2, -1.2)
808+
self:DrawImageRotated(self.jewelShadedInnerRingFlipped, keyX, keyY, innerSize * 2, innerSize * 2, 1.0)
809809
end
810810
end
811811
elseif jewel.title:match("^Brutal Restraint") then
812-
DrawImage(self.maraketh1, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
813-
DrawImage(self.maraketh2, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
812+
self:DrawImageRotated(self.maraketh1, scrX, scrY, outerSize * 2, outerSize * 2, -0.7)
813+
self:DrawImageRotated(self.maraketh2, scrX, scrY, outerSize * 2, outerSize * 2, 0.7)
814814
elseif jewel.title:match("^Elegant Hubris") then
815-
DrawImage(self.eternal1, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
816-
DrawImage(self.eternal2, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
815+
self:DrawImageRotated(self.eternal1, scrX, scrY, outerSize * 2, outerSize * 2, -0.7)
816+
self:DrawImageRotated(self.eternal2, scrX, scrY, outerSize * 2, outerSize * 2, 0.7)
817817
elseif jewel.title:match("^Glorious Vanity") then
818-
DrawImage(self.vaal1, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
819-
DrawImage(self.vaal2, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
818+
self:DrawImageRotated(self.vaal1, scrX, scrY, outerSize * 2, outerSize * 2, -0.7)
819+
self:DrawImageRotated(self.vaal2, scrX, scrY, outerSize * 2, outerSize * 2, 0.7)
820820
elseif jewel.title:match("^Lethal Pride") then
821-
DrawImage(self.karui1, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
822-
DrawImage(self.karui2, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
821+
self:DrawImageRotated(self.karui1, scrX, scrY, outerSize * 2, outerSize * 2, -0.7)
822+
self:DrawImageRotated(self.karui2, scrX, scrY, outerSize * 2, outerSize * 2, 0.7)
823823
elseif jewel.title:match("^Militant Faith") then
824-
DrawImage(self.templar1, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
825-
DrawImage(self.templar2, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
824+
self:DrawImageRotated(self.templar1, scrX, scrY, outerSize * 2, outerSize * 2, -0.7)
825+
self:DrawImageRotated(self.templar2, scrX, scrY, outerSize * 2, outerSize * 2, 0.7)
826826
else
827-
DrawImage(self.jewelShadedOuterRing, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
828-
DrawImage(self.jewelShadedOuterRingFlipped, scrX - outerSize, scrY - outerSize, outerSize * 2, outerSize * 2)
829-
DrawImage(self.jewelShadedInnerRing, scrX - innerSize, scrY - innerSize, innerSize * 2, innerSize * 2)
830-
DrawImage(self.jewelShadedInnerRingFlipped, scrX - innerSize, scrY - innerSize, innerSize * 2, innerSize * 2)
827+
self:DrawImageRotated(self.jewelShadedOuterRing, scrX, scrY, outerSize * 2, outerSize * 2, -0.7)
828+
self:DrawImageRotated(self.jewelShadedOuterRingFlipped, scrX, scrY, outerSize * 2, outerSize * 2, 0.7)
829+
self:DrawImageRotated(self.jewelShadedInnerRing, scrX, scrY, innerSize * 2, innerSize * 2, -0.7)
830+
self:DrawImageRotated(self.jewelShadedInnerRingFlipped, scrX, scrY, innerSize * 2, innerSize * 2, 0.7)
831831
end
832832
end
833833
end
834834
end
835835
end
836836
end
837+
function PassiveTreeViewClass:DrawImageRotated(handle, x, y, width, height, angle, ...)
838+
if main.showAnimations == false then
839+
-- Skip rotation and animation
840+
DrawImage(handle, x - width / 2, y - height / 2, width, height, ...)
841+
return
842+
end
843+
844+
local t = GetTime() * 0.00003
845+
local rot = angle * t
846+
847+
local hw, hh = width / 2, height / 2
848+
local cosA, sinA = math.cos(rot), math.sin(rot)
849+
850+
local x1 = x - hw * cosA + hh * sinA
851+
local y1 = y - hw * sinA - hh * cosA
852+
local x2 = x + hw * cosA + hh * sinA
853+
local y2 = y + hw * sinA - hh * cosA
854+
local x3 = x + hw * cosA - hh * sinA
855+
local y3 = y + hw * sinA + hh * cosA
856+
local x4 = x - hw * cosA - hh * sinA
857+
local y4 = y - hw * sinA + hh * cosA
858+
859+
DrawImageQuad(handle, x1, y1, x2, y2, x3, y3, x4, y4, ...)
860+
end
837861

838862
-- Draws the given asset at the given position
839863
function PassiveTreeViewClass:DrawAsset(data, x, y, scale, isHalf)

src/Modules/Main.lua

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ function main:Init()
112112
self.POESESSID = ""
113113
self.showPublicBuilds = true
114114
self.showFlavourText = true
115+
self.showAnimations = true
115116
self.errorReadingSettings = false
116117

117118
if not SetDPIScaleOverridePercent then SetDPIScaleOverridePercent = function(scale) end end
@@ -653,6 +654,9 @@ function main:LoadSettings(ignoreBuild)
653654
if node.attrib.showFlavourText then
654655
self.showFlavourText = node.attrib.showFlavourText == "true"
655656
end
657+
if node.attrib.showAnimations then
658+
self.showAnimations = node.attrib.showAnimations == "true"
659+
end
656660
if node.attrib.dpiScaleOverridePercent then
657661
self.dpiScaleOverridePercent = tonumber(node.attrib.dpiScaleOverridePercent) or 0
658662
SetDPIScaleOverridePercent(self.dpiScaleOverridePercent)
@@ -785,6 +789,7 @@ function main:SaveSettings()
785789
disableDevAutoSave = tostring(self.disableDevAutoSave),
786790
showPublicBuilds = tostring(self.showPublicBuilds),
787791
showFlavourText = tostring(self.showFlavourText),
792+
showAnimations = tostring(self.showAnimations),
788793
dpiScaleOverridePercent = tostring(self.dpiScaleOverridePercent),
789794
} })
790795
local res, errMsg = common.xml.SaveXMLFile(setXML, self.userPath.."Settings.xml")
@@ -988,6 +993,11 @@ function main:OpenOptionsPopup()
988993
end)
989994
controls.showFlavourText.tooltipText = "If updating while inside a build, please re-load the build after saving."
990995

996+
nextRow()
997+
controls.showAnimations = new("CheckBoxControl", { "TOPLEFT", nil, "TOPLEFT" }, { defaultLabelPlacementX, currentY, 20 }, "^7Show Animations:", function(state)
998+
self.showAnimations = state
999+
end)
1000+
9911001
nextRow()
9921002
drawSectionHeader("build", "Build-related options")
9931003

@@ -1077,6 +1087,7 @@ function main:OpenOptionsPopup()
10771087
controls.titlebarName.state = self.showTitlebarName
10781088
controls.showPublicBuilds.state = self.showPublicBuilds
10791089
controls.showFlavourText.state = self.showFlavourText
1090+
controls.showAnimations.state = self.showAnimations
10801091
local initialNodePowerTheme = self.nodePowerTheme
10811092
local initialColorPositive = self.colorPositive
10821093
local initialColorNegative = self.colorNegative
@@ -1097,6 +1108,7 @@ function main:OpenOptionsPopup()
10971108
local initialDisableDevAutoSave = self.disableDevAutoSave
10981109
local initialShowPublicBuilds = self.showPublicBuilds
10991110
local initialShowFlavourText = self.showFlavourText
1111+
local initialShowAnimations = self.showAnimations
11001112
local initialDpiScaleOverridePercent = self.dpiScaleOverridePercent
11011113

11021114
-- last line with buttons has more spacing
@@ -1151,6 +1163,7 @@ function main:OpenOptionsPopup()
11511163
self.disableDevAutoSave = initialDisableDevAutoSave
11521164
self.showPublicBuilds = initialShowPublicBuilds
11531165
self.showFlavourText = initialShowFlavourText
1166+
self.showAnimations = initialShowAnimations
11541167
self.dpiScaleOverridePercent = initialDpiScaleOverridePercent
11551168
SetDPIScaleOverridePercent(self.dpiScaleOverridePercent)
11561169
main:ClosePopup()

0 commit comments

Comments
 (0)