mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
Upload
This commit is contained in:
103
gamemodes/sandbox/gamemode/cl_worldtips.lua
Normal file
103
gamemodes/sandbox/gamemode/cl_worldtips.lua
Normal file
@@ -0,0 +1,103 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
|
||||
|
||||
surface.CreateFont( "GModWorldtip",
|
||||
{
|
||||
font = "Helvetica",
|
||||
size = 20,
|
||||
weight = 700
|
||||
})
|
||||
|
||||
local cl_drawworldtooltips = CreateConVar( "cl_drawworldtooltips", "1", { FCVAR_ARCHIVE }, "Whether tooltips should draw when looking at certain Sandbox entities." )
|
||||
local WorldTip = nil
|
||||
|
||||
local TipColor = Color( 250, 250, 200, 255 )
|
||||
|
||||
--
|
||||
-- Adds a hint to the queue
|
||||
--
|
||||
function AddWorldTip( unused1, text, unused2, pos, ent )
|
||||
|
||||
WorldTip = {}
|
||||
|
||||
WorldTip.dietime = SysTime() + 0.05
|
||||
WorldTip.text = text
|
||||
WorldTip.pos = pos
|
||||
WorldTip.ent = ent
|
||||
|
||||
end
|
||||
|
||||
|
||||
local function DrawWorldTip( tip )
|
||||
|
||||
if ( IsValid( tip.ent ) ) then
|
||||
tip.pos = tip.ent:GetPos()
|
||||
end
|
||||
|
||||
local pos = tip.pos:ToScreen()
|
||||
|
||||
local black = Color( 0, 0, 0, 255 )
|
||||
local tipcol = Color( TipColor.r, TipColor.g, TipColor.b, 255 )
|
||||
|
||||
local x = 0
|
||||
local y = 0
|
||||
local padding = 10
|
||||
local offset = 50
|
||||
|
||||
surface.SetFont( "GModWorldtip" )
|
||||
local w, h = surface.GetTextSize( tip.text )
|
||||
|
||||
x = pos.x - w
|
||||
y = pos.y - h
|
||||
|
||||
x = x - offset
|
||||
y = y - offset
|
||||
|
||||
draw.RoundedBox( 8, x-padding-2, y-padding-2, w+padding*2+4, h+padding*2+4, black )
|
||||
|
||||
|
||||
local verts = {}
|
||||
verts[1] = { x=x+w/1.5-2, y=y+h+2 }
|
||||
verts[2] = { x=x+w+2, y=y+h/2-1 }
|
||||
verts[3] = { x=pos.x-offset/2+2, y=pos.y-offset/2+2 }
|
||||
|
||||
draw.NoTexture()
|
||||
surface.SetDrawColor( 0, 0, 0, tipcol.a )
|
||||
surface.DrawPoly( verts )
|
||||
|
||||
|
||||
draw.RoundedBox( 8, x-padding, y-padding, w+padding*2, h+padding*2, tipcol )
|
||||
|
||||
local verts = {}
|
||||
verts[1] = { x=x+w/1.5, y=y+h }
|
||||
verts[2] = { x=x+w, y=y+h/2 }
|
||||
verts[3] = { x=pos.x-offset/2, y=pos.y-offset/2 }
|
||||
|
||||
draw.NoTexture()
|
||||
surface.SetDrawColor( tipcol.r, tipcol.g, tipcol.b, tipcol.a )
|
||||
surface.DrawPoly( verts )
|
||||
|
||||
|
||||
draw.DrawText( tip.text, "GModWorldtip", x + w/2, y, black, TEXT_ALIGN_CENTER )
|
||||
|
||||
end
|
||||
|
||||
|
||||
function GM:PaintWorldTips()
|
||||
|
||||
if ( !cl_drawworldtooltips:GetBool() ) then return end
|
||||
|
||||
if ( WorldTip && WorldTip.dietime > SysTime() ) then
|
||||
DrawWorldTip( WorldTip )
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user