mirror of
https://github.com/Blaststar/Questie-Octo-Vanilla.git
synced 2026-10-27 07:30:49 +00:00
195 lines
6.9 KiB
Lua
195 lines
6.9 KiB
Lua
TITAN_COORDS_ID = "Coords";
|
|
TITAN_COORDS_FREQUENCY = 0.5;
|
|
|
|
function TitanPanelCoordsButton_OnLoad()
|
|
this.registry = {
|
|
id = TITAN_COORDS_ID,
|
|
builtIn = 1,
|
|
version = TITAN_VERSION,
|
|
menuText = TITAN_COORDS_MENU_TEXT,
|
|
buttonTextFunction = "TitanPanelCoordsButton_GetButtonText",
|
|
tooltipTitle = TITAN_COORDS_TOOLTIP,
|
|
tooltipTextFunction = "TitanPanelCoordsButton_GetTooltipText",
|
|
frequency = TITAN_COORDS_FREQUENCY,
|
|
updateType = TITAN_PANEL_UPDATE_BUTTON;
|
|
icon = TITAN_ARTWORK_PATH.."TitanCoords",
|
|
iconWidth = 16,
|
|
savedVariables = {
|
|
ShowZoneText = 1,
|
|
ShowCoordsOnMap = 1,
|
|
ShowIcon = 1,
|
|
ShowLabelText = 1,
|
|
ShowColoredText = 1,
|
|
}
|
|
};
|
|
|
|
this:RegisterEvent("ZONE_CHANGED");
|
|
this:RegisterEvent("ZONE_CHANGED_INDOORS");
|
|
this:RegisterEvent("ZONE_CHANGED_NEW_AREA");
|
|
this:RegisterEvent("MINIMAP_ZONE_CHANGED");
|
|
this:RegisterEvent("PLAYER_ENTERING_WORLD");
|
|
end
|
|
|
|
function TitanPanelCoordsButton_GetButtonText(id)
|
|
local button, id = TitanUtils_GetButton(id, true);
|
|
|
|
button.px, button.py = GetPlayerMapPosition("player");
|
|
local locationText = format(TITAN_COORDS_FORMAT, 100 * button.px, 100 * button.py);
|
|
if (TitanGetVar(TITAN_COORDS_ID, "ShowZoneText")) then
|
|
if (TitanUtils_ToString(button.subZoneText) == '') then
|
|
locationText = TitanUtils_ToString(button.zoneText)..' '..locationText;
|
|
else
|
|
locationText = TitanUtils_ToString(button.subZoneText)..' '..locationText;
|
|
end
|
|
end
|
|
|
|
local locationRichText;
|
|
if (TitanGetVar(TITAN_COORDS_ID, "ShowColoredText")) then
|
|
if (this.isArena) then
|
|
locationRichText = TitanUtils_GetRedText(locationText);
|
|
elseif (this.pvpType == "friendly") then
|
|
locationRichText = TitanUtils_GetGreenText(locationText);
|
|
elseif (this.pvpType == "hostile") then
|
|
locationRichText = TitanUtils_GetRedText(locationText);
|
|
elseif (this.pvpType == "contested") then
|
|
locationRichText = TitanUtils_GetNormalText(locationText);
|
|
else
|
|
locationRichText = TitanUtils_GetNormalText(locationText);
|
|
end
|
|
else
|
|
locationRichText = TitanUtils_GetHighlightText(locationText);
|
|
end
|
|
|
|
return TITAN_COORDS_BUTTON_LABEL, locationRichText;
|
|
end
|
|
|
|
function TitanPanelCoordsButton_GetTooltipText()
|
|
local pvpInfoRichText;
|
|
|
|
if (this.pvpType == "friendly") then
|
|
pvpInfoRichText = TitanUtils_GetGreenText(format(FACTION_CONTROLLED_TERRITORY, this.factionName));
|
|
elseif (this.pvpType == "hostile") then
|
|
pvpInfoRichText = TitanUtils_GetRedText(format(FACTION_CONTROLLED_TERRITORY, this.factionName));
|
|
elseif (this.pvpType == "contested") then
|
|
pvpInfoRichText = TitanUtils_GetNormalText(CONTESTED_TERRITORY);
|
|
else
|
|
pvpInfoRichText = "";
|
|
end
|
|
|
|
--[[
|
|
local pvpArenaText;
|
|
if (isArena) then
|
|
pvpArenaText = FREE_FOR_ALL_TERRITORY;
|
|
this.subZoneText = TitanUtils_GetRedText(this.subZoneText);
|
|
else
|
|
pvpArenaText = "";
|
|
end
|
|
]]--
|
|
|
|
return ""..
|
|
TITAN_COORDS_TOOLTIP_ZONE.."\t"..TitanUtils_GetHighlightText(this.zoneText).."\n"..
|
|
TitanUtils_Ternary((this.subZoneText == ""), "", TITAN_COORDS_TOOLTIP_SUBZONE.."\t"..TitanUtils_GetHighlightText(this.subZoneText).."\n")..
|
|
TitanUtils_Ternary((pvpInfoRichText == ""), "", TITAN_COORDS_TOOLTIP_PVPINFO.."\t"..pvpInfoRichText.."\n")..
|
|
"\n"..
|
|
TitanUtils_GetHighlightText(TITAN_COORDS_TOOLTIP_HOMELOCATION).."\n"..
|
|
TITAN_COORDS_TOOLTIP_INN.."\t"..TitanUtils_GetHighlightText(GetBindLocation()).."\n"..
|
|
TitanUtils_GetGreenText(TITAN_COORDS_TOOLTIP_HINTS_1).."\n"..
|
|
TitanUtils_GetGreenText(TITAN_COORDS_TOOLTIP_HINTS_2);
|
|
end
|
|
|
|
function TitanPanelCoordsButton_OnEvent()
|
|
if (event == "ZONE_CHANGED_NEW_AREA") then
|
|
SetMapToCurrentZone();
|
|
end
|
|
TitanPanelCoordsButton_UpdateZoneInfo();
|
|
TitanPanelButton_UpdateTooltip();
|
|
end
|
|
|
|
function TitanPanelCoordsButton_OnClick(button)
|
|
if (button == "LeftButton" and IsShiftKeyDown()) then
|
|
if (ChatFrameEditBox:IsVisible()) then
|
|
message = TitanUtils_ToString(this.zoneText).." "..
|
|
format(TITAN_COORDS_FORMAT, 100 * this.px, 100 * this.py);
|
|
ChatFrameEditBox:Insert(message);
|
|
end
|
|
end
|
|
end
|
|
|
|
function TitanPanelCoordsButton_UpdateZoneInfo()
|
|
this.zoneText = GetZoneText();
|
|
this.subZoneText = GetSubZoneText();
|
|
this.minimapZoneText = GetMinimapZoneText();
|
|
this.pvpType, this.factionName, this.isArena = GetZonePVPInfo();
|
|
end
|
|
|
|
function TitanPanelRightClickMenu_PrepareCoordsMenu()
|
|
TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_COORDS_ID].menuText);
|
|
|
|
local info = {};
|
|
info.text = TITAN_COORDS_MENU_SHOW_ZONE_ON_PANEL_TEXT;
|
|
info.func = TitanPanelCoordsButton_ToggleDisplay;
|
|
info.checked = TitanGetVar(TITAN_COORDS_ID, "ShowZoneText");
|
|
UIDropDownMenu_AddButton(info);
|
|
|
|
info = {};
|
|
info.text = TITAN_COORDS_MENU_SHOW_COORDS_ON_MAP_TEXT;
|
|
info.func = TitanPanelCoordsButton_ToggleCoordsOnMap;
|
|
info.checked = TitanGetVar(TITAN_COORDS_ID, "ShowCoordsOnMap");
|
|
UIDropDownMenu_AddButton(info);
|
|
|
|
TitanPanelRightClickMenu_AddSpacer();
|
|
TitanPanelRightClickMenu_AddToggleIcon(TITAN_COORDS_ID);
|
|
TitanPanelRightClickMenu_AddToggleLabelText(TITAN_COORDS_ID);
|
|
TitanPanelRightClickMenu_AddToggleColoredText(TITAN_COORDS_ID);
|
|
|
|
|
|
TitanPanelRightClickMenu_AddSpacer();
|
|
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_COORDS_ID, TITAN_PANEL_MENU_FUNC_HIDE);
|
|
end
|
|
|
|
function TitanPanelCoordsButton_ToggleDisplay()
|
|
TitanToggleVar(TITAN_COORDS_ID, "ShowZoneText");
|
|
TitanPanelButton_UpdateButton(TITAN_COORDS_ID);
|
|
end
|
|
|
|
function TitanPanelCoordsButton_ToggleCoordsOnMap()
|
|
TitanToggleVar(TITAN_COORDS_ID, "ShowCoordsOnMap");
|
|
if (TitanGetVar(TITAN_COORDS_ID, "ShowCoordsOnMap")) then
|
|
TitanMapCursorCoords:Show();
|
|
TitanMapPlayerCoords:Show();
|
|
else
|
|
TitanMapCursorCoords:Hide();
|
|
TitanMapPlayerCoords:Hide();
|
|
end
|
|
end
|
|
|
|
function TitanPanelCoordsButton_ToggleColor()
|
|
TitanToggleVar(TITAN_COORDS_ID, "ShowColoredText");
|
|
TitanPanelButton_UpdateButton(TITAN_COORDS_ID);
|
|
end
|
|
|
|
local OFFSET_X = 0.0022;
|
|
local OFFSET_Y = -0.0262;
|
|
|
|
function TitanMapFrame_OnUpdate()
|
|
if (TitanGetVar(TITAN_COORDS_ID, "ShowCoordsOnMap")) then
|
|
local x, y = GetCursorPosition();
|
|
x = x / WorldMapFrame:GetScale();
|
|
y = y / WorldMapFrame:GetScale();
|
|
|
|
this.px, this.py = GetPlayerMapPosition("player");
|
|
local centerX, centerY = WorldMapFrame:GetCenter();
|
|
local width = WorldMapButton:GetWidth();
|
|
local height = WorldMapButton:GetHeight();
|
|
local adjustedX = (x - (centerX - (width/2))) / width;
|
|
local adjustedY = (centerY + (height/2) - y ) / height;
|
|
local cx = (adjustedX + OFFSET_X);
|
|
local cy = (adjustedY + OFFSET_Y);
|
|
|
|
local cursorCoordsText = format(TITAN_COORDS_MAP_COORDS_TEXT, 100 * cx, 100 * cy);
|
|
local playerCoordsText = format(TITAN_COORDS_MAP_COORDS_TEXT, 100 * this.px, 100 * this.py);
|
|
TitanMapCursorCoords:SetText(format(TITAN_COORDS_MAP_CURSOR_COORDS_TEXT, TitanUtils_GetHighlightText(cursorCoordsText)));
|
|
TitanMapPlayerCoords:SetText(format(TITAN_COORDS_MAP_PLAYER_COORDS_TEXT, TitanUtils_GetHighlightText(playerCoordsText)));
|
|
end
|
|
end
|