⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 titanfactions.lua

📁 时间太紧了
💻 LUA
字号:
---------------------------------------------------------------------------- TitanFactions.lua ----------------------------------------------------------------------------[[
Titan Panel [Factions]	When hovered over it displays the reputation standing for each faction
	and the percentage completed.  Can monitor an individual faction in the	Titan Panel.Author: Corgi - corgiwow@gmail.comv0.11 (October 19, 2005 11:15 PST)- localization updatev0.10 (October 14, 2005 13:45 PST)- added ability to monitor a faction- color-coded faction text (thanks Fyredrake)v0.09 (October 11, 2005 16:20 PST)- updated for changes to GetFactionInfo()- updated toc# for 1.80 patchv0.08 (September 15, 2005 21:23 PST)- added toggle between raw and percentage- updated toc# for 1.70 patchv0.07 (June 13, 2005 15:00 PST)- updated for Titan Panel 1.24v0.06 (June 7, 2005 20:30 PST)- toc updated for 1.50 patch
v0.05 (June 6, 2005 23:45 PST)- added transparent iconv0.04 (May 31, 2005 02:22 PST)
- updated for Titan Panel version 1.22
- added Icon
- removed the displaying number of factions

v0.03 (May 26, 2005 15:20 PST)
- added a tab between faction name and standing

v0.02 (May 25, 2005 11:05 PST)
- removed faction headers from total number of factions

v0.01 (May 25, 2005 02:00 PST)
- Initial ReleaseTODO: Complete translation for German, French and Korean.      NOTE: Requires Titan Panel version 1.22+]]--

TITAN_FACTIONS_ID = "Factions";

TITAN_FACTIONS_ICON = "Interface\\AddOns\\TitanPlus\\Artwork\\TitanFactions";-- Maximum units for each standing
Units = { };
Units[1] = 36000; -- Hated
Units[2] = 3000; -- Hostile
Units[3] = 3000; -- Unfriendly
Units[4] = 3000; -- Neutral
Units[5] = 6000; -- Friendly
Units[6] = 12000; -- Honored
Units[7] = 21000; -- Revered
Units[8] = 1000; -- Exalted
--
-- OnFunctions
--
function TitanPanelFactionsButton_OnLoad()
	this.registry = { 
		id = TITAN_FACTIONS_ID,
		menuText = TITAN_FACTIONS_MENU_TEXT, 
		buttonTextFunction = "TitanPanelFactionsButton_GetButtonText", 
		tooltipTitle = TITAN_FACTIONS_TOOLTIP,
		tooltipTextFunction = "TitanPanelFactionsButton_GetTooltipText", 
		icon = TITAN_FACTIONS_ICON,
	    iconWidth = 16,
		savedVariables = {
			ShowIcon = 1,
			ShowLabelText = 1,			ShowRaw = 1,			ShowMonitor = TITAN_NIL,			MonitorFaction = TITAN_NIL,
		}
	};		this:RegisterEvent("UPDATE_FACTION");
end


function TitanPanelFactionsButton_OnEvent(event)	if ( event == "UPDATE_FACTION" ) then		if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowMonitor") == 1 ) then			TitanPanelFactions_UpdateMonitor();
			TitanPanelButton_UpdateButton(TITAN_FACTIONS_ID);			end
		TitanPanelButton_UpdateTooltip();	end
end

--
-- Titan functions
--
function TitanPanelFactionsButton_GetButtonText(id)
	local buttonRichText = "";	if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowMonitor") == 1 and (TitanGetVar(TITAN_FACTIONS_ID, "MonitorFaction") ~= nil) ) then		buttonRichText = format(TITAN_FACTIONS_BUTTON_TEXT, TitanGetVar(TITAN_FACTIONS_ID, "MonitorFaction"));	end	
	return TITAN_FACTIONS_BUTTON_LABEL, buttonRichText;
end


