Initial commit
This commit is contained in:
103
gamemodes/darkrp/gamemode/modules/hungermod/cl_init.lua
Normal file
103
gamemodes/darkrp/gamemode/modules/hungermod/cl_init.lua
Normal file
@@ -0,0 +1,103 @@
|
||||
local cvars = cvars
|
||||
local draw = draw
|
||||
local hook = hook
|
||||
local math = math
|
||||
local table = table
|
||||
local timer = timer
|
||||
local Color = Color
|
||||
local ColorAlpha = ColorAlpha
|
||||
local CreateClientConVar = CreateClientConVar
|
||||
local GetConVar = GetConVar
|
||||
local ipairs = ipairs
|
||||
local pairs = pairs
|
||||
local unpack = unpack
|
||||
|
||||
local ConVars = {
|
||||
HungerBackground = {0, 0, 0, 255},
|
||||
HungerForeground = {30, 30, 120, 255},
|
||||
HungerPercentageText = {255, 255, 255, 255},
|
||||
StarvingText = {200, 0, 0, 255},
|
||||
FoodEatenBackground = {0, 0, 0}, -- No alpha
|
||||
FoodEatenForeground = {20, 100, 20} -- No alpha
|
||||
}
|
||||
local HUDWidth = 0
|
||||
|
||||
local FoodAteAlpha = -1
|
||||
local FoodAteY = 0
|
||||
|
||||
surface.CreateFont("HungerPlus", {
|
||||
size = 70,
|
||||
weight = 500,
|
||||
antialias = true,
|
||||
shadow = false,
|
||||
font = "ChatFont",
|
||||
extended = true,
|
||||
})
|
||||
|
||||
local function ReloadConVars()
|
||||
for name, Colour in pairs(ConVars) do
|
||||
ConVars[name] = {}
|
||||
for num, rgb in ipairs(Colour) do
|
||||
local ConVarName = name .. num
|
||||
local CVar = GetConVar(ConVarName) or CreateClientConVar(ConVarName, rgb, true, false)
|
||||
table.insert(ConVars[name], CVar:GetInt())
|
||||
|
||||
if not cvars.GetConVarCallbacks(ConVarName, false) then
|
||||
cvars.AddChangeCallback(ConVarName, function() timer.Simple(0, ReloadConVars) end)
|
||||
end
|
||||
end
|
||||
ConVars[name] = Color(unpack(ConVars[name]))
|
||||
end
|
||||
|
||||
if HUDWidth == 0 then
|
||||
HUDWidth = 240
|
||||
cvars.AddChangeCallback("HudW", function() timer.Simple(0, ReloadConVars) end)
|
||||
end
|
||||
|
||||
HUDWidth = GetConVar("HudW") and GetConVar("HudW"):GetInt() or 240
|
||||
end
|
||||
timer.Simple(0, ReloadConVars)
|
||||
|
||||
local function HMHUD()
|
||||
local shouldDraw = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_Hungermod")
|
||||
if shouldDraw == false then return end
|
||||
|
||||
local energy = math.ceil(LocalPlayer():getDarkRPVar("Energy") or 0)
|
||||
|
||||
local x = 5
|
||||
local y = ScrH() - 9
|
||||
|
||||
local cornerRadius = 4
|
||||
if energy > 0 then
|
||||
cornerRadius = math.Min(4, (HUDWidth - 9) * (energy / 100) / 3 * 2 - (HUDWidth - 9) * (energy / 100) / 3 * 2 % 2)
|
||||
end
|
||||
|
||||
draw.RoundedBox(cornerRadius, x - 1, y - 1, HUDWidth - 8, 9, ConVars.HungerBackground)
|
||||
|
||||
if energy > 0 then
|
||||
draw.RoundedBox(cornerRadius, x, y, (HUDWidth - 9) * (energy / 100), 7, ConVars.HungerForeground)
|
||||
draw.DrawNonParsedSimpleText(energy .. "%", "DefaultSmall", HUDWidth / 2, y - 3, ConVars.HungerPercentageText, 1)
|
||||
else
|
||||
draw.DrawNonParsedSimpleText(DarkRP.getPhrase("starving"), "ChatFont", HUDWidth / 2, y - 5, ConVars.StarvingText, 1)
|
||||
end
|
||||
|
||||
if FoodAteAlpha > -1 then
|
||||
local mul = 1
|
||||
if FoodAteY <= ScrH() - 100 then
|
||||
mul = -.5
|
||||
end
|
||||
|
||||
draw.DrawNonParsedSimpleText("++", "HungerPlus", 208, FoodAteY + 1, ColorAlpha(ConVars.FoodEatenBackground, FoodAteAlpha), 0)
|
||||
draw.DrawNonParsedSimpleText("++", "HungerPlus", 207, FoodAteY, ColorAlpha(ConVars.FoodEatenForeground, FoodAteAlpha), 0)
|
||||
|
||||
FoodAteAlpha = math.Clamp(FoodAteAlpha + 4 * FrameTime() * mul, -1, 1) --ColorAlpha works with 0-1 alpha
|
||||
FoodAteY = FoodAteY - 150 * FrameTime()
|
||||
end
|
||||
end
|
||||
hook.Add("HUDDrawTargetID", "HMHUD", HMHUD) --HUDDrawTargetID is called after DarkRP HUD is drawn in HUDPaint
|
||||
|
||||
local function AteFoodIcon(msg)
|
||||
FoodAteAlpha = 1
|
||||
FoodAteY = ScrH() - 8
|
||||
end
|
||||
usermessage.Hook("AteFoodIcon", AteFoodIcon)
|
||||
Reference in New Issue
Block a user