Files
SexyMap/borders.lua
T
2026-07-02 13:47:16 +01:00

116 lines
5.9 KiB
Lua

local _G = getfenv(0)
local defaultSize = 180
local math = math
local sin = math.sin
local cos = math.cos
borderTextures = {
["AURARUNE256.BLP"] = "SPELLS\\AURARUNE256.BLP",
["AuraRune256b.blp"] = "SPELLS\\AuraRune256b.blp",
["AuraRune_A.blp"] = "SPELLS\\AuraRune_A.blp",
["AuraRune_B.blp"] = "SPELLS\\AuraRune_B.blp",
["Elite"] = "Interface\\TargetingFrame\\UI-TargetingFrame-Elite",
["GENERICGLOW5.BLP"] = "PARTICLES\\GENERICGLOW5.BLP",
["GENERICGLOW64.BLP"] = "SPELLS\\GENERICGLOW64.BLP",
["gradientCircle.blp"] = "Interface\\GLUES\\MODELS\\UI_Tauren\\gradientCircle.blp",
["Nature_Rune_128.blp"] = "SPELLS\\Nature_Rune_128.blp",
["Rare"] = "Interface\\TargetingFrame\\UI-TargetingFrame-Rare",
["ShamanStoneAir.blp"] = "World\\GENERIC\\PASSIVEDOODADS\\ShamanStone\\ShamanStoneAir.blp",
["SHAMANSTONEEARTH.blp"] = "World\\GENERIC\\PASSIVEDOODADS\\ShamanStone\\SHAMANSTONEEARTH.blp",
["ShamanStoneFlame.blp"] = "World\\GENERIC\\PASSIVEDOODADS\\ShamanStone\\ShamanStoneFlame.blp",
["ShamanStoneWater.blp"] = "World\\GENERIC\\PASSIVEDOODADS\\ShamanStone\\ShamanStoneWater.blp",
["Shockwave4.blp"] = "SPELLS\\Shockwave4.blp",
["Shockwave_blue.blp"] = "World\\ENVIRONMENT\\DOODAD\\GENERALDOODADS\\ELEMENTALRIFTS\\Shockwave_blue.blp",
["SHOCKWAVE_INVERTGREY.BLP"] = "SPELLS\\SHOCKWAVE_INVERTGREY.BLP",
["TREANTLEAVES.BLP"] = "SPELLS\\TREANTLEAVES.BLP",
["T_VFX_HERO_CIRCLE.BLP"] = "SPELLS\\T_VFX_HERO_CIRCLE.BLP",
-- Diablo preset textures (addon-local BLP files)
["MAP_OVERLAY"] = "Interface\\AddOns\\SexyMap\\media\\map_overlay",
["MAP_GLOSS"] = "Interface\\AddOns\\SexyMap\\media\\map_gloss",
["MAP_INNERSHADOW"] = "Interface\\AddOns\\SexyMap\\media\\map_innershadow",
["ZAHNRAD"] = "Interface\\AddOns\\SexyMap\\media\\zahnrad",
-- Renaitre textures (addon-local BLP files)
["RENAITRE_FADE_BORDER"] = "Interface\\AddOns\\SexyMap\\media\\RenaitreFadeBorder",
["RENAITRE_FADE_NORMAL"] = "Interface\\AddOns\\SexyMap\\media\\RenaitreFadeNormal",
["RENAITRE_FADE_GLOSS"] = "Interface\\AddOns\\SexyMap\\media\\RenaitreFadeGloss",
-- Classic media textures (addon-local BLP files)
["AUCHINDOUN_VORTEXCLOUD01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\auchindoun_vortexcloud01",
["AURA_01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\aura_01",
["BLADESEDGEPLANET04"] = "Interface\\AddOns\\SexyMap\\media\\classic\\bladesedgeplanet04",
["DEATHSKY_VORTEXCLOUD01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\deathsky_vortexcloud01",
["DEATHWINGFIGHTSKY_CLOUDSMASK03"] = "Interface\\AddOns\\SexyMap\\media\\classic\\deathwingfightsky_cloudsmask03",
["DEATHWINGFIGHTSKY_PARTICLECLOUD"] = "Interface\\AddOns\\SexyMap\\media\\classic\\deathwingfightsky_particlecloud",
["DEEPHOLMSKY_NEBULA01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\deepholmsky_nebula01",
["GALAXY_02"] = "Interface\\AddOns\\SexyMap\\media\\classic\\galaxy_02",
["HELLFIREPLANET03"] = "Interface\\AddOns\\SexyMap\\media\\classic\\hellfireplanet03",
["HELLFIREPLANET_BLUE01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\hellfireplanet_blue01",
["HELLFIREPLANET_RED01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\hellfireplanet_red01",
["ICECROWN_CLOUDSA02_MASK01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\icecrown_cloudsa02_mask01",
["ICECROWN_CLOUDSA02_MASK02"] = "Interface\\AddOns\\SexyMap\\media\\classic\\icecrown_cloudsa02_mask02",
["LIGHTNING_NEW"] = "Interface\\AddOns\\SexyMap\\media\\classic\\lightning_new",
["ROGUERUNE2"] = "Interface\\AddOns\\SexyMap\\media\\classic\\roguerune2",
["SWATHSMALLSTONES"] = "Interface\\AddOns\\SexyMap\\media\\classic\\swathsmallstones",
["TREANTLEAVES"] = "Interface\\AddOns\\SexyMap\\media\\classic\\treantleaves",
["T_VFX_HERO_CIRCLE"] = "Interface\\AddOns\\SexyMap\\media\\classic\\t_vfx_hero_circle",
["UL_SPINNINGROOMRINGS_RING07"] = "Interface\\AddOns\\SexyMap\\media\\classic\\ul_spinningroomrings_ring07",
["WINTERGRASP_CLOUDMASK01"] = "Interface\\AddOns\\SexyMap\\media\\classic\\wintergrasp_cloudmask01",
}
function CCreateBorder(t)
texture = _G[t.name] or Minimap:CreateTexture(t.name)
-- Clamp scale to 0.0 minimum; 0.0 means invisible
local effectiveScale = t.scale or 1
if effectiveScale < 0 then effectiveScale = 0 end
if effectiveScale == 0 then
texture:Hide()
-- Still register in CTextures so we can update later
texture.settings = t
texture.angle = 0
CTextures[t.name] = t.name
return
end
texture:Show()
texture:SetBlendMode(t.blendMode or "ADD")
local texPath = borderTextures[t.texture] or t.texture
-- For addon-local paths (extensionless), append .blp for SetTexture compatibility in classic WoW
if texPath and not string.find(string.lower(texPath), ".blp") and not string.find(string.lower(texPath), ".tga") and string.find(texPath, "AddOns") then
texPath = texPath .. ".blp"
end
texture:SetTexture(texPath)
texture:SetWidth((t.width or defaultSize) * effectiveScale)
texture:SetHeight((t.height or defaultSize) * effectiveScale)
texture:SetVertexColor(t.r or 1, t.g or 1, t.b or 1)
texture:SetAlpha(t.a or 1)
texture:SetPoint(t.anchorPoint or "CENTER",
t.relativeTo or Minimap,
t.relativePoint or "CENTER",
t.xOffset or 0, t.yOffset or 0)
texture:SetDrawLayer(t.drawLayer or "ARTWORK")
texture.settings = t
texture.angle = 0
CTextures[t.name] = t.name
if t.rotSpeed and t.rotSpeed ~= 0 and not t.disableRotation then
CRotateTextures[t.name] = t.rotSpeed
end
if t.disableRotation then
texture:SetTexCoord(0, 1, 0, 1)
end
if t.rotation then
CRotateTexture(texture, t.rotation)
end
end
function CRotateTexture(self, change)
self.angle = (self.angle or 0) - change
if self.angle < 0 then self.angle = self.angle + 360 end
if self.angle > 360 then self.angle = self.angle - 360 end
--self.angle = self.angle % 360
s = sin(rad(self.angle))
c = cos(rad(self.angle))
self:SetTexCoord(
0.5 - s, 0.5 + c, --Top Left Corner
0.5 + c, 0.5 + s, --Bottom Left Corner
0.5 - c, 0.5 - s, --Top Right Corner
0.5 + s, 0.5 - c --Bottom Right Corner
)
end