function TitanPanelFactionsButton_GetTooltipText()
	
	local tooltipRichText = "";

	local NumFactions = GetNumFactions();

	local faction_name, faction_description, faction_standingID, faction_barMin, faction_barMax, faction_barValue, faction_atWarWith;
	local faction_canToggleAtWar, faction_isHeader, faction_isCollapsed;

	local factionIndex;

	for factionIndex=1, NumFactions do

		faction_name, faction_description, faction_standingID, faction_barMin, faction_barMax, faction_barValue, faction_atWarWith, faction_canToggleAtWar, faction_isHeader, faction_isCollapsed = GetFactionInfo(factionIndex);
	
		if ( not faction_isHeader ) then
						tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(faction_name)..":".."\t"..TitanPanelFactions_FindRep(faction_standingID).."(";						if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowRaw") ) then				tooltipRichText = tooltipRichText..faction_barValue - faction_barMin.."/"..faction_barMax - faction_barMin..")\n";			else				local bval = math.floor( ((faction_barValue - faction_barMin) / (faction_barMax - faction_barMin)) * 100);
				tooltipRichText = tooltipRichText..bval.."%)\n";			end
		else
			tooltipRichText = tooltipRichText..TitanUtils_GetNormalText(faction_name).."\n";
		end
	end

	-- remove the last \n
	tooltipRichText = string.sub(tooltipRichText, 1, string.len(tooltipRichText)-1);

	return tooltipRichText;
end

--
-- create 2nd level right-click menu
--
function TitanPanelRightClickMenu_PrepareFactionsMenu()
	local info = {};	
	if ( UIDROPDOWNMENU_MENU_LEVEL == 2 ) then		
		if ( UIDROPDOWNMENU_MENU_VALUE == "DisplayAbout" ) then			info = {};
			info.text = TITAN_FACTIONS_ABOUT_POPUP_TEXT;
			info.value = "AboutTextPopUP";
			info.notClickable = 1;
			info.isTitle = 0;
			UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
		end				if ( UIDROPDOWNMENU_MENU_VALUE == "Monitor" ) then							info = {};			info.text = TITAN_FACTIONS_MONITOR_TOGGLE_TEXT;			info.func = TitanPanelFactions_MonitorToggle;			info.checked = TitanGetVar(TITAN_FACTIONS_ID, "ShowMonitor");			UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);						info = {};			UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);						local NumFactions = GetNumFactions();

			local faction_name, faction_description, faction_standingID, faction_barMin, faction_barMax, faction_barValue, faction_atWarWith;
			local faction_canToggleAtWar, faction_isHeader, faction_isCollapsed;
		
			local factionIndex;
		
			for factionIndex=1, NumFactions do
						info = {};				info.text = "";				
				faction_name, faction_description, faction_standingID, faction_barMin, faction_barMax, faction_barValue, faction_atWarWith, faction_canToggleAtWar, faction_isHeader, faction_isCollapsed = GetFactionInfo(factionIndex);
			
				if ( not faction_isHeader ) then
										info.text = info.text..TitanUtils_GetGreenText(faction_name)..":".."\t"..TitanPanelFactions_FindRep(faction_standingID).."(";										if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowRaw") ) then						info.text = info.text..faction_barValue - faction_barMin.."/"..faction_barMax - faction_barMin..")\n";					else						local bval = math.floor( ((faction_barValue - faction_barMin) / (faction_barMax - faction_barMin)) * 100);
						info.text = info.text..bval.."%)\n";					end										info.value = info.text;										info.func = TitanPanelFactions_SetMonitorFaction;													info.checked = nil;					if ( info.text == TitanGetVar(TITAN_FACTIONS_ID, "MonitorFaction") ) then						info.checked = 1;					end					UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);				
				end				
			end		end						return;
	end	
	TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_FACTIONS_ID].menuText);	
	--TitanPanelRightClickMenu_AddToggleIcon(TITAN_FACTIONS_ID);		-- monitor	info = {};	info.text = TITAN_FACTIONS_MONITOR;	info.value = "Monitor";	info.hasArrow = 1;	UIDropDownMenu_AddButton(info);	
	info = {};
	info.text = TITAN_FACTIONS_SHOW_RAW;
	info.func = TitanPanelFactions_ShowRawToggle;
	info.checked = TitanGetVar(TITAN_FACTIONS_ID, "ShowRaw");
	UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);		TitanPanelRightClickMenu_AddToggleLabelText(TITAN_FACTIONS_ID);		
	TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_FACTIONS_ID, TITAN_PANEL_MENU_FUNC_HIDE);

	-- info about plugin
	info = {};
	info.text = TITAN_FACTIONS_ABOUT_TEXT;
	info.value = "DisplayAbout";
	info.hasArrow = 1;
	UIDropDownMenu_AddButton(info);

