mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
290 lines
7.5 KiB
Lua
290 lines
7.5 KiB
Lua
--[[
|
|
| 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,
|
|
-- } ) |