Quantcast

Dry code Background module. Following Cowtip design, you can programatically configure the background color using a number of scripts, i.e. guild, hostilePC, etc.. Same configurations in Cowtip, except scriptable. Default colors are provided by the Appearance module as usual. The provided scripts are pretty self explanatory. They just reference the Appearance module's background color selections by default.

Scott Sibley [08-04-11 - 11:23]
Dry code Background module. Following Cowtip design, you can programatically configure the background color using a number of scripts, i.e. guild, hostilePC, etc.. Same configurations in Cowtip, except scriptable. Default colors are provided by the Appearance module as usual. The provided scripts are pretty self explanatory. They just reference the Appearance module's background color selections by default.
Filename
Modules/Background/Background.lua
Modules/Background/StarTip_Background.toc
diff --git a/Modules/Background/Background.lua b/Modules/Background/Background.lua
new file mode 100644
index 0000000..f5c5e4b
--- /dev/null
+++ b/Modules/Background/Background.lua
@@ -0,0 +1,198 @@
+local mod = StarTip:NewModule("Background", "AceHook-3.0")
+mod.name = "Background"
+local _G = _G
+local GameTooltip = _G.GameTooltip
+local StarTip = _G.StarTip
+local UnitExists = _G.UnitExists
+local self = mod
+local L = StarTip.L
+local Evaluator = LibStub("LibScriptableUtilsEvaluator-1.0")
+
+local defaults = {
+	profile = {
+		guild = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.guild)
+]],
+		hostilePC = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.hostilePC)
+]],
+		hostileNPC = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.hostileNPC)
+]],
+		neutralNPC = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.neutralNPC)
+]],
+		friendlyNPC = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.friendlyNPC)
+]],
+		other = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.other)
+]],
+		dead = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.dead)
+]],
+		tapped = [[
+local mod = StarTip:GetModule("Appearance")
+local db = mod.db.profile
+return unpack(db.tapped)
+]]
+
+}
+
+local get = function(info)
+	return self.db.profile[info[#info]]
+end
+
+local set = function(info, v)
+	self.db.profile[info[#info]] = v
+end
+
+local options = {
+	background = {
+		name = L["Background"],
+		desc = L["One of these scripts will be ran when the tooltip shows."],
+		type = "group",
+		width = "full",
+		multiline = true,
+		get = get,
+		set = set,
+		order = 4
+		args = {
+			header = {
+				name = L["Background Color"],
+				type = "header",
+				order = 1
+			},
+			guild = {
+				name = L["Guild and friends"],
+				desc = L["Background color for your guildmates and friends."],
+				type = "input",
+				width = "full",
+				multiline = true,
+				order = 2
+			},
+			hostilePC = {
+				name = L["Hostile players"],
+				desc = L["Background color for hostile players."],
+				type = "input",
+				width = "full",
+				multiline = true,
+				order = 3
+			},
+			hostileNPC = {
+				name = L["Hostile non-player characters"],
+				desc = L["Background color for hostile non-player characters."],
+				type = "input",
+				width = "full",
+				multiline = true,
+				order = 4
+			},
+			neutralNPC = {
+				name = L["Neutral non-player characters"],
+				desc = L["Background color for neutral non-player characters."],
+				type = "input",
+				width = "full",
+				multiline = true,
+				order = 5
+			},
+			friendlyPC = {
+				name = L["Friendly players"],
+				desc = L["Background color for friendly players."],
+				type = "input",
+				width = "full",
+				multiline = true,
+				order = 6
+			},
+			friendlyNPC = {
+				name = L["Friendly non-player characters"],
+				desc = L["Background color for friendly non-player characters."],
+				type = "input",
+				width = "full",
+				multiline = true,
+				order = 7
+			}
+		}
+	},
+}
+
+function mod:OnInitialize()
+	self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults)
+	StarTip:SetOptionsDisabled(options, true)
+	self:SecureHook("GameTooltip_SetDefaultAnchor")
+end
+
+function mod:OnEnable()
+	StarTip:SetOptionsDisabled(options, false)
+end
+
+function mod:OnDisable()
+	StarTip:SetOptionsDisabled(options, true)
+end
+
+function mod:GetOptions()
+	return options
+end
+
+function mod:GameTooltip_SetDefaultAnchor(this, owner)
+		local kind
+		if UnitExists(StarTip.unit or "mouseover") then
+			if UnitIsDeadOrGhost(StarTip.unit or "mouseover") then
+				kind = 'dead'
+			elseif UnitIsTapped(StarTip.unit or "mouseover") and not UnitIsTappedByPlayer(StarTip.unit or "mouseover") then
+				kind = 'tapped'
+			elseif UnitIsPlayer(StarTip.unit or "mouseover") then
+				if UnitIsFriend("player", StarTip.unit or "mouseover") then
+					local playerGuild = GetGuildInfo("player")
+					if playerGuild and playerGuild == GetGuildInfo(StarTip.unit or "mouseover") or UnitIsUnit("player", StarTip.unit or "mouseover") then
+						kind = 'guild'
+					else
+						local friend = false
+						local name = UnitName(StarTip.unit or "mouseover")
+						for i = 1, GetNumFriends() do
+							if GetFriendInfo(i) == name then
+								friend = true
+								break
+							end
+						end
+						if friend then
+							kind = 'guild'
+						else
+							kind = 'friendlyPC'
+						end
+					end
+				else
+					kind = 'hostilePC'
+				end
+			else
+				if UnitIsFriend("player", StarTip.unit or "mouseover") then
+					kind = 'friendlyNPC'
+				else
+					local reaction = UnitReaction(StarTip.unit or "mouseover", "player")
+					if not reaction or reaction <= 2 then
+						kind = 'hostileNPC'
+					else
+						kind = 'neutralNPC'
+					end
+				end
+			end
+		else
+			kind = 'other'
+		end
+	local r, g, b, a = Evaluator.ExecuteCode(StarTip.environment, "StarTip.Background", self.db.profile[kind])
+        StarTip.tooltipMain:SetBackdropColor(r, g, b, a)
+end
+
diff --git a/Modules/Background/StarTip_Background.toc b/Modules/Background/StarTip_Background.toc
new file mode 100644
index 0000000..e9daf9f
--- /dev/null
+++ b/Modules/Background/StarTip_Background.toc
@@ -0,0 +1,10 @@
+## Interface: 40200
+## Title: StarTip [Background]
+## Notes: Tooltips from Outerspace
+## Author: Starlon
+## Version: 1.0
+## Deps: StarTip, StarTip_Appearance
+## X-Category: Tooltip
+## X-Part-Of: StarTip
+
+Clamp.lua