end

--
-- Factions functions
---- Round function
function round(x)
	return floor(x+0.5);
endfunction TitanPanelFactions_UpdateMonitor()	local tmp_faction = "";		local NumFactions = GetNumFactions();

	local faction_name, faction_description, faction_standingID, faction_barMin, faction_barMax, faction_barValue, faction_atWarWith;
	local faction_canToggleAtWar, faction_isHeader, faction_isCollapsed;

	local factionIndex;	
	for factionIndex=1, NumFactions do

		faction_name, faction_description, faction_standingID, faction_barMin, faction_barMax, faction_barValue, faction_atWarWith, faction_canToggleAtWar, faction_isHeader, faction_isCollapsed = GetFactionInfo(factionIndex);
	
		if ( (TitanGetVar(TITAN_FACTIONS_ID, "MonitorFaction") ~= nil) and string.find(TitanGetVar(TITAN_FACTIONS_ID, "MonitorFaction"), faction_name) ) then						tmp_faction = TitanUtils_GetGreenText(faction_name)..":".."\t"..TitanPanelFactions_FindRep(faction_standingID).."(";						if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowRaw") ) then				tmp_faction = tmp_faction..faction_barValue - faction_barMin.."/"..faction_barMax - faction_barMin..")\n";			else				local bval = math.floor( ((faction_barValue - faction_barMin) / (faction_barMax - faction_barMin)) * 100);
				tmp_faction = tmp_faction..bval.."%)\n";			end			TitanSetVar(TITAN_FACTIONS_ID, "MonitorFaction", tmp_faction);
		end
	end	endfunction TitanPanelFactions_MonitorToggle()	if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowMonitor") ) then		TitanSetVar(TITAN_FACTIONS_ID, "ShowMonitor", nil);	else		TitanSetVar(TITAN_FACTIONS_ID, "ShowMonitor", 1);	end	TitanPanelButton_UpdateButton(TITAN_FACTIONS_ID);endfunction TitanPanelFactions_SetMonitorFaction()	TitanSetVar(TITAN_FACTIONS_ID, "MonitorFaction", this.value);	TitanPanelButton_UpdateButton(TITAN_FACTIONS_ID);endfunction TitanPanelFactions_ShowRawToggle()	if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowRaw") ) then		TitanSetVar(TITAN_FACTIONS_ID, "ShowRaw", nil);	else		TitanSetVar(TITAN_FACTIONS_ID, "ShowRaw", 1);	end	if ( TitanGetVar(TITAN_FACTIONS_ID, "ShowMonitor") == 1 ) then			TitanPanelFactions_UpdateMonitor();	end	TitanPanelButton_UpdateButton(TITAN_FACTIONS_ID);end		
function TitanPanelFactions_FindRep(standingID)
	if ( standingID == 0 ) then
		return UNKNOWN; -- unknown
	elseif ( standingID == 1 ) then
		return FactionTextHated; -- hated
	elseif ( standingID == 2) then
		return FactionTextHostile; -- hostile
	elseif ( standingID == 3) then
		return FactionTextUnfriendly; -- unfriendly
	elseif ( standingID == 4) then
		return FactionTextNeutral; -- neutral
	elseif ( standingID == 5) then
		return FactionTextFriendly; -- friendly
	elseif ( standingID == 6) then
		return FactionTextHonored; -- honored
	elseif ( standingID == 7) then
		return FactionTextRevered; -- revered
	elseif ( standingID == 8) then
		return FactionTextExalted; -- exalted
	end
end
--
-- debug
--
function TitanPanelFactions_ChatPrint(msg)
        DEFAULT_CHAT_FRAME:AddMessage(msg);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -