disable dynamic kill icons for all players for now
reason: too much screen flickering caused by generating icons on-the-fly even with all weapon and attachment models cached it still happens
This commit is contained in:
parent
f81c72f9f0
commit
b5ee0af2c4
85
arc9_no_dynamic_killicons/lua/arc9/client/cl_killicons.lua
Normal file
85
arc9_no_dynamic_killicons/lua/arc9/client/cl_killicons.lua
Normal file
@ -0,0 +1,85 @@
|
||||
--[[
|
||||
ARC9OLDKilliconDraw = ARC9OLDKilliconDraw or killicon.Render or killicon.Draw
|
||||
local killicons_cachednames = {}
|
||||
local killicons_cachedicons = {}
|
||||
local killicons_cachedtimes = {}
|
||||
local killiconmat = Material("arc9/arc9_logo.png", "mips smooth")
|
||||
|
||||
local arc9_killfeed_enable = GetConVar("arc9_killfeed_enable")
|
||||
local arc9_killfeed_dynamic = GetConVar("arc9_killfeed_dynamic")
|
||||
ARC9NEWKillicondraw = function(x, y, name, alpha)
|
||||
if !arc9_killfeed_enable:GetBool() then
|
||||
return ARC9OLDKilliconDraw(x, y, name, alpha)
|
||||
end
|
||||
|
||||
local wpn = weapons.Get(name)
|
||||
|
||||
if wpn and wpn.ARC9 and wpn.NoDynamicKillIcon then
|
||||
return ARC9OLDKilliconDraw(x, y, name, alpha)
|
||||
end
|
||||
|
||||
if killicons_cachednames[name] == true then
|
||||
local w, h = 96, 96
|
||||
x = x - (killicon.Render and 25 or 48) -- killiocn render is only on x64 and they changed offsets or something
|
||||
y = y - (killicon.Render and 25 or 34)
|
||||
|
||||
cam.Start2D()
|
||||
|
||||
local selecticon = killicons_cachedicons[name]
|
||||
|
||||
if arc9_killfeed_dynamic:GetBool() and (!killicons_cachedtimes[name] or (killicons_cachedtimes[name] and killicons_cachedtimes[name] < CurTime())) then -- dynamic
|
||||
killicons_cachedtimes[name] = CurTime() + 5
|
||||
killicons_cachedicons[name] = nil
|
||||
-- print("RESET")
|
||||
end
|
||||
|
||||
if !selecticon then -- not cached
|
||||
local filename = ARC9.PresetPath .. name .. "_icon." .. ARC9.PresetIconFormat
|
||||
-- local loadedmat = Material("data/" .. filename, "smooth")
|
||||
local loadedmat
|
||||
|
||||
-- if !loadedmat or loadedmat:IsError() then -- there is no fucking icon in data folder!!!!
|
||||
local found
|
||||
|
||||
if game.SinglePlayer() then -- trying find in your hands
|
||||
local probablythegun = LocalPlayer():GetActiveWeapon()
|
||||
|
||||
if IsValid(probablythegun) and probablythegun:GetClass() == name then
|
||||
loadedmat = probablythegun:DoIconCapture()
|
||||
found = true
|
||||
end
|
||||
end
|
||||
|
||||
if !found then -- nah, bruteforcing all ents until we find gun with same classname
|
||||
for _, v in ipairs(ents.GetAll()) do
|
||||
if v:GetClass() == name then
|
||||
loadedmat = v:DoIconCapture()
|
||||
end
|
||||
end
|
||||
end
|
||||
-- end
|
||||
|
||||
loadedmat = Material("data/" .. filename, "smooth")
|
||||
|
||||
killicons_cachedicons[name] = loadedmat
|
||||
selecticon = loadedmat
|
||||
end
|
||||
|
||||
surface.SetDrawColor(255, 255, 255, alpha)
|
||||
surface.SetMaterial(selecticon or killiconmat)
|
||||
surface.DrawTexturedRectUV( x, y, w, h, 1, 0, 0, 1 ) -- fliping
|
||||
cam.End2D()
|
||||
else
|
||||
if killicons_cachednames[name] == nil then -- not cached yet, checking for arc9
|
||||
killicons_cachednames[name] = (weapons.Get(name) and weapons.Get(name).ARC9) or false -- weapons.get() will return nil for any hl2 base gun
|
||||
else -- we know it is totally not arc9 gun
|
||||
return ARC9OLDKilliconDraw(x, y, name, alpha)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
timer.Simple(5, function() -- to make Autoicons addon not override our stuff
|
||||
killicon.Render = ARC9NEWKillicondraw
|
||||
killicon.Draw = ARC9NEWKillicondraw
|
||||
end)
|
||||
]]--
|
Loading…
Reference in New Issue
Block a user