Merge pull request #102 from BClark09/master

2 commits regarding point_zsmessage functionality
This commit is contained in:
William Moodhe / JetBoom 2015-01-09 02:17:54 -05:00
commit 1140463eba
3 changed files with 63 additions and 7 deletions

View file

@ -2,6 +2,11 @@ ENT.Type = "point"
function ENT:Initialize()
self.SendTo = self.SendTo or -1
self.DisplayTime = self.DisplayTime or GAMEMODE.NotifyFadeTime
self.Position = self.Position or "center"
self.Red = self.Red or 255
self.Green = self.Green or 255
self.Blue = self.Blue or 255
end
function ENT:Think()
@ -15,19 +20,33 @@ function ENT:AcceptInput(name, caller, activator, args)
args = string.gsub(args, "<.-=.->", "")
args = string.gsub(args, "</.->", "")
local TextColor = Color(self.Red, self.Green, self.Blue)
if self.SendTo == 0 then
GAMEMODE:CenterNotifyAll(args)
if self.Position == "top" then
GAMEMODE:TopNotifyAll(TextColor, args, {CustomTime = self.DisplayTime})
else
GAMEMODE:CenterNotifyAll(TextColor, args, {CustomTime = self.DisplayTime})
end
elseif self.SendTo == -1 then
for _, pl in pairs(player.GetAll()) do
if pl == activator or pl == caller then
pl:CenterNotify(args)
if self.Position == "top" then
pl:TopNotify(TextColor, args, {CustomTime = self.DisplayTime})
else
pl:CenterNotify(TextColor, args, {CustomTime = self.DisplayTime})
end
break
end
end
else
for _, pl in pairs(player.GetAll()) do
if pl:Team() == self.SendTo then
pl:CenterNotify(args)
if self.Position == "top" then
pl:TopNotify(TextColor, args, {CustomTime = self.DisplayTime})
else
pl:CenterNotify(TextColor, args, {CustomTime = self.DisplayTime})
end
end
end
end
@ -41,6 +60,10 @@ function ENT:AcceptInput(name, caller, activator, args)
SetGlobalString("hudoverride"..TEAM_UNDEAD, "")
elseif name == "clearhumanhudmessage" or name == "clearsurvivorhudmessage" then
SetGlobalString("hudoverride"..TEAM_HUMAN, "")
elseif name == "setdisplaytime" then
self.DisplayTime = tonumber(args)
elseif name == "settextcolor" or name == "settextcolour" then
self:ApplyColor(args)
end
end
@ -57,5 +80,18 @@ function ENT:KeyValue(key, value)
else
self.SendTo = 0
end
elseif key == "displaytime" then
self.DisplayTime = tonumber(value)
elseif key == "position" then
self.Position = string.lower(value)
elseif key == "textcolor" or key == "textcolour" then
self:ApplyColor(value)
end
end
function ENT:ApplyColor(colorstring)
local col = string.ToColor(colorstring.." 255")
self.Red = col.r or 255
self.Green = col.g or 255
self.Blue = col.b or 255
end

View file

@ -160,12 +160,23 @@ function PANEL:AddNotification(...)
notif:Dock(TOP)
local args = {...}
local FadeTime = GAMEMODE.NotifyFadeTime
for k, v in pairs(args) do
if type(v) == "table" and v.CustomTime and type(v.CustomTime == "number") then
FadeTime = v.CustomTime
break
end
end
notif:SetAlpha(1)
notif:AlphaTo(255, 0.5)
notif:AlphaTo(1, 1, GAMEMODE.NotifyFadeTime - 1)
notif.DieTime = CurTime() + GAMEMODE.NotifyFadeTime
notif:AlphaTo(1, 1, FadeTime - 1)
notif.DieTime = CurTime() + FadeTime
return notif
end

View file

@ -635,6 +635,13 @@
"private" : "Activator Only"
"all" : "All"
]
displaytime(integer) : "Display Time" : 8 : "How long the input message displays for, does not have an effect on HUD messages."
position(choices) : "Message Position" : "center" : "Where the message is seen." =
[
"center" : "Center"
"top" : "Top Right"
]
textcolor(color255) : "Text Colour" : "255 255 255" : "Sets the color of an input message."
// Inputs
input message(string) : "What to display. Supports the markup library."
@ -642,6 +649,8 @@
input setzombiehudmessage(string) : "Set a message to display in the zombie wave hud."
input clearhumanhudmessage(void) : "Clear the message to display in the human wave hud."
input clearzombiehudmessage(void) : "Clear the message to display in the zombie wave hud."
input setdisplaytime(integer) : "Change how long the input message displays for."
input settextcolor(string) : "Takes an 'R G B' string to change the color of the next message."
]
@PointClass base(Targetname) = logic_pantsmode : "ZS: When activated, this will set the special Pants Mode on."