From d15e7273f1cfc4293d5b2e6589952bbdb23442a9 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 13 Jan 2021 16:13:33 +0100 Subject: [PATCH] Init --- .gitmodules | 3 + Bindings.xml | 3 + Common | 1 + core.lua | 188 ++++++++++++++++++++++++++++++++++++++++++++++++ icon2.tga | Bin 0 -> 3568 bytes license.txt | 6 ++ locale_deDE.lua | 43 +++++++++++ locale_enUS.lua | 37 ++++++++++ pack.xml | 6 ++ provider.lua | 175 ++++++++++++++++++++++++++++++++++++++++++++ zz_Coords.toc | 16 +++++ 11 files changed, 478 insertions(+) create mode 100644 .gitmodules create mode 100644 Bindings.xml create mode 160000 Common create mode 100644 core.lua create mode 100644 icon2.tga create mode 100644 license.txt create mode 100644 locale_deDE.lua create mode 100644 locale_enUS.lua create mode 100644 pack.xml create mode 100644 provider.lua create mode 100644 zz_Coords.toc diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..34950ac --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Common"] + path = Common + url = https://git.grml.de/rilgamon/Common.git diff --git a/Bindings.xml b/Bindings.xml new file mode 100644 index 0000000..1093cb9 --- /dev/null +++ b/Bindings.xml @@ -0,0 +1,3 @@ + + zzCoords_MinimapToggle() + diff --git a/Common b/Common new file mode 160000 index 0000000..762c59c --- /dev/null +++ b/Common @@ -0,0 +1 @@ +Subproject commit 762c59c6c6abc6ecaa71f3e36bb2c6dd16b8e0ed diff --git a/core.lua b/core.lua new file mode 100644 index 0000000..c6f2076 --- /dev/null +++ b/core.lua @@ -0,0 +1,188 @@ +local name, addon = ... +local childName = "zz_Coords" + +local defaults = { + ["colorLDB"] = true, + ["ShowZone"] = false, + ["ShowSubZone"] = true, + ["ShowTooltip"] = false, + ["windowX"] = 10, + ["windowY"] = 5 +} +local options = { +} +local ldb = LibStub:GetLibrary("LibDataBroker-1.1") +local ldbicon = LibStub("LibDBIcon-1.0") +local db, playerCoords, zoneText, coordsline +local L = LibStub("AceLocale-3.0"):GetLocale(childName, true) +local delayOnUpdate = .5 + +function addon:GetPlayerCoords() + return playerCoords +end +local function setPlayerCoords() + playerCoords = "-, -" + local mapID = C_Map.GetBestMapForUnit("player") + if(mapID) then + local pmp = C_Map.GetPlayerMapPosition(mapID,"player") + if(pmp) then + local x,y = pmp:GetXY() + if(x and y) then + playerCoords = format("%.1f, %.1f", x*100, y*100) + end + end + end +end +local colorlist = { + ['friendly'] = "00ff00", + ['arena'] = "ffff00", + ['sanctuary'] = "9999ff", +} +local function pvpColor(txt) + local col + local pvpType, isFFA, faction = GetZonePVPInfo() + if(colorlist[pvpType]) then + col = colorlist[pvpType] + elseif(pvpType == "hostile" or pvpType == "combat" or pvpType=="contested") then + col = faction == select(2,UnitFactionGroup('player')) and "886600" or "ff0000" + else + return txt + end + return addon:colorize(txt, col) +end + +local function OnText(message) + addon:OnText(childName, message or "") +end + +local function OnTooltip(tip) + local p = tip:GetParent() + if(p.tooltip) then + tip = p.tooltip + end + tip:AddLine(childName) + tip:AddLine(GetRealZoneText()) + tip:AddLine(GetSubZoneText()) + tip:AddLine(format("%s: %s",childName,tostring(playerCoords))) + tip:AddLine(L['HINT']) + tip:AddLine(L['HINT2']) + tip:AddLine(L['HINT3']) + tip:AddLine(L['HINT4']) +end + +local function OnButton(self, button) + if(button == 'RightButton') then + if(IsShiftKeyDown()) then + zzCoords_MinimapToggle() + else + InterfaceOptionsFrame_OpenToCategory(childName) + InterfaceOptionsFrame_OpenToCategory(childName) + end + elseif(button == "LeftButton") then + if(IsShiftKeyDown()) then + local db = addon['db']['global']['ldbicons'] + db[childName]['hide'] = not db[childName]['hide'] + if(ldbicon) then + if(db[childName]['hide']) then + ldbicon:Hide(childName) + else + ldbicon:Show(childName) + end + end + else + ToggleFrame(WorldMapFrame) + end + end +end + +local function OnDataUpdate() + setPlayerCoords() + if(zoneText and zoneText~="") then + if(db['hideLDBCoords']) then + coordsline = "%s" + else + coordsline = "%s (%s)" + end + OnText(format(coordsline,(db['colorLDB'] and pvpColor(zoneText) or zoneText) or "", playerCoords or "")) + else + if(db['hideLDBCoords']) then + OnText("") + else + OnText(playerCoords or "") + end + end + C_Timer.After(delayOnUpdate, OnDataUpdate) +end + +local function limitLength(info, maxlength) + if(info and maxlength) then + if(maxlength > 0 and info:len() > maxlength) then + info = info:sub(1,maxlength).."~" + end + end + return info +end + +local function ZONED() + zoneText = db['ShowZone'] and GetRealZoneText() or "" + if(db['ShowSubZone']) then + if(GetSubZoneText() and GetSubZoneText()~="") then + if(db['ShowZone']) then + zoneText = zoneText ~= GetSubZoneText() and format("%s, %s",zoneText,GetSubZoneText()) or zoneText + else + zoneText = GetSubZoneText() + end + elseif(not db['ShowZone']) then + zoneText = GetRealZoneText() + end + end + zoneText = limitLength(zoneText,db['maxLength']) + if(not db['hideMapCoords']) then + addon['mapframe']:Show() + else + addon['mapframe']:Hide() + end +end + +local function getPref(pref) + return db[pref[#pref]] +end + +local function setPref(pref,value) + db[pref[#pref]] = value + ZONED() +end + +local function init() + options = addon:InitConfig(childName, true, { + ['type'] = "data source", + ['OnTooltipShow'] = OnTooltip, + ['OnClick'] = OnButton, + }, getPref, setPref) + db = addon['db']['profile'][childName] + C_Timer.After(delayOnUpdate, OnDataUpdate) + BINDING_HEADER_COORDS = childName + BINDING_NAME_COORDS_TOGGLE = L["Toggle Minimap"] + + addon:AddConfigEntry(childName,"toggle","hideLDBCoords",L['Hide LDB coords'],L['This hides the coords-display in your broker display'],2,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","colorLDB",L['Colorized Zone'],L['Show PvP informations about current area'],1,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","hideMapCoords",L['Hide Map coords'],L['This hides the coords-display at the bottom of your map'],2,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","ShowZone",L['Show Zone'],nil,1,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","ShowSubZone",L['Show Subzone'],nil,1,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","ShowMapID",L['Show MapID'],nil,2,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"range","maxLength",L['Max Length'],L['Limits the maximum length of the zone'],1,0,255,1,false,options['args'][childName]) + addon:AddConfigEntry(childName,"header",'windowXY',L['Mapcoords Window'],nil,6,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"range","windowX",L['Window X'],L['Adjusts the X-Offset on windowed map'],7,-512,512,1,false,options['args'][childName]) + addon:AddConfigEntry(childName,"range","windowY",L['Window Y'],L['Adjusts the Y-Offset on windowed map'],8,-512,512,1,false,options['args'][childName]) + addon:RegisterFunc({"ZONE_CHANGED_NEW_AREA","ZONE_CHANGED","ZONE_CHANGED_INDOORS","NEW_WMO_CHUNK"},"OnEvent", ZONED) + ZONED() +end + +function zzCoords_MinimapToggle() + if(MinimapCluster:IsVisible()) then + MinimapCluster:Hide() + else + MinimapCluster:Show() + end +end +addon:startup(name, childName, init, true, defaults) diff --git a/icon2.tga b/icon2.tga new file mode 100644 index 0000000000000000000000000000000000000000..287f9e464733d4c536d79b4d0ab10ebfd032be77 GIT binary patch literal 3568 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 bsUzm+ +