diff --git a/shapes.lua b/shapes.lua deleted file mode 100644 index e8adeb5..0000000 --- a/shapes.lua +++ /dev/null @@ -1,75 +0,0 @@ --- shapes.lua - Minimap shape masks for SexyMap OctoWoW Edition --- Provides CApplyShape() which clips the minimap to a given shape --- --- IMPORTANT: We use Minimap:SetMaskTexture() instead of creating overlay textures. --- Creating an overlay texture on top of the minimap blocks the map content and causes --- the minimap to appear as pure white. SetMaskTexture clips the minimap to the shape --- without covering it. --- --- In WoW 1.12, SetMaskTexture(nil) does NOT remove the mask — it falls back to --- the default round mask. This means there is no way to show a truly square --- minimap via mask alone. For square shapes, we use the circle mask and rely --- on the border/backdrop visuals to give a square appearance. - -local _G = getfenv(0) - --- The default round minimap mask. --- IMPORTANT: "Interface\Minimap\UI-Minimap-Background" is NOT a mask — it's a --- decorative border texture. Using it with SetMaskTexture causes green rendering. --- The correct default mask is the circle.blp we ship with the addon. -local DEFAULT_MASK = "Interface\\AddOns\\SexyMap\\shapes\\circle.blp" - --- Shape texture paths (addon-local BLP files in shapes/ directory) --- All paths include .blp because SetMaskTexture does NOT auto-append .blp --- (unlike SetBackdrop which does auto-append it). -local shapeTextures = { - ["Round"] = "Interface\\AddOns\\SexyMap\\shapes\\circle.blp", - ["Square"] = "Square", -- special: no mask change, keep default round - ["Diamond"] = "Interface\\AddOns\\SexyMap\\shapes\\diamond.blp", - ["Hexagon"] = "Interface\\AddOns\\SexyMap\\shapes\\hexagon.blp", - ["Octagon"] = "Interface\\AddOns\\SexyMap\\shapes\\octagon.blp", - ["Heart"] = "Interface\\AddOns\\SexyMap\\shapes\\heart.blp", - ["Snowflake"] = "Interface\\AddOns\\SexyMap\\shapes\\circle.blp", - ["LL Corner Rounded"] = "Interface\\AddOns\\SexyMap\\shapes\\bottomleft.blp", - ["LR Corner Rounded"] = "Interface\\AddOns\\SexyMap\\shapes\\bottomright.blp", - ["UL Corner Rounded"] = "Interface\\AddOns\\SexyMap\\shapes\\circle.blp", -- fallback, no topleft BLP - ["UR Corner Rounded"] = "Interface\\AddOns\\SexyMap\\shapes\\circle.blp", -- fallback, no topright BLP - ["Large Circle"] = "Interface\\AddOns\\SexyMap\\shapes\\largecircle.blp", - ["Route66"] = "Interface\\AddOns\\SexyMap\\shapes\\circle.blp", - ["Deathsky"] = "Interface\\AddOns\\SexyMap\\shapes\\deathsky_mask.blp", - ["VFX Border"] = "Interface\\AddOns\\SexyMap\\shapes\\circle.blp", - ["Left"] = "Interface\\AddOns\\SexyMap\\shapes\\left.blp", - ["Bottom"] = "Interface\\AddOns\\SexyMap\\shapes\\bottom.blp", -} - -function CApplyShape(shapeName) - if not shapeName then return end - - local texPath = shapeTextures[shapeName] - - if not texPath then - -- Unknown shape: apply default round mask - Minimap:SetMaskTexture(DEFAULT_MASK) - return - end - - -- Square shape: keep the default round mask. - -- WoW 1.12 does not support removing the mask entirely (SetMaskTexture(nil) - -- just resets to the default round mask). The square appearance for presets - -- like "Ruins" and "Simple Square" comes from their border textures and - -- backdrop frame, not from the minimap mask shape. - if texPath == "Square" then - Minimap:SetMaskTexture(DEFAULT_MASK) - return - end - - -- Use SetMaskTexture to clip the minimap to the shape. - -- pcall protects against invalid texture paths - local ok, err = pcall(function() - Minimap:SetMaskTexture(texPath) - end) - if not ok then - -- Fallback to default round mask if the texture failed to load - Minimap:SetMaskTexture(DEFAULT_MASK) - end -end