diff --git a/libs/CallbackHandler-1.0.lua b/libs/CallbackHandler-1.0.lua new file mode 100644 index 0000000..ca21919 --- /dev/null +++ b/libs/CallbackHandler-1.0.lua @@ -0,0 +1,239 @@ +--[[ $Id: CallbackHandler-1.0.lua 504 2008-02-07 11:04:06Z nevcairiel $ ]] +local MAJOR, MINOR = "CallbackHandler-1.0", 3 +local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) + +if not CallbackHandler then return end -- No upgrade needed + +local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end} + +local type = type +local pcall = pcall +local pairs = pairs +local assert = assert +local concat = table.concat +local loadstring = loadstring +local next = next +local select = select +local type = type +local xpcall = xpcall + +local function errorhandler(err) + return geterrorhandler()(err) +end + +local function CreateDispatcher(argCount) + local code = [[ + local next, xpcall, eh = ... + + local method, ARGS + local function call() method(ARGS) end + + local function dispatch(handlers, ...) + local index + index, method = next(handlers) + if not method then return end + local OLD_ARGS = ARGS + ARGS = ... + repeat + xpcall(call, eh) + index, method = next(handlers, index) + until not method + ARGS = OLD_ARGS + end + + return dispatch + ]] + + local ARGS, OLD_ARGS = {}, {} + for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end + code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", ")) + return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler) +end + +local Dispatchers = setmetatable({}, {__index=function(self, argCount) + local dispatcher = CreateDispatcher(argCount) + rawset(self, argCount, dispatcher) + return dispatcher +end}) + +-------------------------------------------------------------------------- +-- CallbackHandler:New +-- +-- target - target object to embed public APIs in +-- RegisterName - name of the callback registration API, default "RegisterCallback" +-- UnregisterName - name of the callback unregistration API, default "UnregisterCallback" +-- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API. + +function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused) + -- TODO: Remove this after beta has gone out + assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused") + + RegisterName = RegisterName or "RegisterCallback" + UnregisterName = UnregisterName or "UnregisterCallback" + if UnregisterAllName==nil then -- false is used to indicate "don't want this method" + UnregisterAllName = "UnregisterAllCallbacks" + end + + -- we declare all objects and exported APIs inside this closure to quickly gain access + -- to e.g. function names, the "target" parameter, etc + + + -- Create the registry object + local events = setmetatable({}, meta) + local registry = { recurse=0, events=events } + + -- registry:Fire() - fires the given event/message into the registry + function registry:Fire(eventname, ...) + if not rawget(events, eventname) or not next(events[eventname]) then return end + local oldrecurse = registry.recurse + registry.recurse = oldrecurse + 1 + + Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...) + + registry.recurse = oldrecurse + + if registry.insertQueue and oldrecurse==0 then + -- Something in one of our callbacks wanted to register more callbacks; they got queued + for eventname,callbacks in pairs(registry.insertQueue) do + local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten. + for self,func in pairs(callbacks) do + events[eventname][self] = func + -- fire OnUsed callback? + if first and registry.OnUsed then + registry.OnUsed(registry, target, eventname) + first = nil + end + end + end + registry.insertQueue = nil + end + end + + -- Registration of a callback, handles: + -- self["method"], leads to self["method"](self, ...) + -- self with function ref, leads to functionref(...) + -- "addonId" (instead of self) with function ref, leads to functionref(...) + -- all with an optional arg, which, if present, gets passed as first argument (after self if present) + target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]]) + if type(eventname) ~= "string" then + error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2) + end + + method = method or eventname + + local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten. + + if type(method) ~= "string" and type(method) ~= "function" then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2) + end + + local regfunc + + if type(method) == "string" then + -- self["method"] calling style + if type(self) ~= "table" then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2) + elseif self==target then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2) + elseif type(self[method]) ~= "function" then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2) + end + + if select("#",...)>=1 then -- this is not the same as testing for arg==nil! + local arg=select(1,...) + regfunc = function(...) self[method](self,arg,...) end + else + regfunc = function(...) self[method](self,...) end + end + else + -- function ref with self=object or self="addonId" + if type(self)~="table" and type(self)~="string" then + error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2) + end + + if select("#",...)>=1 then -- this is not the same as testing for arg==nil! + local arg=select(1,...) + regfunc = function(...) method(arg,...) end + else + regfunc = method + end + end + + + if events[eventname][self] or registry.recurse<1 then + -- if registry.recurse<1 then + -- we're overwriting an existing entry, or not currently recursing. just set it. + events[eventname][self] = regfunc + -- fire OnUsed callback? + if registry.OnUsed and first then + registry.OnUsed(registry, target, eventname) + end + else + -- we're currently processing a callback in this registry, so delay the registration of this new entry! + -- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency + registry.insertQueue = registry.insertQueue or setmetatable({},meta) + registry.insertQueue[eventname][self] = regfunc + end + end + + -- Unregister a callback + target[UnregisterName] = function(self, eventname) + if not self or self==target then + error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2) + end + if type(eventname) ~= "string" then + error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2) + end + if rawget(events, eventname) and events[eventname][self] then + events[eventname][self] = nil + -- Fire OnUnused callback? + if registry.OnUnused and not next(events[eventname]) then + registry.OnUnused(registry, target, eventname) + end + end + if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then + registry.insertQueue[eventname][self] = nil + end + end + + -- OPTIONAL: Unregister all callbacks for given selfs/addonIds + if UnregisterAllName then + target[UnregisterAllName] = function(...) + if select("#",...)<1 then + error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2) + end + if select("#",...)==1 and ...==target then + error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2) + end + + + for i=1,select("#",...) do + local self = select(i,...) + if registry.insertQueue then + for eventname, callbacks in pairs(registry.insertQueue) do + if callbacks[self] then + callbacks[self] = nil + end + end + end + for eventname, callbacks in pairs(events) do + if callbacks[self] then + callbacks[self] = nil + -- Fire OnUnused callback? + if registry.OnUnused and not next(callbacks) then + registry.OnUnused(registry, target, eventname) + end + end + end + end + end + end + + return registry +end + + +-- CallbackHandler purposefully does NOT do explicit embedding. Nor does it +-- try to upgrade old implicit embeds since the system is selfcontained and +-- relies on closures to work. + diff --git a/libs/LibSharedMedia-3.0.lua b/libs/LibSharedMedia-3.0.lua new file mode 100644 index 0000000..ef062a0 --- /dev/null +++ b/libs/LibSharedMedia-3.0.lua @@ -0,0 +1,230 @@ +--[[ +Name: LibSharedMedia-3.0 +Revision: $Revision: 58 $ +Author: Elkano (elkano@gmx.de) +Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com) +Website: http://www.wowace.com/projects/libsharedmedia-3-0/ +Description: Shared handling of media data (fonts, sounds, textures, ...) between addons. +Dependencies: LibStub, CallbackHandler-1.0 +License: LGPL v2.1 +]] + +local MAJOR, MINOR = "LibSharedMedia-3.0", 90000 + tonumber(("$Revision: 58 $"):match("(%d+)")) +local lib = LibStub:NewLibrary(MAJOR, MINOR) + +if not lib then return end + +local _G = getfenv(0) + +local pairs = _G.pairs +local type = _G.type + +local band = _G.bit.band + +local table_insert = _G.table.insert +local table_sort = _G.table.sort + +local locale = GetLocale() +local locale_is_western +local LOCALE_MASK = 0 +lib.LOCALE_BIT_koKR = 1 +lib.LOCALE_BIT_ruRU = 2 +lib.LOCALE_BIT_zhCN = 4 +lib.LOCALE_BIT_zhTW = 8 +lib.LOCALE_BIT_western = 128 + +local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0") + +lib.callbacks = lib.callbacks or CallbackHandler:New(lib) + +lib.DefaultMedia = lib.DefaultMedia or {} +lib.MediaList = lib.MediaList or {} +lib.MediaTable = lib.MediaTable or {} +lib.MediaType = lib.MediaType or {} +lib.OverrideMedia = lib.OverrideMedia or {} + +local defaultMedia = lib.DefaultMedia +local mediaList = lib.MediaList +local mediaTable = lib.MediaTable +local overrideMedia = lib.OverrideMedia + + +-- create mediatype constants +lib.MediaType.BACKGROUND = "background" -- background textures +lib.MediaType.BORDER = "border" -- border textures +lib.MediaType.FONT = "font" -- fonts +lib.MediaType.STATUSBAR = "statusbar" -- statusbar textures +lib.MediaType.SOUND = "sound" -- sound files + +-- populate lib with default Blizzard data +-- BACKGROUND +if not lib.MediaTable.background then lib.MediaTable.background = {} end +lib.MediaTable.background["Blizzard Dialog Background"] = [[Interface\DialogFrame\UI-DialogBox-Background]] +lib.MediaTable.background["Blizzard Low Health"] = [[Interface\FullScreenTextures\LowHealth]] +lib.MediaTable.background["Blizzard Out of Control"] = [[Interface\FullScreenTextures\OutOfControl]] +lib.MediaTable.background["Blizzard Parchment"] = [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]] +lib.MediaTable.background["Blizzard Parchment 2"] = [[Interface\AchievementFrame\UI-Achievement-Parchment]] +lib.MediaTable.background["Blizzard Tabard Background"] = [[Interface\TabardFrame\TabardFrameBackground]] +lib.MediaTable.background["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Background]] +lib.MediaTable.background["Solid"] = [[Interface\Buttons\WHITE8X8]] + +-- BORDER +if not lib.MediaTable.border then lib.MediaTable.border = {} end +lib.MediaTable.border["None"] = [[Interface\None]] +lib.MediaTable.border["Blizzard Achievement Wood"] = [[Interface\AchievementFrame\UI-Achievement-WoodBorder]] +lib.MediaTable.border["Blizzard Chat Bubble"] = [[Interface\Tooltips\ChatBubble-Backdrop]] +lib.MediaTable.border["Blizzard Dialog"] = [[Interface\DialogFrame\UI-DialogBox-Border]] +lib.MediaTable.border["Blizzard Dialog Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Border]] +lib.MediaTable.border["Blizzard Party"] = [[Interface\CHARACTERFRAME\UI-Party-Border]] +lib.MediaTable.border["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Border]] + +-- FONT +if not lib.MediaTable.font then lib.MediaTable.font = {} end +local SML_MT_font = lib.MediaTable.font +if locale == "koKR" then + LOCALE_MASK = lib.LOCALE_BIT_koKR +-- + SML_MT_font["굵은 글꼴"] = [[Fonts\2002B.TTF]] + SML_MT_font["기본 글꼴"] = [[Fonts\2002.TTF]] + SML_MT_font["데미지 글꼴"] = [[Fonts\K_Damage.TTF]] + SML_MT_font["퀘스트 글꼴"] = [[Fonts\K_Pagetext.TTF]] +-- + lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed +-- +elseif locale == "zhCN" then + LOCALE_MASK = lib.LOCALE_BIT_zhCN +-- + SML_MT_font["伤害数字"] = [[Fonts\ZYKai_C.ttf]] + SML_MT_font["默认"] = [[Fonts\ZYKai_T.ttf]] + SML_MT_font["聊天"] = [[Fonts\ZYHei.ttf]] +-- + lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed +-- +elseif locale == "zhTW" then + LOCALE_MASK = lib.LOCALE_BIT_zhTW +-- + SML_MT_font["提示訊息"] = [[Fonts\bHEI00M.ttf]] + SML_MT_font["聊天"] = [[Fonts\bHEI01B.ttf]] + SML_MT_font["傷害數字"] = [[Fonts\bKAI00M.ttf]] + SML_MT_font["預設"] = [[Fonts\bLEI00D.ttf]] +-- + lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed + +elseif locale == "ruRU" then + LOCALE_MASK = lib.LOCALE_BIT_ruRU +-- + SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]] + SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]] + SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS.TTF]] + SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]] + SML_MT_font["Skurri"] = [[Fonts\SKURRI.TTF]] +-- + lib.DefaultMedia.font = "Friz Quadrata TT" +-- +else + LOCALE_MASK = lib.LOCALE_BIT_western + locale_is_western = true +-- + SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]] + SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]] + SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS.TTF]] + SML_MT_font["Skurri"] = [[Fonts\SKURRI.TTF]] +-- + lib.DefaultMedia.font = "Friz Quadrata TT" +-- +end + +-- STATUSBAR +if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end +lib.MediaTable.statusbar["Blizzard"] = [[Interface\TargetingFrame\UI-StatusBar]] +lib.DefaultMedia.statusbar = "Blizzard" + +-- SOUND +if not lib.MediaTable.sound then lib.MediaTable.sound = {} end +lib.MediaTable.sound["None"] = [[Interface\Quiet.mp3]] -- Relies on the fact that PlaySound[File] doesn't error on non-existing input. +lib.DefaultMedia.sound = "None" + +local function rebuildMediaList(mediatype) + local mtable = mediaTable[mediatype] + if not mtable then return end + if not mediaList[mediatype] then mediaList[mediatype] = {} end + local mlist = mediaList[mediatype] + -- list can only get larger, so simply overwrite it + local i = 0 + for k in pairs(mtable) do + i = i + 1 + mlist[i] = k + end + table_sort(mlist) +end + +function lib:Register(mediatype, key, data, langmask) + if type(mediatype) ~= "string" then + error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype)) + end + if type(key) ~= "string" then + error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key)) + end + if mediatype == lib.MediaType.FONT and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then return false end + mediatype = mediatype:lower() + if not mediaTable[mediatype] then mediaTable[mediatype] = {} end + local mtable = mediaTable[mediatype] + if mtable[key] then return false end + + mtable[key] = data + rebuildMediaList(mediatype) + self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key) + return true +end + +function lib:Fetch(mediatype, key, noDefault) + local mtt = mediaTable[mediatype] + local overridekey = overrideMedia[mediatype] + local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil + + return result +end + +function lib:IsValid(mediatype, key) + return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false +end + +function lib:HashTable(mediatype) + return mediaTable[mediatype] +end + +function lib:List(mediatype) + if not mediaTable[mediatype] then + return nil + end + if not mediaList[mediatype] then + rebuildMediaList(mediatype) + end + return mediaList[mediatype] +end + +function lib:GetGlobal(mediatype) + return overrideMedia[mediatype] +end + +function lib:SetGlobal(mediatype, key) + if not mediaTable[mediatype] then + return false + end + overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil + self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype]) + return true +end + +function lib:GetDefault(mediatype) + return defaultMedia[mediatype] +end + +function lib:SetDefault(mediatype, key) + if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then + defaultMedia[mediatype] = key + return true + else + return false + end +end diff --git a/libs/LibStub.lua b/libs/LibStub.lua new file mode 100644 index 0000000..cfc97de --- /dev/null +++ b/libs/LibStub.lua @@ -0,0 +1,30 @@ +-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info +-- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke +local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS! +local LibStub = _G[LIBSTUB_MAJOR] + +if not LibStub or LibStub.minor < LIBSTUB_MINOR then + LibStub = LibStub or {libs = {}, minors = {} } + _G[LIBSTUB_MAJOR] = LibStub + LibStub.minor = LIBSTUB_MINOR + + function LibStub:NewLibrary(major, minor) + assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)") + minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.") + + local oldminor = self.minors[major] + if oldminor and oldminor >= minor then return nil end + self.minors[major], self.libs[major] = minor, self.libs[major] or {} + return self.libs[major], oldminor + end + + function LibStub:GetLibrary(major, silent) + if not self.libs[major] and not silent then + error(("Cannot find a library instance of %q."):format(tostring(major)), 2) + end + return self.libs[major], self.minors[major] + end + + function LibStub:IterateLibraries() return pairs(self.libs) end + setmetatable(LibStub, { __call = LibStub.GetLibrary }) +end diff --git a/media/font.ttf b/media/font.ttf new file mode 100644 index 0000000..04ce123 Binary files /dev/null and b/media/font.ttf differ diff --git a/pMinimap.lua b/pMinimap.lua new file mode 100644 index 0000000..f359a98 --- /dev/null +++ b/pMinimap.lua @@ -0,0 +1,306 @@ +--[[ + + Copyright (c) 2009, Adrian L Lange + All rights reserved. + + You're allowed to use this addon, free of monetary charge, + but you are not allowed to modify, alter, or redistribute + this addon without express, written permission of the author. + +--]] + +pMinimap = CreateFrame('Frame', 'pMinimap', UIParent) +pMinimap:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end) +pMinimap:RegisterEvent('ADDON_LOADED') + +local LSM = LibStub('LibSharedMedia-3.0') + +local onUpdate, onClickClock, onClickCoord, onMouseWheel +local defaults = { + coords = false, + coordsDecimals = 0, + clock = true, + dura = true, + mail = true, + subzone = false, + unlocked = false, + scale = 0.9, + offset = 1, + level = 2, + strata = 'BACKGROUND', + smfont = 'Visitor TT1', + fontsize = 13, + fontflag = 'OUTLINE', + colors = {0, 0, 0, 1}, + zone = false, + zonePoint = 'TOP', + zoneOffset = 8, +} + +do + local total = 0.25 + function onUpdate(self, elapsed) + if(total) then + total = total - elapsed + if(total <= 0) then + total = 0.25 + + local x, y = GetPlayerMapPosition('player') + if(x ~= 0 and y ~= 0) then + self.Text:SetFormattedText('%.'..pMinimapDB.coordsDecimals..'f,%.'..pMinimapDB.coordsDecimals..'f', x * 100, y * 100) + else + self.Text:SetText() + end + end + end + end + + function onClickClock(self, button) + if(button == 'RightButton') then + ToggleCalendar() + else + if(self.alarmFiring) then + PlaySound('igMainMenuQuit') + TimeManager_TurnOffAlarm() + else + ToggleTimeManager() + end + end + end + + function onClickCoord(self, button) + if(button == 'RightButton') then + ToggleBattlefieldMinimap() + else + ToggleFrame(WorldMapFrame) + end + end + + function onMouseWheel(self, dir) + if(dir > 0) then + MinimapZoomIn:Click() + else + MinimapZoomOut:Click() + end + end +end + + +local function slashHandler(str) + if(str == 'reset') then + pMinimapDB = {} + print('|cffff8080pMinimap:|r Savedvariables is now reset. You should reload/relog to affect changes.') + elseif(str == 'refresh') then + Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=]) + print('|cffff8080pMinimap:|r Minimap mask is now refreshed.') + else + if(not IsAddOnLoaded('pMinimap_Config')) then + LoadAddOn('pMinimap_Config') + end + InterfaceOptionsFrame_OpenToCategory('pMinimap') + end +end + +local function optionsPanel(self) + if(not IsAddOnLoaded('pMinimap_Config')) then + LoadAddOn('pMinimap_Config') + end + self:SetScript('OnShow', nil) + + InterfaceOptionsDisplayPanelShowClock:Disable() + InterfaceOptionsDisplayPanelShowClock:Hide() +end + +local function Initialize(self) + Minimap:EnableMouseWheel() + Minimap:SetScript('OnMouseWheel', onMouseWheel) + MinimapZoomIn:Hide() + MinimapZoomOut:Hide() + + MiniMapTrackingBackground:Hide() + MiniMapTrackingButton:SetHighlightTexture('') + MiniMapTrackingButtonBorder:SetTexture('') + MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935) + MiniMapTrackingIconOverlay:SetTexture('') + MiniMapTracking:SetParent(Minimap) + MiniMapTracking:ClearAllPoints() + MiniMapTracking:SetPoint('TOPLEFT', -2, 2) + + BattlegroundShine:Hide() + MiniMapBattlefieldBorder:SetTexture('') + MiniMapBattlefieldFrame:SetParent(Minimap) + MiniMapBattlefieldFrame:ClearAllPoints() + MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2) + + MiniMapMailBorder:SetTexture('') + MiniMapMailFrame:SetParent(Minimap) + MiniMapMailFrame:ClearAllPoints() + MiniMapMailFrame:SetPoint('TOP', 0, -4) + MiniMapMailFrame:SetHeight(8) + + MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY') + MiniMapMailText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) + MiniMapMailText:SetPoint('BOTTOM', 0, 2) + MiniMapMailText:SetText('New Mail!') + MiniMapMailText:SetTextColor(1, 1, 1) + + MinimapZoneTextButton:SetParent(Minimap) + MinimapZoneTextButton:ClearAllPoints() + MinimapZoneTextButton:SetPoint(self.db.zonePoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonePoint, 0, self.db.zoneOffset) + MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5) + + MinimapZoneText:ClearAllPoints() + MinimapZoneText:SetAllPoints(MinimapZoneTextButton) + MinimapZoneText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) + MinimapZoneText:SetShadowOffset(0, 0) + + MinimapBorder:SetTexture('') + MinimapBorderTop:Hide() + MinimapToggleButton:Hide() + + GameTimeFrame:Hide() + MiniMapWorldMapButton:Hide() + MiniMapMeetingStoneFrame:SetAlpha(0) + MiniMapVoiceChatFrame:Hide() + MiniMapVoiceChatFrame.Show = MiniMapVoiceChatFrame.Hide + MinimapNorthTag:SetAlpha(0) + + Minimap:SetScale(self.db.scale) + Minimap:SetFrameLevel(self.db.level) + Minimap:SetFrameStrata(self.db.strata) + Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=]) + Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - self.db.offset, left = - self.db.offset, bottom = - self.db.offset, right = - self.db.offset}}) + Minimap:SetBackdropColor(unpack(self.db.colors)) + + MinimapCluster:EnableMouse(false) + Minimap:SetMovable(true) + Minimap:RegisterForDrag('LeftButton') + Minimap:SetScript('OnDragStop', function() if(pMinimapDB.unlocked) then Minimap:StopMovingOrSizing() end end) + Minimap:SetScript('OnDragStart', function() if(pMinimapDB.unlocked) then Minimap:StartMoving() end end) + + if(not self.db.zone) then + MinimapZoneTextButton:Hide() + end + + if(self.db.dura) then + DurabilityFrame:SetAlpha(0) + + self:RegisterEvent('UPDATE_INVENTORY_ALERTS') + self.UPDATE_INVENTORY_ALERTS() + end + + if(self.db.coords) then + self:CreateCoords() + end + + if(self.db.clock) then + self:CreateClock() + else + TimeManagerClockButton:Hide() + end + + if(self.db.mail) then + MiniMapMailIcon:Hide() + else + MiniMapMailText:Hide() + end +end + + +function pMinimap:CreateClock() + TimeManager_LoadUI() + + TimeManagerClockButton:SetWidth(40) + TimeManagerClockButton:SetHeight(14) + TimeManagerClockButton:ClearAllPoints() + TimeManagerClockButton:SetPoint(self.db.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) + TimeManagerClockButton:GetRegions():Hide() + TimeManagerClockButton:Show() + TimeManagerClockButton:SetScript('OnClick', onClickClock) + + TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton) + TimeManagerClockTicker:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) + TimeManagerClockTicker:SetShadowOffset(0, 0) + + TimeManagerAlarmFiredTexture.Show = function() TimeManagerClockTicker:SetTextColor(1, 0, 0) end + TimeManagerAlarmFiredTexture.Hide = function() TimeManagerClockTicker:SetTextColor(1, 1, 1) end + + self:RegisterEvent('CALENDAR_UPDATE_PENDING_INVITES') + self.CALENDAR_UPDATE_PENDING_INVITES() + + self.RunClock = true +end + +function pMinimap:CreateCoords() + self.Coord = CreateFrame('Button', nil, Minimap) + self.Coord:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) + self.Coord:SetWidth(40) + self.Coord:SetHeight(14) + self.Coord:RegisterForClicks('AnyUp') + + self.Coord.Text = self.Coord:CreateFontString(nil, 'OVERLAY') + self.Coord.Text:SetPoint('BOTTOMRIGHT', self.Coord) + self.Coord.Text:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) + self.Coord.Text:SetTextColor(1, 1, 1) + + self.Coord:SetScript('OnClick', onClickCoord) + self.Coord:SetScript('OnUpdate', onUpdate) + + self:RegisterEvent('ZONE_CHANGED_NEW_AREA') +end + + +function pMinimap:ADDON_LOADED(event, addon) + if(addon ~= 'pMinimap') then return end + + CreateFrame('Frame', nil, InterfaceOptionsFrame):SetScript('OnShow', optionsPanel) + LSM:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\font.ttf]=]) + + SLASH_PMINIMAP1 = '/pmm' + SLASH_PMINIMAP2 = '/pminimap' + SlashCmdList.PMINIMAP = slashHandler + + pMinimapDB = setmetatable(pMinimapDB or {}, {__index = defaults}) + pMinimapDB.unlocked = false + + self.db = pMinimapDB + self:UnregisterEvent(event) + + InterfaceOptionsDisplayPanelShowClock.setFunc('1') + InterfaceOptionsDisplayPanelShowClock.setFunc = function() end + + Initialize(self) +end + +function pMinimap:CALENDAR_UPDATE_PENDING_INVITES() + if(CalendarGetNumPendingInvites() ~= 0) then + TimeManagerClockTicker:SetTextColor(0, 1, 0) + else + TimeManagerClockTicker:SetTextColor(1, 1, 1) + end +end + +function pMinimap:ZONE_CHANGED_NEW_AREA() + SetMapToCurrentZone() +end + +function pMinimap:UPDATE_INVENTORY_ALERTS() + local highstatus = 0 + for i in next, INVENTORY_ALERT_STATUS_SLOTS do + local status = GetInventoryAlertStatus(i) + if(status > highstatus) then + highstatus = status + end + end + + local color = INVENTORY_ALERT_COLORS[highstatus] + if(color) then + Minimap:SetBackdropColor(color.r, color.g, color.b) + else + Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) + end +end + + +-- http://www.wowwiki.com/GetMinimapShape +function GetMinimapShape() return 'SQUARE' end \ No newline at end of file diff --git a/pMinimap.toc b/pMinimap.toc new file mode 100644 index 0000000..637a070 --- /dev/null +++ b/pMinimap.toc @@ -0,0 +1,15 @@ +## Interface: 30100 +## Author: p3lim +## Version: Alpha +## Title: |cffff6000p|rMinimap +## Notes: Yet another square minimap addon +## SavedVariablesPerCharacter: pMinimapDB +## OptionalDeps: LibSharedMedia-3.0, SharedMedia + +libs\LibStub.lua +libs\CallbackHandler-1.0.lua +libs\LibSharedMedia-3.0.lua + +pMinimap.lua + +pMinimap_Config.lua \ No newline at end of file diff --git a/pMinimap/font.ttf b/pMinimap/font.ttf deleted file mode 100644 index 04ce123..0000000 Binary files a/pMinimap/font.ttf and /dev/null differ diff --git a/pMinimap/pMinimap.lua b/pMinimap/pMinimap.lua deleted file mode 100644 index f359a98..0000000 --- a/pMinimap/pMinimap.lua +++ /dev/null @@ -1,306 +0,0 @@ ---[[ - - Copyright (c) 2009, Adrian L Lange - All rights reserved. - - You're allowed to use this addon, free of monetary charge, - but you are not allowed to modify, alter, or redistribute - this addon without express, written permission of the author. - ---]] - -pMinimap = CreateFrame('Frame', 'pMinimap', UIParent) -pMinimap:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end) -pMinimap:RegisterEvent('ADDON_LOADED') - -local LSM = LibStub('LibSharedMedia-3.0') - -local onUpdate, onClickClock, onClickCoord, onMouseWheel -local defaults = { - coords = false, - coordsDecimals = 0, - clock = true, - dura = true, - mail = true, - subzone = false, - unlocked = false, - scale = 0.9, - offset = 1, - level = 2, - strata = 'BACKGROUND', - smfont = 'Visitor TT1', - fontsize = 13, - fontflag = 'OUTLINE', - colors = {0, 0, 0, 1}, - zone = false, - zonePoint = 'TOP', - zoneOffset = 8, -} - -do - local total = 0.25 - function onUpdate(self, elapsed) - if(total) then - total = total - elapsed - if(total <= 0) then - total = 0.25 - - local x, y = GetPlayerMapPosition('player') - if(x ~= 0 and y ~= 0) then - self.Text:SetFormattedText('%.'..pMinimapDB.coordsDecimals..'f,%.'..pMinimapDB.coordsDecimals..'f', x * 100, y * 100) - else - self.Text:SetText() - end - end - end - end - - function onClickClock(self, button) - if(button == 'RightButton') then - ToggleCalendar() - else - if(self.alarmFiring) then - PlaySound('igMainMenuQuit') - TimeManager_TurnOffAlarm() - else - ToggleTimeManager() - end - end - end - - function onClickCoord(self, button) - if(button == 'RightButton') then - ToggleBattlefieldMinimap() - else - ToggleFrame(WorldMapFrame) - end - end - - function onMouseWheel(self, dir) - if(dir > 0) then - MinimapZoomIn:Click() - else - MinimapZoomOut:Click() - end - end -end - - -local function slashHandler(str) - if(str == 'reset') then - pMinimapDB = {} - print('|cffff8080pMinimap:|r Savedvariables is now reset. You should reload/relog to affect changes.') - elseif(str == 'refresh') then - Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=]) - print('|cffff8080pMinimap:|r Minimap mask is now refreshed.') - else - if(not IsAddOnLoaded('pMinimap_Config')) then - LoadAddOn('pMinimap_Config') - end - InterfaceOptionsFrame_OpenToCategory('pMinimap') - end -end - -local function optionsPanel(self) - if(not IsAddOnLoaded('pMinimap_Config')) then - LoadAddOn('pMinimap_Config') - end - self:SetScript('OnShow', nil) - - InterfaceOptionsDisplayPanelShowClock:Disable() - InterfaceOptionsDisplayPanelShowClock:Hide() -end - -local function Initialize(self) - Minimap:EnableMouseWheel() - Minimap:SetScript('OnMouseWheel', onMouseWheel) - MinimapZoomIn:Hide() - MinimapZoomOut:Hide() - - MiniMapTrackingBackground:Hide() - MiniMapTrackingButton:SetHighlightTexture('') - MiniMapTrackingButtonBorder:SetTexture('') - MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935) - MiniMapTrackingIconOverlay:SetTexture('') - MiniMapTracking:SetParent(Minimap) - MiniMapTracking:ClearAllPoints() - MiniMapTracking:SetPoint('TOPLEFT', -2, 2) - - BattlegroundShine:Hide() - MiniMapBattlefieldBorder:SetTexture('') - MiniMapBattlefieldFrame:SetParent(Minimap) - MiniMapBattlefieldFrame:ClearAllPoints() - MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2) - - MiniMapMailBorder:SetTexture('') - MiniMapMailFrame:SetParent(Minimap) - MiniMapMailFrame:ClearAllPoints() - MiniMapMailFrame:SetPoint('TOP', 0, -4) - MiniMapMailFrame:SetHeight(8) - - MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY') - MiniMapMailText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) - MiniMapMailText:SetPoint('BOTTOM', 0, 2) - MiniMapMailText:SetText('New Mail!') - MiniMapMailText:SetTextColor(1, 1, 1) - - MinimapZoneTextButton:SetParent(Minimap) - MinimapZoneTextButton:ClearAllPoints() - MinimapZoneTextButton:SetPoint(self.db.zonePoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonePoint, 0, self.db.zoneOffset) - MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5) - - MinimapZoneText:ClearAllPoints() - MinimapZoneText:SetAllPoints(MinimapZoneTextButton) - MinimapZoneText:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) - MinimapZoneText:SetShadowOffset(0, 0) - - MinimapBorder:SetTexture('') - MinimapBorderTop:Hide() - MinimapToggleButton:Hide() - - GameTimeFrame:Hide() - MiniMapWorldMapButton:Hide() - MiniMapMeetingStoneFrame:SetAlpha(0) - MiniMapVoiceChatFrame:Hide() - MiniMapVoiceChatFrame.Show = MiniMapVoiceChatFrame.Hide - MinimapNorthTag:SetAlpha(0) - - Minimap:SetScale(self.db.scale) - Minimap:SetFrameLevel(self.db.level) - Minimap:SetFrameStrata(self.db.strata) - Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=]) - Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - self.db.offset, left = - self.db.offset, bottom = - self.db.offset, right = - self.db.offset}}) - Minimap:SetBackdropColor(unpack(self.db.colors)) - - MinimapCluster:EnableMouse(false) - Minimap:SetMovable(true) - Minimap:RegisterForDrag('LeftButton') - Minimap:SetScript('OnDragStop', function() if(pMinimapDB.unlocked) then Minimap:StopMovingOrSizing() end end) - Minimap:SetScript('OnDragStart', function() if(pMinimapDB.unlocked) then Minimap:StartMoving() end end) - - if(not self.db.zone) then - MinimapZoneTextButton:Hide() - end - - if(self.db.dura) then - DurabilityFrame:SetAlpha(0) - - self:RegisterEvent('UPDATE_INVENTORY_ALERTS') - self.UPDATE_INVENTORY_ALERTS() - end - - if(self.db.coords) then - self:CreateCoords() - end - - if(self.db.clock) then - self:CreateClock() - else - TimeManagerClockButton:Hide() - end - - if(self.db.mail) then - MiniMapMailIcon:Hide() - else - MiniMapMailText:Hide() - end -end - - -function pMinimap:CreateClock() - TimeManager_LoadUI() - - TimeManagerClockButton:SetWidth(40) - TimeManagerClockButton:SetHeight(14) - TimeManagerClockButton:ClearAllPoints() - TimeManagerClockButton:SetPoint(self.db.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) - TimeManagerClockButton:GetRegions():Hide() - TimeManagerClockButton:Show() - TimeManagerClockButton:SetScript('OnClick', onClickClock) - - TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton) - TimeManagerClockTicker:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) - TimeManagerClockTicker:SetShadowOffset(0, 0) - - TimeManagerAlarmFiredTexture.Show = function() TimeManagerClockTicker:SetTextColor(1, 0, 0) end - TimeManagerAlarmFiredTexture.Hide = function() TimeManagerClockTicker:SetTextColor(1, 1, 1) end - - self:RegisterEvent('CALENDAR_UPDATE_PENDING_INVITES') - self.CALENDAR_UPDATE_PENDING_INVITES() - - self.RunClock = true -end - -function pMinimap:CreateCoords() - self.Coord = CreateFrame('Button', nil, Minimap) - self.Coord:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) - self.Coord:SetWidth(40) - self.Coord:SetHeight(14) - self.Coord:RegisterForClicks('AnyUp') - - self.Coord.Text = self.Coord:CreateFontString(nil, 'OVERLAY') - self.Coord.Text:SetPoint('BOTTOMRIGHT', self.Coord) - self.Coord.Text:SetFont(LSM:Fetch('font', self.db.smfont), self.db.fontsize, self.db.fontflag) - self.Coord.Text:SetTextColor(1, 1, 1) - - self.Coord:SetScript('OnClick', onClickCoord) - self.Coord:SetScript('OnUpdate', onUpdate) - - self:RegisterEvent('ZONE_CHANGED_NEW_AREA') -end - - -function pMinimap:ADDON_LOADED(event, addon) - if(addon ~= 'pMinimap') then return end - - CreateFrame('Frame', nil, InterfaceOptionsFrame):SetScript('OnShow', optionsPanel) - LSM:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\font.ttf]=]) - - SLASH_PMINIMAP1 = '/pmm' - SLASH_PMINIMAP2 = '/pminimap' - SlashCmdList.PMINIMAP = slashHandler - - pMinimapDB = setmetatable(pMinimapDB or {}, {__index = defaults}) - pMinimapDB.unlocked = false - - self.db = pMinimapDB - self:UnregisterEvent(event) - - InterfaceOptionsDisplayPanelShowClock.setFunc('1') - InterfaceOptionsDisplayPanelShowClock.setFunc = function() end - - Initialize(self) -end - -function pMinimap:CALENDAR_UPDATE_PENDING_INVITES() - if(CalendarGetNumPendingInvites() ~= 0) then - TimeManagerClockTicker:SetTextColor(0, 1, 0) - else - TimeManagerClockTicker:SetTextColor(1, 1, 1) - end -end - -function pMinimap:ZONE_CHANGED_NEW_AREA() - SetMapToCurrentZone() -end - -function pMinimap:UPDATE_INVENTORY_ALERTS() - local highstatus = 0 - for i in next, INVENTORY_ALERT_STATUS_SLOTS do - local status = GetInventoryAlertStatus(i) - if(status > highstatus) then - highstatus = status - end - end - - local color = INVENTORY_ALERT_COLORS[highstatus] - if(color) then - Minimap:SetBackdropColor(color.r, color.g, color.b) - else - Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) - end -end - - --- http://www.wowwiki.com/GetMinimapShape -function GetMinimapShape() return 'SQUARE' end \ No newline at end of file diff --git a/pMinimap/pMinimap.toc b/pMinimap/pMinimap.toc deleted file mode 100644 index 043d3ae..0000000 --- a/pMinimap/pMinimap.toc +++ /dev/null @@ -1,13 +0,0 @@ -## Interface: 30100 -## Author: p3lim -## Version: 30100.wowi:revision -## Title: |cffff6000p|rMinimap -## Notes: Yet another square minimap addon -## SavedVariablesPerCharacter: pMinimapDB -## OptionalDeps: Ace3, LibSharedMedia-3.0, SharedMedia - -libs\LibStub\LibStub.lua -libs\CallbackHandler-1.0\CallbackHandler-1.0.xml -libs\LibSharedMedia-3.0\Lib.xml - -pMinimap.lua \ No newline at end of file diff --git a/pMinimap_Config.lua b/pMinimap_Config.lua new file mode 100644 index 0000000..afe9d2a --- /dev/null +++ b/pMinimap_Config.lua @@ -0,0 +1 @@ +--[[ Copyright (c) 2009, Adrian L Lange All rights reserved. You're allowed to use this addon, free of monetary charge, but you are not allowed to modify, alter, or redistribute this addon without express, written permission of the author. --]] local LSM = LibStub('LibSharedMedia-3.0') local list = LSM:List('font') local function AddToFontStrings() MiniMapMailText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) MinimapZoneText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) if(pMinimapDB.clock) then TimeManagerClockTicker:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end if(pMinimapDB.coords) then pMinimap.Coord.Text:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end end LibStub('AceConfigDialog-3.0'):AddToBlizOptions('pMinimap', 'pMinimap') LibStub('AceConfig-3.0'):RegisterOptionsTable('pMinimap', { name = 'pMinimap Options', type = 'group', args = { mapheader = { name = 'Minimap options', type = 'header', order = 0, }, scale = { type = 'range', order = 1, name = 'Minimap Scale', min = 0.50, max = 2.50, step = 0.01, get = function() return pMinimapDB.scale end, set = function(_, value) pMinimapDB.scale = value Minimap:SetScale(value) end, }, lock = { type = 'toggle', order = 2, name = 'Unlocked', get = function() return pMinimapDB.unlocked end, set = function() pMinimapDB.unlocked = not pMinimapDB.unlocked if(pMinimapDB.unlocked) then Minimap:SetBackdropColor(0, 1, 0, 0.5) else Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, level = { type = 'range', order = 3, name = 'Frame level', min = 1, max = 15, step = 1, get = function() return pMinimapDB.level end, set = function(_, value) pMinimapDB.level = value Minimap:SetFrameLevel(value) end }, strata = { type = 'select', order = 4, name = 'Frame Strata', values = {['DIALOG'] = 'DIALOG', ['HIGH'] = 'HIGH', ['MEDIUM'] = 'MEDIUM', ['LOW'] = 'LOW', ['BACKGROUND'] = 'BACKGROUND'}, get = function() return pMinimapDB.strata end, set = function(_, strata) pMinimapDB.strata = strata Minimap:SetFrameStrata(strata) end }, mischeader = { name = 'Misc modules', type = 'header', order = 5, }, clock = { type = 'toggle', order = 6, name = 'Clock', get = function() return pMinimapDB.clock end, set = function() pMinimapDB.clock = not pMinimapDB.clock if(pMinimapDB.clock) then if(not pMinimap.RunClock) then pMinimap:CreateClock() else TimeManagerClockButton:Show() TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end pMinimap.CALENDAR_UPDATE_PENDING_INVITES() else TimeManagerClockButton:Hide() end if(pMinimapDB.coords) then pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end end }, coords = { type = 'toggle', order = 7, name = 'Coords', get = function() return pMinimapDB.coords end, set = function() pMinimapDB.coords = not pMinimapDB.coords if(pMinimapDB.coords) then if(not pMinimap.Coord) then pMinimap:CreateCoords() else pMinimap.Coord:Show() pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end else pMinimap.Coord:Hide() end if(pMinimapDB.clock) then TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end end }, mail = { type = 'toggle', order = 8, name = 'Mail', get = function() return pMinimapDB.mail end, set = function() pMinimapDB.mail = not pMinimapDB.mail if(pMinimapDB.mail) then MiniMapMailIcon:Hide() MiniMapMailText:Show() else MiniMapMailIcon:Show() MiniMapMailText:Hide() end end }, dura = { type = 'toggle', order = 9, name = 'Durability', get = function() return pMinimapDB.dura end, set = function() pMinimapDB.dura = not pMinimapDB.dura if(pMinimapDB.dura) then DurabilityFrame:SetAlpha(0) pMinimap:RegisterEvent('UPDATE_INVENTORY_ALERTS') pMinimap.UPDATE_INVENTORY_ALERTS() else DurabilityFrame:SetAlpha(1) pMinimap:UnregisterEvent('UPDATE_INVENTORY_ALERTS') Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, bgheader = { name = 'Backdrop options', type = 'header', order = 10, }, bgthick = { type = 'range', order = 11, name = 'Backdrop Thickness', min = 0, max = 10, step = 0.5, get = function() return pMinimapDB.offset end, set = function(_, value) pMinimapDB.offset = value Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - value, left = - value, bottom = - value, right = - value}}) Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end }, bgcolor = { type = 'color', order = 12, name = 'Backdrop Color', hasAlpha = true, get = function() return unpack(pMinimapDB.colors) end, set = function(_, r, g, b, a) pMinimapDB.colors = {r, g, b, a} Minimap:SetBackdropColor(r, g, b, a) end }, zoneheader = { name = 'Zone options', type = 'header', order = 13, }, zoneoffset = { type = 'range', order = 14, name = 'ZoneText offset', min = -25, max = 25, step = 0.5, get = function() return pMinimapDB.zoneOffset end, set = function(_, value) pMinimapDB.zoneOffset = value MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint(pMinimapDB.zonePoint == 'TOP' and 'BOTTOM' or 'TOP', Minimap, pMinimapDB.zonePoint, 0, value) end }, zone = { type = 'toggle', order = 15, name = 'ZoneText', get = function() return pMinimapDB.zone end, set = function() pMinimapDB.zone = not pMinimapDB.zone if(pMinimapDB.zone) then MinimapZoneTextButton:Show() else MinimapZoneTextButton:Hide() end end }, zonepoint = { type = 'select', order = 16, name = 'ZoneText point', values = {['TOP'] = 'TOP', ['BOTTOM'] = 'BOTTOM'}, get = function() return pMinimapDB.zonePoint end, set = function(_, point) pMinimapDB.zonePoint = point if(point == 'TOP') then MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('BOTTOM', Minimap, point, 0, pMinimapDB.zoneOffset) else MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('TOP', Minimap, point, 0, pMinimapDB.zoneOffset) end end }, fontheader = { name = 'Font options', type = 'header', order = 17, }, font = { type = 'select', order = 18, name = 'Font', values = list, get = function() for k, v in next, list do if(v == pMinimapDB.smfont) then return k end end end, set = function(_, font) pMinimapDB.smfont = list[font] AddToFontStrings() end }, fontflag = { type = 'select', order = 19, name = 'Font flag', values = {['OUTLINE'] = 'OUTLINE', ['THICKOUTLINE'] = 'THICKOUTLINE', ['MONOCHROME'] = 'MONOCHROME', ['NONE'] = 'NONE'}, get = function() return pMinimapDB.fontflag end, set = function(_, flag) pMinimapDB.fontflag = flag AddToFontStrings() end }, fontsize = { type = 'range', order = 20, name = 'Font Size', min = 5, max = 18, step = 1, get = function() return pMinimapDB.fontsize end, set = function(_, value) pMinimapDB.fontsize = value AddToFontStrings() end }, misc2header = { name = 'Misc options', type = 'header', order = 21, }, coordDecimal = { type = 'range', order = 22, name = 'Coords decimals', min = 0, max = 3, step = 1, get = function() return pMinimapDB.coordsDecimals end, set = function(_, value) pMinimapDB.coordsDecimals = value end }, } }) \ No newline at end of file diff --git a/pMinimap_Config/pMinimap_Config.lua b/pMinimap_Config/pMinimap_Config.lua deleted file mode 100644 index afe9d2a..0000000 --- a/pMinimap_Config/pMinimap_Config.lua +++ /dev/null @@ -1 +0,0 @@ ---[[ Copyright (c) 2009, Adrian L Lange All rights reserved. You're allowed to use this addon, free of monetary charge, but you are not allowed to modify, alter, or redistribute this addon without express, written permission of the author. --]] local LSM = LibStub('LibSharedMedia-3.0') local list = LSM:List('font') local function AddToFontStrings() MiniMapMailText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) MinimapZoneText:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) if(pMinimapDB.clock) then TimeManagerClockTicker:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end if(pMinimapDB.coords) then pMinimap.Coord.Text:SetFont(LSM:Fetch('font', pMinimapDB.smfont), pMinimapDB.fontsize, pMinimapDB.fontflag) end end LibStub('AceConfigDialog-3.0'):AddToBlizOptions('pMinimap', 'pMinimap') LibStub('AceConfig-3.0'):RegisterOptionsTable('pMinimap', { name = 'pMinimap Options', type = 'group', args = { mapheader = { name = 'Minimap options', type = 'header', order = 0, }, scale = { type = 'range', order = 1, name = 'Minimap Scale', min = 0.50, max = 2.50, step = 0.01, get = function() return pMinimapDB.scale end, set = function(_, value) pMinimapDB.scale = value Minimap:SetScale(value) end, }, lock = { type = 'toggle', order = 2, name = 'Unlocked', get = function() return pMinimapDB.unlocked end, set = function() pMinimapDB.unlocked = not pMinimapDB.unlocked if(pMinimapDB.unlocked) then Minimap:SetBackdropColor(0, 1, 0, 0.5) else Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, level = { type = 'range', order = 3, name = 'Frame level', min = 1, max = 15, step = 1, get = function() return pMinimapDB.level end, set = function(_, value) pMinimapDB.level = value Minimap:SetFrameLevel(value) end }, strata = { type = 'select', order = 4, name = 'Frame Strata', values = {['DIALOG'] = 'DIALOG', ['HIGH'] = 'HIGH', ['MEDIUM'] = 'MEDIUM', ['LOW'] = 'LOW', ['BACKGROUND'] = 'BACKGROUND'}, get = function() return pMinimapDB.strata end, set = function(_, strata) pMinimapDB.strata = strata Minimap:SetFrameStrata(strata) end }, mischeader = { name = 'Misc modules', type = 'header', order = 5, }, clock = { type = 'toggle', order = 6, name = 'Clock', get = function() return pMinimapDB.clock end, set = function() pMinimapDB.clock = not pMinimapDB.clock if(pMinimapDB.clock) then if(not pMinimap.RunClock) then pMinimap:CreateClock() else TimeManagerClockButton:Show() TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end pMinimap.CALENDAR_UPDATE_PENDING_INVITES() else TimeManagerClockButton:Hide() end if(pMinimapDB.coords) then pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end end }, coords = { type = 'toggle', order = 7, name = 'Coords', get = function() return pMinimapDB.coords end, set = function() pMinimapDB.coords = not pMinimapDB.coords if(pMinimapDB.coords) then if(not pMinimap.Coord) then pMinimap:CreateCoords() else pMinimap.Coord:Show() pMinimap.Coord:ClearAllPoints() pMinimap.Coord:SetPoint(pMinimapDB.clock and 'BOTTOMRIGHT' or 'BOTTOM', Minimap) end else pMinimap.Coord:Hide() end if(pMinimapDB.clock) then TimeManagerClockButton:ClearAllPoints() TimeManagerClockButton:SetPoint(pMinimapDB.coords and 'BOTTOMLEFT' or 'BOTTOM', Minimap) end end }, mail = { type = 'toggle', order = 8, name = 'Mail', get = function() return pMinimapDB.mail end, set = function() pMinimapDB.mail = not pMinimapDB.mail if(pMinimapDB.mail) then MiniMapMailIcon:Hide() MiniMapMailText:Show() else MiniMapMailIcon:Show() MiniMapMailText:Hide() end end }, dura = { type = 'toggle', order = 9, name = 'Durability', get = function() return pMinimapDB.dura end, set = function() pMinimapDB.dura = not pMinimapDB.dura if(pMinimapDB.dura) then DurabilityFrame:SetAlpha(0) pMinimap:RegisterEvent('UPDATE_INVENTORY_ALERTS') pMinimap.UPDATE_INVENTORY_ALERTS() else DurabilityFrame:SetAlpha(1) pMinimap:UnregisterEvent('UPDATE_INVENTORY_ALERTS') Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end end }, bgheader = { name = 'Backdrop options', type = 'header', order = 10, }, bgthick = { type = 'range', order = 11, name = 'Backdrop Thickness', min = 0, max = 10, step = 0.5, get = function() return pMinimapDB.offset end, set = function(_, value) pMinimapDB.offset = value Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - value, left = - value, bottom = - value, right = - value}}) Minimap:SetBackdropColor(unpack(pMinimapDB.colors)) end }, bgcolor = { type = 'color', order = 12, name = 'Backdrop Color', hasAlpha = true, get = function() return unpack(pMinimapDB.colors) end, set = function(_, r, g, b, a) pMinimapDB.colors = {r, g, b, a} Minimap:SetBackdropColor(r, g, b, a) end }, zoneheader = { name = 'Zone options', type = 'header', order = 13, }, zoneoffset = { type = 'range', order = 14, name = 'ZoneText offset', min = -25, max = 25, step = 0.5, get = function() return pMinimapDB.zoneOffset end, set = function(_, value) pMinimapDB.zoneOffset = value MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint(pMinimapDB.zonePoint == 'TOP' and 'BOTTOM' or 'TOP', Minimap, pMinimapDB.zonePoint, 0, value) end }, zone = { type = 'toggle', order = 15, name = 'ZoneText', get = function() return pMinimapDB.zone end, set = function() pMinimapDB.zone = not pMinimapDB.zone if(pMinimapDB.zone) then MinimapZoneTextButton:Show() else MinimapZoneTextButton:Hide() end end }, zonepoint = { type = 'select', order = 16, name = 'ZoneText point', values = {['TOP'] = 'TOP', ['BOTTOM'] = 'BOTTOM'}, get = function() return pMinimapDB.zonePoint end, set = function(_, point) pMinimapDB.zonePoint = point if(point == 'TOP') then MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('BOTTOM', Minimap, point, 0, pMinimapDB.zoneOffset) else MinimapZoneTextButton:ClearAllPoints() MinimapZoneTextButton:SetPoint('TOP', Minimap, point, 0, pMinimapDB.zoneOffset) end end }, fontheader = { name = 'Font options', type = 'header', order = 17, }, font = { type = 'select', order = 18, name = 'Font', values = list, get = function() for k, v in next, list do if(v == pMinimapDB.smfont) then return k end end end, set = function(_, font) pMinimapDB.smfont = list[font] AddToFontStrings() end }, fontflag = { type = 'select', order = 19, name = 'Font flag', values = {['OUTLINE'] = 'OUTLINE', ['THICKOUTLINE'] = 'THICKOUTLINE', ['MONOCHROME'] = 'MONOCHROME', ['NONE'] = 'NONE'}, get = function() return pMinimapDB.fontflag end, set = function(_, flag) pMinimapDB.fontflag = flag AddToFontStrings() end }, fontsize = { type = 'range', order = 20, name = 'Font Size', min = 5, max = 18, step = 1, get = function() return pMinimapDB.fontsize end, set = function(_, value) pMinimapDB.fontsize = value AddToFontStrings() end }, misc2header = { name = 'Misc options', type = 'header', order = 21, }, coordDecimal = { type = 'range', order = 22, name = 'Coords decimals', min = 0, max = 3, step = 1, get = function() return pMinimapDB.coordsDecimals end, set = function(_, value) pMinimapDB.coordsDecimals = value end }, } }) \ No newline at end of file diff --git a/pMinimap_Config/pMinimap_Config.toc b/pMinimap_Config/pMinimap_Config.toc deleted file mode 100644 index 4b9c8d6..0000000 --- a/pMinimap_Config/pMinimap_Config.toc +++ /dev/null @@ -1,13 +0,0 @@ -## Interface: 30100 -## Author: p3lim -## Version: 30100.wowi:revision -## Title: |cffff6000p|rMinimap_Config -## Notes: Options module for pMinimap -## RequiredDeps: pMinimap -## LoadOnDemand: 1 - -libs\LibStub\LibStub.lua -libs\AceGUI-3.0\AceGUI-3.0.xml -libs\AceConfig-3.0\AceConfig-3.0.xml - -pMinimap_Config.lua \ No newline at end of file