You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.0 KiB
78 lines
3.0 KiB
-- ========================================================================= --
|
|
-- SylingTracker --
|
|
-- https://www.curseforge.com/wow/addons/sylingtracker --
|
|
-- --
|
|
-- Repository: --
|
|
-- https://github.com/Skamer/SylingTracker --
|
|
-- --
|
|
-- ========================================================================= --
|
|
Syling "SylingTracker.UI.Arrow" ""
|
|
-- ========================================================================= --
|
|
namespace "SLT"
|
|
-- ========================================================================= --
|
|
class "Arrow" (function(_ENV)
|
|
inherit "Texture"
|
|
|
|
_Reycler = Recycle(Arrow, "SLT_Arrow%d")
|
|
|
|
enum "OrientationType" {
|
|
"RIGHT",
|
|
"BOTTOM",
|
|
"LEFT",
|
|
"TOP"
|
|
}
|
|
|
|
_ARROW_TEX_COORDS = {
|
|
["RIGHT"] = RectType(0, 32/128, 0, 1),
|
|
["BOTTOM"] = RectType(32/128, 64/128, 0, 1),
|
|
["LEFT"] = RectType(64/128, 96/128, 0, 1),
|
|
["TOP"] = RectType(96/128, 1, 0, 1)
|
|
}
|
|
-----------------------------------------------------------------------------
|
|
-- Handlers --
|
|
-----------------------------------------------------------------------------
|
|
local function HandleOrientationChange(self, new, old, prop)
|
|
Style[self].texCoords = _ARROW_TEX_COORDS[new]
|
|
end
|
|
-----------------------------------------------------------------------------
|
|
-- Methods --
|
|
-----------------------------------------------------------------------------
|
|
function Release(self)
|
|
self.Orientation = nil
|
|
self:Hide()
|
|
self:SetParent()
|
|
self:ClearAllPoints()
|
|
|
|
_Reycler(self)
|
|
end
|
|
|
|
__Static__() function Acquire()
|
|
local obj = _Reycler()
|
|
obj:Show()
|
|
|
|
return obj
|
|
end
|
|
|
|
-----------------------------------------------------------------------------
|
|
-- Properties --
|
|
-----------------------------------------------------------------------------
|
|
property "Orientation" {
|
|
type = OrientationType,
|
|
default = OrientationType.RIGHT,
|
|
handler = HandleOrientationChange
|
|
}
|
|
-----------------------------------------------------------------------------
|
|
-- Constructors --
|
|
-----------------------------------------------------------------------------
|
|
function __ctor(self)
|
|
HandleOrientationChange(self, self.Orientation)
|
|
end
|
|
end)
|
|
|
|
Style.UpdateSkin("Default", {
|
|
[Arrow] = {
|
|
size = Size(24, 24),
|
|
vertexColor = { r = 0, g = 0, b = 0, a = 0.6},
|
|
file = [[Interface\AddOns\SylingTracker\Media\Textures\ContextMenu-Arrow]]
|
|
}
|
|
})
|