mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
290
lua/arccw/client/cl_hud.lua
Normal file
290
lua/arccw/client/cl_hud.lua
Normal file
@@ -0,0 +1,290 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local hide = {
|
||||
["CHudHealth"] = true,
|
||||
["CHudBattery"] = true,
|
||||
["CHudAmmo"] = true,
|
||||
["CHudSecondaryAmmo"] = true,
|
||||
}
|
||||
|
||||
CreateClientConVar("arccw_hud_togglestats", "0")
|
||||
|
||||
ArcCW.HUDElementConVars = {
|
||||
["CHudHealth"] = CreateClientConVar("arccw_hud_showhealth", "1"),
|
||||
["CHudBattery"] = ArcCW.ConVars["hud_showhealth"],
|
||||
["CHudAmmo"] = CreateClientConVar("arccw_hud_showammo", "1"),
|
||||
["CHudSecondaryAmmo"] = ArcCW.ConVars["hud_showammo"],
|
||||
}
|
||||
|
||||
local grad = Material("arccw/hud/grad.png", "mips smooth")
|
||||
hook.Add("PreDrawViewModels", "ArcCW_PreDrawViewmodels_Grad", function()
|
||||
if ArcCW.InvHUD and !grad:IsError() then
|
||||
render.SetViewPort( 0, 0, ScrW(), ScrH() )
|
||||
cam.Start2D()
|
||||
surface.SetDrawColor(Color(255, 255, 255, Lerp(ArcCW.Inv_Fade-0.01, 0, 255)))
|
||||
surface.SetMaterial(grad)
|
||||
surface.DrawTexturedRect(0, 0, ScrW(), ScrH())
|
||||
cam.End2D()
|
||||
end
|
||||
end)
|
||||
|
||||
hook.Add("HUDShouldDraw", "ArcCW_HideHUD", function(name)
|
||||
if !hide[name] then return end
|
||||
if !LocalPlayer():IsValid() then return end
|
||||
if !LocalPlayer():GetActiveWeapon().ArcCW then return end
|
||||
if ArcCW.ConVars["override_hud_off"]:GetBool() then return end
|
||||
if ArcCW.PollingDefaultHUDElements then return end
|
||||
if ArcCW.HUDElementConVars[name] and ArcCW.HUDElementConVars[name]:GetBool() == false then return end
|
||||
if engine.ActiveGamemode() == "terrortown" then return end
|
||||
|
||||
return false
|
||||
end)
|
||||
|
||||
hook.Add("RenderScreenspaceEffects", "ArcCW_ToyTown", function()
|
||||
if !LocalPlayer():IsValid() then return end
|
||||
local wpn = LocalPlayer():GetActiveWeapon()
|
||||
if !IsValid(wpn) then return end
|
||||
|
||||
if !wpn.ArcCW then return end
|
||||
|
||||
local delta = wpn:GetSightDelta()
|
||||
|
||||
if delta < 1 then
|
||||
wpn:DoToyTown()
|
||||
end
|
||||
end)
|
||||
|
||||
ArcCW.PollingDefaultHUDElements = false
|
||||
|
||||
function ArcCW:ShouldDrawHUDElement(ele)
|
||||
if !GetConVar("cl_drawhud"):GetBool() then return false end
|
||||
if ArcCW.ConVars["override_hud_off"]:GetBool() then return false end
|
||||
|
||||
if engine.ActiveGamemode() == "terrortown" and (ele != "CHudAmmo") then return false end
|
||||
|
||||
if ArcCW.HUDElementConVars[ele] and !ArcCW.HUDElementConVars[ele]:GetBool() then
|
||||
return false
|
||||
end
|
||||
|
||||
ArcCW.PollingDefaultHUDElements = true
|
||||
|
||||
if !ArcCW.ConVars["hud_forceshow"]:GetBool() and hook.Call("HUDShouldDraw", nil, ele) == false then
|
||||
ArcCW.PollingDefaultHUDElements = false
|
||||
return false
|
||||
end
|
||||
|
||||
ArcCW.PollingDefaultHUDElements = false
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function GetFont()
|
||||
local font = "Bahnschrift"
|
||||
|
||||
if ArcCW.GetTranslation("default_font") then
|
||||
font = ArcCW.GetTranslation("default_font")
|
||||
end
|
||||
|
||||
if ArcCW.ConVars["font"]:GetString() != "" then
|
||||
font = ArcCW.ConVars["font"]:GetString()
|
||||
end
|
||||
|
||||
return font
|
||||
end
|
||||
|
||||
-- Yes. Yes. Yes. Yes. Yes. Yes. Yes. Yes. Yes. Yes. Yes. Yes. Yes. Yes.
|
||||
-- What is the size of your ass. What is it. Tell me.
|
||||
local ScreenScale_CacheC2 = {}
|
||||
ArcCW.AugmentedScreenScale = function(size)
|
||||
if ScreenScale_CacheC2[size] then return ScreenScale_CacheC2[size] end
|
||||
|
||||
local scrw, scrh = ScrW(), ScrH()
|
||||
if vrmod and vrmod.IsPlayerInVR(LocalPlayer()) then
|
||||
-- Other resolutions seem to cause stretching issues
|
||||
scrw = 1366
|
||||
scrh = 768
|
||||
end
|
||||
|
||||
local scrwmult = ArcCW.ConVars["hud_deadzone_x"]:GetFloat() * scrw
|
||||
local scrhmult = ArcCW.ConVars["hud_deadzone_y"]:GetFloat() * scrh
|
||||
|
||||
scrw, scrh = scrw - scrwmult, scrh - scrhmult
|
||||
|
||||
local r = size
|
||||
r = r * (math.max(scrw, scrh) / 800)
|
||||
r = r * ArcCW.ConVars["hud_size"]:GetFloat()
|
||||
ScreenScale_CacheC2[size] = r
|
||||
return r
|
||||
end
|
||||
|
||||
local sizes_to_make = {
|
||||
6,
|
||||
8,
|
||||
10,
|
||||
12,
|
||||
14,
|
||||
16,
|
||||
20,
|
||||
24,
|
||||
26,
|
||||
32
|
||||
}
|
||||
|
||||
local sizes_to_make_cust2 = {
|
||||
8,
|
||||
10,
|
||||
12,
|
||||
14,
|
||||
16,
|
||||
24,
|
||||
32
|
||||
}
|
||||
|
||||
local unscaled_sizes_to_make = {
|
||||
32,
|
||||
24
|
||||
}
|
||||
|
||||
local function generatefonts()
|
||||
|
||||
for _, i in pairs(sizes_to_make) do
|
||||
|
||||
surface.CreateFont( "ArcCW_" .. tostring(i), {
|
||||
font = GetFont(),
|
||||
size = ScreenScale(i) * ArcCW.ConVars["hud_size"]:GetFloat(),
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
extended = true, -- Required for non-latin fonts
|
||||
} )
|
||||
|
||||
surface.CreateFont( "ArcCW_" .. tostring(i) .. "_Glow", {
|
||||
font = GetFont(),
|
||||
size = ScreenScale(i) * ArcCW.ConVars["hud_size"]:GetFloat(),
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
blursize = 6,
|
||||
extended = true,
|
||||
} )
|
||||
|
||||
end
|
||||
|
||||
for _, i in pairs(sizes_to_make_cust2) do
|
||||
|
||||
surface.CreateFont( "ArcCWC2_" .. tostring(i), {
|
||||
font = GetFont(),
|
||||
size = ArcCW.AugmentedScreenScale(i) * ArcCW.ConVars["hud_size"]:GetFloat(),
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
extended = true, -- Required for non-latin fonts
|
||||
} )
|
||||
|
||||
surface.CreateFont( "ArcCWC2_" .. tostring(i) .. "_Glow", {
|
||||
font = GetFont(),
|
||||
size = ArcCW.AugmentedScreenScale(i) * ArcCW.ConVars["hud_size"]:GetFloat(),
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
blursize = 6,
|
||||
extended = true,
|
||||
} )
|
||||
|
||||
end
|
||||
|
||||
for _, i in pairs(unscaled_sizes_to_make) do
|
||||
|
||||
surface.CreateFont( "ArcCW_" .. tostring(i) .. "_Unscaled", {
|
||||
font = GetFont(),
|
||||
size = i,
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
extended = true,
|
||||
} )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
local og_ScreenScale = ScreenScale
|
||||
|
||||
local ScreenScale_Cache = {}
|
||||
|
||||
function ScreenScale(a)
|
||||
if ScreenScale_Cache[a] then return ScreenScale_Cache[a] end
|
||||
|
||||
ScreenScale_Cache[a] = og_ScreenScale(a)
|
||||
return ScreenScale_Cache[a]
|
||||
end
|
||||
|
||||
language.Add("SniperPenetratedRound_ammo", "Sniper Ammo")
|
||||
|
||||
generatefonts()
|
||||
function ArcCW_Regen(full)
|
||||
if full then
|
||||
generatefonts()
|
||||
ScreenScale_Cache = {}
|
||||
ScreenScale_CacheC2 = {}
|
||||
end
|
||||
if IsValid(ArcCW.InvHUD) then
|
||||
ArcCW.InvHUD:Clear()
|
||||
ArcCW.InvHUD:Remove()
|
||||
end
|
||||
end
|
||||
|
||||
--cvars.AddChangeCallback("arccw_dev_cust2beta", function() ArcCW_Regen(true) end)
|
||||
cvars.AddChangeCallback("arccw_hud_deadzone_x", function() ArcCW_Regen(true) end)
|
||||
cvars.AddChangeCallback("arccw_hud_deadzone_y", function() ArcCW_Regen(true) end)
|
||||
cvars.AddChangeCallback("arccw_hud_size", function() ArcCW_Regen(true) end)
|
||||
cvars.AddChangeCallback("arccw_font", function() ArcCW_Regen(true) end)
|
||||
hook.Add( "OnScreenSizeChanged", "ArcCW_Regen", function() ArcCW_Regen(true) end)
|
||||
|
||||
-- surface.CreateFont( "ArcCW_12", {
|
||||
-- font = font,
|
||||
-- size = ScreenScale(12),
|
||||
-- weight = 0,
|
||||
-- antialias = true,
|
||||
-- } )
|
||||
|
||||
-- surface.CreateFont( "ArcCW_12_Glow", {
|
||||
-- font = font,
|
||||
-- size = ScreenScale(12),
|
||||
-- weight = 0,
|
||||
-- antialias = true,
|
||||
-- blursize = 8,
|
||||
-- } )
|
||||
|
||||
-- surface.CreateFont( "ArcCW_16", {
|
||||
-- font = font,
|
||||
-- size = ScreenScale(16),
|
||||
-- weight = 0,
|
||||
-- antialias = true,
|
||||
-- } )
|
||||
|
||||
-- surface.CreateFont( "ArcCW_16_Glow", {
|
||||
-- font = font,
|
||||
-- size = ScreenScale(16),
|
||||
-- weight = 0,
|
||||
-- antialias = true,
|
||||
-- blursize = 8,
|
||||
-- } )
|
||||
|
||||
-- surface.CreateFont( "ArcCW_26", {
|
||||
-- font = font,
|
||||
-- size = ScreenScale(26),
|
||||
-- weight = 0,
|
||||
-- antialias = true,
|
||||
-- } )
|
||||
|
||||
-- surface.CreateFont( "ArcCW_26_Glow", {
|
||||
-- font = font,
|
||||
-- size = ScreenScale(26),
|
||||
-- weight = 0,
|
||||
-- antialias = true,
|
||||
-- blursize = 8,
|
||||
-- } )
|
||||
Reference in New Issue
Block a user