-- Declard color codes for console messages local RED = "|cffff0000"; local GREEN = "|cff00ff00"; local BLUE = "|cff0000ff"; local MAGENTA = "|cffff00ff"; local YELLOW = "|cffffff00"; local CYAN = "|cff00ffff"; local WHITE = "|cffffffff"; local ORANGE = "|cffffba00"; TITAN_ZM_ID = "ZeppelinMaster"; TITAN_ZM_COUNT_FORMAT = "%d"; TITAN_ZM_MENU_TEXT = "ZeppelinMaster v1.87"; TITAN_ZM_BUTTON_LABEL = "Hello Menu Counter: "; TITAN_ZM_TOOLTIP = "ZeppelinMaster"; TITAN_ZM_FREQUENCY = 1; TITAN_ZM_ARTWORK = "Interface\\AddOns\\TitanZeppelinMaster\\Artwork\\"; activeTransitName = ""; activeSelect = -1; activeTransit = -1; ----------------------------------- -- local variables ----------------------------------- local dropdownvalues = {}; local dropdownindexes = {}; local firstTooltip = true; ZM_tempText = ""; ZM_tempTextCount = 0; function TitanPanelZeppelinMasterButton_OnLoad() -- Make sure ZeppelinMaster loads first LoadAddOn("ZeppelinMaster"); this:RegisterEvent("VARIABLES_LOADED"); this:RegisterEvent("ZONE_CHANGED_NEW_AREA"); this.registry = { id = TITAN_ZM_ID, category = "Information", menuText = TITAN_ZM_MENU_TEXT, buttonTextFunction = "TitanPanelZeppelinMasterButton_GetButtonText", tooltipTitle = TITAN_ZM_TOOLTIP, tooltipTextFunction = "TitanPanelZeppelinMasterButton_GetTooltipText", frequency = TITAN_ZM_FREQUENCY, icon = TITAN_ZM_ARTWORK.."Zeppelinmaster", iconWidth = 16, savedVariables = { OptZoneGUI = 1, OptFaction = 1, OptZone = 1, OptAlias = 1, ShowLabelText = 1, ShowIcon = 1, } }; Pre_TitanToggleVar = TitanToggleVar; TitanToggleVar = ZM_TitanToggleVar; --TitanToggleVar(id, var) end -- Hook toggle button function ZM_TitanToggleVar(id, var) --local button, id = TitanUtils_GetButton(id, true); --DEFAULT_CHAT_FRAME:AddMessage(var); --DEFAULT_CHAT_FRAME:AddMessage(id); if (id == TITAN_ZM_ID) then TitanPanelRightClickMenu_PrepareZeppelinMasterMenu(); TitanPanelRightClickMenu_Close(); end return Pre_TitanToggleVar(id, var); end function TitanPanelZeppelinMasterButton_OnEvent ( event ) if (event == "VARIABLES_LOADED") then else --DEFAULT_CHAT_FRAME:AddMessage(event); TitanPanelRightClickMenu_PrepareZeppelinMasterMenu(); TitanPanelRightClickMenu_Close(); end end function TitanPanelZeppelinMasterButton_GetButtonText(id) local button, id = TitanUtils_GetButton(id, true); local lowestName; local lowestTime = 500; local lowestTimeStr; if (ZM_tempTextCount > 0) then ZM_tempTextCount = ZM_tempTextCount -1; return ZM_tempText; end if ((activeTransit ~= -1) and (known_times[activeTransit] ~= nil)) then local transit = activeTransit; local cycle = ZSM_CalcTripCycle(transit); local coord_data = ZSM_GetZepCoords(transit, cycle); for index, data in zsm_data[transit..'_plats'] do --ZSM_CalcTripCycleTime(transit,cycle) --DEFAULT_CHAT_FRAME:AddMessage(data['name']..":"..ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1)); local arrival_time = 0; if (ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1) > (cycle*zsm_data[transit..'_time'])) then arrival_time = ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1) - (cycle*zsm_data[transit..'_time']); --DEFAULT_CHAT_FRAME:AddMessage("Arrival Time of "..data['name']..": "..arrival_time .." sec."); else arrival_time = zsm_data[transit..'_time'] - (cycle*zsm_data[transit..'_time']); arrival_time = arrival_time + ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1); --DEFAULT_CHAT_FRAME:AddMessage("Arrival Time of "..data['name']..": "..arrival_time .." sec."); end --DEFAULT_CHAT_FRAME:AddMessage(GetRealZoneText()); local platname; if (ZSM_Data['Opts']['CityAlias']) then platname = data['alias']; else platname = data['name']; end getglobal("ZSMFramePlat"..(index+1).."Name"):SetText(platname); local coord_data = ZSM_GetZepCoords(transit, cycle); local depart_time = ZSM_CalcTripCycleTime(transit,cycle) - (cycle*zsm_data[transit..'_time']) - data['adj']; local formated_depart_time = ""; if (depart_time > 59) then local time_min = format("%0.0f",math.floor(depart_time/60)); local time_sec = format("%0.0f",depart_time-(math.floor(depart_time/60)*60)); formated_depart_time = time_min.."m "..time_sec.."s"; else formated_depart_time = format("%0.0f",depart_time).."s"; end local formated_arrival_time = ""; if (arrival_time > 59) then local time_min = format("%0.0f",math.floor(arrival_time/60)); local time_sec = format("%0.0f",arrival_time-(math.floor(arrival_time/60)*60)); formated_arrival_time = time_min.."m "..time_sec.."s"; else formated_arrival_time = format("%0.0f",arrival_time).."s"; end if ((data['x'] == tonumber(coord_data[1])) and (data['y'] == tonumber(coord_data[2])) and (depart_time > 0)) then local color; if (depart_time > 30) then color = YELLOW; else color = RED; end --getglobal("ZSMFramePlat"..(index+1).."ArrivalDepature"):SetText(color.."Dep: ".. formated_depart_time); TitanPanelZeppelinMasterButton.registry.icon = TITAN_ZM_ARTWORK.."Loading"; local constr = data['ebv'].. color .. " ".. formated_depart_time; return constr; else --local color = GREEN; --getglobal("ZSMFramePlat"..(index+1).."ArrivalDepature"):SetText(color.."Arr: ".. formated_arrival_time); --DEFAULT_CHAT_FRAME:AddMessage(arrival_time); if (arrival_time < lowestTime) then lowestTime = arrival_time; lowestName = data['ebv']; lowestTimeStr = formated_arrival_time; end TitanPanelZeppelinMasterButton.registry.icon = TITAN_ZM_ARTWORK.."Transit"; end end elseif ((activeTransit ~= -1) and (known_times[activeTransit] == nil)) then local transit = activeTransit; TitanPanelZeppelinMasterButton.registry.icon = TITAN_ZM_ARTWORK.."Zeppelinmaster"; return "N/A"; elseif (activeTransit == -1) then TitanPanelZeppelinMasterButton.registry.icon = TITAN_ZM_ARTWORK.."Zeppelinmaster"; return "--"; end -- Display Departure Time local constr = lowestName.. GREEN.. " " .. lowestTimeStr; return constr; --local countText = format(TITAN_ZM_COUNT_FORMAT, button.count); --return TITAN_ZM_BUTTON_LABEL, TitanUtils_GetHighlightText(countText), "test"; end function TitanPanelZeppelinMasterButton_GetTooltipText() if (firstTooltip) then firstTooltip = false; TitanPanelRightClickMenu_PrepareZeppelinMasterMenu(); end --local countText = format(TITAN_ZM_COUNT_FORMAT, this.count); --return TITAN_ZM_TOOLTIP_COUNT.."\t"..TitanUtils_GetHighlightText(countText); local tooltiptext = ""; local lowestName; local lowestTime = 500; local lowestTimeStr; if ((activeTransit ~= -1) and (known_times[activeTransit] ~= nil)) then local transit = activeTransit; local cycle = ZSM_CalcTripCycle(transit); local coord_data = ZSM_GetZepCoords(transit, cycle); tooltiptext = tooltiptext..activeTransitName.."\n\n"; for index, data in zsm_data[transit..'_plats'] do --ZSM_CalcTripCycleTime(transit,cycle) --DEFAULT_CHAT_FRAME:AddMessage(data['name']..":"..ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1)); local arrival_time = 0; if (ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1) > (cycle*zsm_data[transit..'_time'])) then arrival_time = ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1) - (cycle*zsm_data[transit..'_time']); --DEFAULT_CHAT_FRAME:AddMessage("Arrival Time of "..data['name']..": "..arrival_time .." sec."); else arrival_time = zsm_data[transit..'_time'] - (cycle*zsm_data[transit..'_time']); arrival_time = arrival_time + ZSM_CalcTripCycleTimeByIndex(transit,data['index']-1); --DEFAULT_CHAT_FRAME:AddMessage("Arrival Time of "..data['name']..": "..arrival_time .." sec."); end --DEFAULT_CHAT_FRAME:AddMessage(GetRealZoneText()); local platname; if (ZSM_Data['Opts']['CityAlias']) then platname = data['alias']; else platname = data['name']; end getglobal("ZSMFramePlat"..(index+1).."Name"):SetText(platname); local coord_data = ZSM_GetZepCoords(transit, cycle); local depart_time = ZSM_CalcTripCycleTime(transit,cycle) - (cycle*zsm_data[transit..'_time']) - data['adj']; local formated_depart_time = ""; if (depart_time > 59) then local time_min = format("%0.0f",math.floor(depart_time/60)); local time_sec = format("%0.0f",depart_time-(math.floor(depart_time/60)*60)); formated_depart_time = time_min.."m, "..time_sec.."s"; else formated_depart_time = format("%0.0f",depart_time).."s"; end local formated_arrival_time = ""; if (arrival_time > 59) then local time_min = format("%0.0f",math.floor(arrival_time/60)); local time_sec = format("%0.0f",arrival_time-(math.floor(arrival_time/60)*60)); formated_arrival_time = time_min.."m, "..time_sec.."s"; else formated_arrival_time = format("%0.0f",arrival_time).."s"; end if ((data['x'] == tonumber(coord_data[1])) and (data['y'] == tonumber(coord_data[2])) and (depart_time > 0)) then local color; if (depart_time > 30) then color = YELLOW; else color = RED; end --getglobal("ZSMFramePlat"..(index+1).."ArrivalDepature"):SetText(color.."Dep: ".. formated_depart_time); --color .. " ".. formated_depart_time; --return constr; tooltiptext = tooltiptext..platname.."\n"; tooltiptext = tooltiptext..color.."Departure: ".. " ".. formated_depart_time.."\n\n"; else --local color = GREEN; --getglobal("ZSMFramePlat"..(index+1).."ArrivalDepature"):SetText(color.."Arr: ".. formated_arrival_time); --DEFAULT_CHAT_FRAME:AddMessage(arrival_time); tooltiptext = tooltiptext..platname.."\n"; tooltiptext = tooltiptext..GREEN.."Arrival: ".. formated_arrival_time.."\n\n"; end end elseif ((activeTransit ~= -1) and (known_times[activeTransit] == nil)) then local transit = activeTransit; tooltiptext = tooltiptext..activeTransitName.."\n\n"; for index, data in zsm_data[transit..'_plats'] do local platname; if (ZSM_Data['Opts']['CityAlias']) then platname = data['alias']; else platname = data['name']; end --getglobal("ZSMFramePlat"..(index+1).."Name"):SetText(platname); --getglobal("ZSMFramePlat"..(index+1).."ArrivalDepature"):SetText("-- N/A --"); tooltiptext = tooltiptext..platname.."\n"; tooltiptext = tooltiptext.."Not Available\n\n"; end elseif (activeTransit == -1) then --for index = 1, 2 do -- getglobal("ZSMFramePlat"..(index).."Name"):SetText(ZSM_STR_NONESELECT); -- getglobal("ZSMFramePlat"..(index).."ArrivalDepature"):SetText("-- N/A --"); --end tooltiptext = tooltiptext.."No Transit Selected\n"; end return tooltiptext; end function TitanPanelRightClickMenu_PrepareZeppelinMasterMenu() if (TitanPanelZeppelinMasterButtonRightClickMenu) then UIDropDownMenu_ClearAll(TitanPanelZeppelinMasterButtonRightClickMenu); --DEFAULT_CHAT_FRAME:AddMessage("Resetting"); end --DEFAULT_CHAT_FRAME:AddMessage("Resetting"); --UIDropDownMenu_Initialize(TitanPanelZeppelinMasterRightClickMenu, nil); --TitanPanelRightClickMenu_AddToggleIcon(TITAN_ZM_ID); local OptFaction = TitanGetVar(TITAN_ZM_ID, "OptFaction"); local OptZone = TitanGetVar(TITAN_ZM_ID, "OptZone"); local OptAlias = TitanGetVar(TITAN_ZM_ID, "OptAlias"); dropdownvalues = {}; dropdownindexes = {}; -- Menu title TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_ZM_ID].menuText); TitanPanelRightClickMenu_AddSpacer(); -- TitanPanelRightClickMenu_AddCommand() adds an entry in the menu which triggers a function when clicked -- 1st parameter is the menu text -- 2st parameter can be retrieved by "this.value" in the triggered function. It's like passing parameters to the function. -- 3st parameter is the triggered function name --TitanPanelRightClickMenu_AddCommand(TITAN_ZM_MENU_RESET_COUNT, TITAN_ZM_ID, "TitanPanelZeppelinMasterButton_ResetCount"); TitanPanelRightClickMenu_AddCommand(RED.."Select None", -1, "TitanPanelZeppelinMasterButton_SetTransport"); local count = 1; for index, data in zsm_data['transports'] do local tmplabel = data['label']; dropdownindexes[tmplabel] = index; local textdesc; if (OptAlias) then textdesc = zsm_data['transports'][index]['namealias']; else textdesc = zsm_data['transports'][index]['name']; end local addtrans = false; if (OptFaction) then local faction = UnitFactionGroup("player"); if ((zsm_data['transports'][index]['faction'] == faction) or (zsm_data['transports'][index]['faction'] == "Nuetral")) then addtrans = true; end else addtrans = true; end if (OptZone and (addtrans)) then local zonestr = string.lower(zsm_data['transports'][index]['name']); local czonestr = string.lower(GetRealZoneText()); if (not string.find(zonestr, czonestr)) then addtrans = false; end end if ((addtrans) and (zsm_data['transports'][index]['faction'] ~= -1)) then table.insert(dropdownvalues, zsm_data['transports'][index]['label']); label = zsm_data['transports'][index]['label']; if (known_times[label] ~= nil) then TitanPanelRightClickMenu_AddCommand(GREEN.. textdesc, count, "TitanPanelZeppelinMasterButton_SetTransport"); else TitanPanelRightClickMenu_AddCommand(textdesc, count, "TitanPanelZeppelinMasterButton_SetTransport"); end count = count + 1; end end -- A blank line in the menu TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddToggleVar(ZSM_STR_OPT_FACTION, TITAN_ZM_ID, "OptFaction"); TitanPanelRightClickMenu_AddToggleVar(ZSM_STR_OPT_ZONE, TITAN_ZM_ID, "OptZone"); TitanPanelRightClickMenu_AddToggleVar(ZSM_STR_OPT_ALIAS, TITAN_ZM_ID, "OptAlias"); TitanPanelRightClickMenu_AddSpacer(); --TitanPanelRightClickMenu_AddCommand(data['name'], TITAN_ZM_ID, "TitanPanelZeppelinMasterButton_ResetCount"); -- Generic function to toggle label text --TitanPanelRightClickMenu_AddToggleLabelText(TITAN_ZM_ID); -- Generic function to hide the plugin TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_ZM_ID, TITAN_PANEL_MENU_FUNC_HIDE); end function TitanPanelZeppelinMasterButton_OnClick( event ) if (event == "LeftButton") then if (table.getn(dropdownvalues) == 0) then activeSelect = -1; activeTransit = -1; return; elseif (activeSelect == -1) then activeSelect = 1; else activeSelect = activeSelect+1; end if (activeSelect > table.getn(dropdownvalues)) then activeSelect = 1; activeTransit = dropdownvalues[activeSelect]; else activeTransit = dropdownvalues[activeSelect]; end local OptAlias = TitanGetVar(TITAN_ZM_ID, "OptAlias"); if (OptAlias) then activeTransitName = zsm_data['transports'][dropdownindexes[activeTransit]]['namealias']; else activeTransitName = zsm_data['transports'][dropdownindexes[activeTransit]]['name']; end local color; if (known_times[activeTransit] ~= nil) then color = GREEN; else color = RED; end -- Set tempory button text so you know which one is currently selected ZM_tempText = color..activeTransitName; ZM_tempTextCount = 2; TitanPanelButton_SetButtonText(TITAN_ZM_ID); if (known_times[activeTransit] == nil) then ZSM_TransportRequestData(activeTransit); end end end function TitanPanelZeppelinMasterButton_SetTransport(id) --DEFAULT_CHAT_FRAME:AddMessage("blah:"); --DEFAULT_CHAT_FRAME:AddMessage(dropdownindexes[activeTransit]); if (this.value == -1) then activeSelect = -1; activeTransit = -1; activeTransitName = "None Selected"; else activeSelect = this.value; activeTransit = dropdownvalues[this.value]; local OptAlias = TitanGetVar(TITAN_ZM_ID, "OptAlias"); if (OptAlias) then activeTransitName = zsm_data['transports'][dropdownindexes[activeTransit]]['namealias']; else activeTransitName = zsm_data['transports'][dropdownindexes[activeTransit]]['name']; end if (known_times[activeTransit] == nil) then ZSM_TransportRequestData(activeTransit); end ZM_tempText = activeTransitName; ZM_tempTextCount = 2; end end