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.

213 lines
8.3 KiB

-- ========================================================================= --
-- SylingTracker --
-- https://www.curseforge.com/wow/addons/sylingtracker --
-- --
-- Repository: --
-- https://github.com/Skamer/SylingTracker --
-- --
-- ========================================================================= --
Syling "SylingTracker" ""
-- ========================================================================= --
import "SLT"
-- ========================================================================= --
Log = Logger("SylingTracker")
Trace = Log:SetPrefix(1, "|cffa9a9a9[SLT:Trace]|r")
Debug = Log:SetPrefix(2, "|cff808080[SLT:Debug]|r")
Info = Log:SetPrefix(3, "|cffffffff[SLT:Info]|r")
Warn = Log:SetPrefix(4, "|cffffff00[SLT:Warn]|r")
Error = Log:SetPrefix(5, "|cffff0000[SLT:Error]|r")
Fatal = Log:SetPrefix(6, "|cff8b0000[SLT:Fatal]|r")
Log.LogLevel = 3
Log.UseTimeFormat = false
Log:AddHandler(print)
-- ========================================================================= --
_SLT_VERSION = GetAddOnMetadata("SylingTracker", "Version")
-- ========================================================================= --
_SCORPIO_VERSION = tonumber(GetAddOnMetadata("Scorpio", "Version"):match("%d+$"))
_PLOOP_VERSION = tonumber(GetAddOnMetadata("PLoop", "Version"):match("%d+$"))
-- ========================================================================= --
_LibSharedMedia = LibStub("LibSharedMedia-3.0")
_LibDataBroker = LibStub("LibDataBroker-1.1")
_LibDBIcon = LibStub("LibDBIcon-1.0")
-- ========================================================================= --
_SLT_LOGO = [[Interface\AddOns\SylingTracker\Media\logo]]
function OnLoad(self)
-- Create and init the DB
_DB = SVManager("SylingTrackerDB")
-- Regiser the options
Settings.Register("replace-blizzard-objective-tracker", true, "Blizzard/UpdateTrackerVisibility")
-- Register the callbacks
CallbackManager.Register("Blizzard/UpdateTrackerVisibility", Callback(function(replace) BLIZZARD_TRACKER_VISIBLITY_CHANGED(not replace) end))
--
_DB:SetDefault{ dbVersion = 1 }
_DB:SetDefault{ minimap = { hide = false }}
-- Setup the minimap button
self:SetupMinimapButton()
end
function OnEnable(self)
BLIZZARD_TRACKER_VISIBLITY_CHANGED(not Settings.Get("replace-blizzard-objective-tracker"))
end
__SystemEvent__()
function BLIZZARD_TRACKER_VISIBLITY_CHANGED(isVisible)
local wasInitialized = false
if not ObjectiveTrackerFrame.initialized then
ObjectiveTracker_Initialize(ObjectiveTrackerFrame)
wasInitilized = true
end
if isVisible and not wasInitialized then
ObjectiveTrackerFrame:SetScript("OnEvent", ObjectiveTracker_OnEvent)
WorldMapFrame:RegisterCallback("SetFocusedQuestID", ObjectiveTracker_OnFocusedQuestChanged, ObjectiveTrackerFrame)
WorldMapFrame:RegisterCallback("ClearFocusedQuestID", ObjectiveTracker_OnFocusedQuestChanged, ObjectiveTrackerFrame)
ObjectiveTrackerFrame:Show()
ObjectiveTracker_Update()
else
ObjectiveTrackerFrame:Hide()
ObjectiveTrackerFrame:SetScript("OnEvent", nil)
WorldMapFrame:UnregisterCallback("SetFocusedQuestID", ObjectiveTrackerFrame)
WorldMapFrame:UnregisterCallback("ClearFocusedQuestID", ObjectiveTrackerFrame)
end
end
function OnQuit(self)
-- Do a clean in the database (remove empty table) when the player log out
Database.Clean()
end
function SetupMinimapButton(self)
local LDBObject = _LibDataBroker:NewDataObject("SylingTracker", {
type = "launcher",
icon = _SLT_LOGO,
OnClick = function(_, button, down)
end,
OnTooltipShow = function(tooltip)
tooltip:AddDoubleLine("Syling Tracker", _SLT_VERSION, 1, 106/255, 0, 1, 1, 1)
end
})
_LibDBIcon:Register("SylingTracker", LDBObject, _DB.minimap)
end
-- __SlashCmd__ "slt" "config"
-- function OpenOptions()
-- local loaded, reason = LoadAddOn("SylingTracker_Options")
-- end
__SlashCmd__ "slt" "bot" "- enable/disable the blizzard objective tracker"
function ToggleBlizzardObjectiveTracker()
Settings.Set("replace-blizzard-objective-tracker", ObjectiveTrackerFrame:IsShown())
end
__SlashCmd__ "slt" "lock" "- lock the Tracker and the Item Bar, preventing them to be moved or resized"
function LockCommand()
_M:FireSystemEvent("SLT_LOCK_COMMAND")
end
__SlashCmd__ "slt" "unlock" "- unlock the Tracker and the Item Bar, allowing you to resize or move them"
function UnlockCommand()
_M:FireSystemEvent("SLT_UNLOCK_COMMAND")
end
__SlashCmd__ "slt" "show" "- show the Tracker and the Item bar"
function ShowCommand()
_M:FireSystemEvent("SLT_SHOW_COMMAND")
end
__SlashCmd__ "slt" "hide" "- hide the Tracker and the Item Bar"
function HideCommand()
_M:FireSystemEvent("SLT_HIDE_COMMAND")
end
__SlashCmd__ "slt" "toggle" "- toggle the Tracker and the Item Bar"
function ToggleCommand()
_M:FireSystemEvent("SLT_TOGGLE_COMMAND")
end
__SlashCmd__ "slt" "scrollstep" "- set the scroll sensibility (default: 15)"
function SetScrollStepCommand(info)
local val = tonumber(info)
if val then
_M:FireSystemEvent("SLT_SCROLL_STEP_COMMAND", val)
end
end
__SlashCmd__ "slt" "log" "- set the log level"
function SetLogLevel(info)
local val = tonumber(info)
Info("Set the Log Level to %i", val)
Log.LogLevel = val
end
__SlashCmd__ "slt" "qcat" "- toggle the displaying of categories for quests"
function ToggleQuestCategories()
_M:FireSystemEvent("SLT_TOGGLE_QUEST_CATEGORIES_COMMAND")
end
__SlashCmd__ "slt" "minimap" "- toggle the minimap button"
function ToggleMinimapButton()
local isHidden = not _DB.minimap.hide
if isHidden then
_LibDBIcon:Hide("SylingTracker")
else
_LibDBIcon:Show("SylingTracker")
end
_DB.minimap.hide = isHidden
end
__SystemEvent__()
function PLAYER_ENTERING_WORLD(initialLogin, reloadingUI)
IsInitialLogin = initialLogin
IsReloadingUI = reloadingUI
end
-------------------------------------------------------------------------------
-- LibSharedMedia: register the fonts
-------------------------------------------------------------------------------
_Fonts = {
-- PT Sans Family Fonts
["PT Sans"] = [[Interface\AddOns\SylingTracker\Media\Fonts\PTSans-Regular.ttf]],
["PT Sans Bold"] = [[Interface\AddOns\SylingTracker\Media\Fonts\PTSans-Bold.ttf]],
["PT Sans Bold Italic"] = [[Interface\AddOns\SylingTracker\Media\Fonts\PTSans-Bold-Italic.ttf]],
["PT Sans Narrow"] = [[Interface\AddOns\SylingTracker\Media\Fonts\PTSans-Narrow.ttf]],
["PT Sans Narrow Bold"] = [[Interface\AddOns\SylingTracker\Media\Fonts\PTSans-Narrow-Bold.ttf]],
["PT Sans Caption"] = [[Interface\AddOns\SylingTracker\Media\Fonts\PTSans-Caption.ttf]],
["PT Sans Caption Bold"] = [[Interface\AddOns\SylingTracker\Media\Fonts\PTSans-Caption-Bold.ttf]],
-- DejaVuSans Family Fonts
["Deja Vu Sans"] = [[Interface\AddOns\SylingTracker\Media\Fonts\DejaVuSans.ttf]],
["Deja Vu Sans Bold"] = [[Interface\AddOns\SylingTracker\Media\Fonts\DejaVuSans-Bold.ttf]],
["Deja Vu Sans Bold Italic"] = [[Interface\AddOns\SylingTracker\Media\Fonts\DejaVuSans-BoldOblique.ttf]],
["DejaVuSansCondensed"] = [[Interface\AddOns\SylingTracker\Media\Fonts\DejaVuSansCondensed.ttf]],
["DejaVuSansCondensed Bold"] = [[Interface\AddOns\SylingTracker\Media\Fonts\DejaVuSansCondensed-Bold.ttf]],
["DejaVuSansCondensed Bold Italic"] = [[Interface\AddOns\SylingTracker\Media\Fonts\DejaVuSansCondensed-BoldOblique.ttf]],
["DejaVuSansCondensed Italic"] = [[Interface\AddOns\SylingTracker\Media\Fonts\DejaVuSansCondensed-Oblique.ttf]]
}
for fontName, fontFile in pairs(_Fonts) do
_LibSharedMedia:Register("font", fontName, fontFile)
end
-- -------------------------------------------------------------------------------
-- LibSharedMedia: register the backgounds
-------------------------------------------------------------------------------
_LibSharedMedia:Register("background", "SylingTracker Background", [[Interface\AddOns\SylingTracker\Media\Textures\Frame-Background]])