Files
wnsrc/lua/stormfox2/framework/sv_2dskybox.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

87 lines
2.6 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/
--]]
StormFox2.Setting.AddSV("darken_2dskybox", false, nil, "Effect")
local convar = GetConVar("sv_skyname")
local mat_2dBox = "skybox/" .. convar:GetString()
local last_f = 1
local function OnChange( str )
StormFox2.Map.Set2DSkyBoxDarkness( last_f )
end
cvars.RemoveChangeCallback("sv_skyname", "sf_skynamehook")
cvars.AddChangeCallback( "sv_skyname", OnChange, "sf_skynamehook" )
local t = {"bk", "dn", "ft", "lf", "rt", "up"}
---Sets the 2D skybox darkness. Mostly used for internal stuff.
---@param f number
---@param bRemember boolean
---@param bDark boolean
function StormFox2.Map.Set2DSkyBoxDarkness( f, bRemember, bDark )
if bRemember then
last_f = f
end
local sky = convar:GetString()
if sky == "painted" then return end
if bDark == nil then
bDark = StormFox2.Setting.GetCache("darken_2dskybox", false)
end
if not StormFox2.Setting.GetCache("enable_skybox", true) or not StormFox2.Setting.SFEnabled() or not bDark then
f = 1
end
mat_2dBox = "skybox/" .. sky
local vec = Vector( f, f, f)
for k,v in ipairs( t ) do
local m = Material(mat_2dBox .. v)
if m:IsError() then continue end
m:SetVector("$color", vec)
m:SetInt("$nofog", 1)
m:SetInt("$ignorez", 1)
end
end
StormFox2.Setting.Callback("darken_2dskybox", function(vVar)
StormFox2.Map.Set2DSkyBoxDarkness( last_f, false, vVar )
end, "darken_2dskybox")
local function SkyThink(b, str)
if not StormFox2.Setting.GetCache("enable_skybox", true) or not StormFox2.Setting.SFEnabled() then return end
if b == nil then
b = StormFox2.Setting.GetCache("use_2dskybox", false)
end
if not b then
return RunConsoleCommand("sv_skyname", "painted")
end
local s = str or StormFox2.Setting.GetCache("overwrite_2dskybox", "")
if s == "" then
local lS = 0
if StormFox2.Sky and StormFox2.Sky.GetLastStamp then -- Something happen
lS = StormFox2.Sky.GetLastStamp()
end
local sky_options = StormFox2.Weather.GetCurrent():Get("skyBox", lS)
s = (table.Random(sky_options))
else
StormFox2.Map.Set2DSkyBoxDarkness( last_f )
end
RunConsoleCommand("sv_skyname", s)
end
StormFox2.Setting.Callback("use_2dskybox",SkyThink,"2dskybox_enable")
StormFox2.Setting.Callback("overwrite_2dskybox",function(str) SkyThink(nil, str) end,"2dskybox_enable2")
hook.Add("StormFox2.weather.postchange", "StormFox2.weather.set2dsky", function( _ )
if not StormFox2.Setting.GetCache("use_2dskybox", false) then return end
SkyThink()
end)