This commit is contained in:
lifestorm
2024-08-04 23:54:45 +03:00
parent 0e770b2b49
commit df294d03aa
7526 changed files with 4011945 additions and 15 deletions

View File

@@ -0,0 +1,226 @@
--[[
| 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 gmod_drawhelp = CreateClientConVar( "gmod_drawhelp", "1", true, false, "Should the tool HUD be displayed when the tool gun is active?" )
local gmod_toolmode = CreateClientConVar( "gmod_toolmode", "rope", true, true, "Currently selected tool mode for the Tool Gun." )
CreateClientConVar( "gmod_drawtooleffects", "1", true, false, "Should tools draw certain UI elements or effects? (Will not work for all tools)" )
cvars.AddChangeCallback( "gmod_toolmode", function( name, old, new )
if ( old == new ) then return end
spawnmenu.ActivateTool( new, true )
end, "gmod_toolmode_panel" )
include( "shared.lua" )
include( "cl_viewscreen.lua" )
SWEP.Slot = 5
SWEP.SlotPos = 6
SWEP.DrawAmmo = false
SWEP.DrawCrosshair = true
SWEP.WepSelectIcon = surface.GetTextureID( "vgui/gmod_tool" )
SWEP.Gradient = surface.GetTextureID( "gui/gradient" )
SWEP.InfoIcon = surface.GetTextureID( "gui/info" )
SWEP.ToolNameHeight = 0
SWEP.InfoBoxHeight = 0
surface.CreateFont( "GModToolName", {
font = "Roboto Bk",
size = 80,
weight = 1000
} )
surface.CreateFont( "GModToolSubtitle", {
font = "Roboto Bk",
size = 24,
weight = 1000
} )
surface.CreateFont( "GModToolHelp", {
font = "Roboto Bk",
size = 17,
weight = 1000
} )
--[[---------------------------------------------------------
Draws the help on the HUD (disabled if gmod_drawhelp is 0)
-----------------------------------------------------------]]
function SWEP:DrawHUD()
local mode = gmod_toolmode:GetString()
local toolObject = self:GetToolObject()
-- Don't draw help for a nonexistant tool!
if ( !toolObject ) then return end
toolObject:DrawHUD()
if ( !gmod_drawhelp:GetBool() ) then return end
-- This could probably all suck less than it already does
local x, y = 50, 40
local w, h = 0, 0
local TextTable = {}
local QuadTable = {}
QuadTable.texture = self.Gradient
QuadTable.color = Color( 10, 10, 10, 180 )
QuadTable.x = 0
QuadTable.y = y - 8
QuadTable.w = 600
QuadTable.h = self.ToolNameHeight - ( y - 8 )
draw.TexturedQuad( QuadTable )
TextTable.font = "GModToolName"
TextTable.color = Color( 240, 240, 240, 255 )
TextTable.pos = { x, y }
TextTable.text = "#tool." .. mode .. ".name"
w, h = draw.TextShadow( TextTable, 2 )
y = y + h
TextTable.font = "GModToolSubtitle"
TextTable.pos = { x, y }
TextTable.text = "#tool." .. mode .. ".desc"
w, h = draw.TextShadow( TextTable, 1 )
y = y + h + 8
self.ToolNameHeight = y
QuadTable.y = y
QuadTable.h = self.InfoBoxHeight
local alpha = math.Clamp( 255 + ( toolObject.LastMessage - CurTime() ) * 800, 10, 255 )
QuadTable.color = Color( alpha, alpha, alpha, 230 )
draw.TexturedQuad( QuadTable )
y = y + 4
TextTable.font = "GModToolHelp"
if ( !toolObject.Information ) then
TextTable.pos = { x + self.InfoBoxHeight, y }
TextTable.text = toolObject:GetHelpText()
w, h = draw.TextShadow( TextTable, 1 )
surface.SetDrawColor( 255, 255, 255, 255 )
surface.SetTexture( self.InfoIcon )
surface.DrawTexturedRect( x + 1, y + 1, h - 3, h - 3 )
self.InfoBoxHeight = h + 8
return
end
local h2 = 0
for _, v in pairs( toolObject.Information ) do
if ( isstring( v ) ) then v = { name = v } end
local name = v.name
if ( !name ) then continue end
if ( v.stage && v.stage != self:GetStage() ) then continue end
if ( v.op && v.op != toolObject:GetOperation() ) then continue end
local txt = "#tool." .. GetConVarString( "gmod_toolmode" ) .. "." .. name
if ( name == "info" ) then txt = toolObject:GetHelpText() end
TextTable.text = txt
TextTable.pos = { x + 21, y + h2 }
w, h = draw.TextShadow( TextTable, 1 )
local icon1 = v.icon
local icon2 = v.icon2
if ( !icon1 ) then
if ( string.StartsWith( name, "info" ) ) then icon1 = "gui/info" end
if ( string.StartsWith( name, "left" ) ) then icon1 = "gui/lmb.png" end
if ( string.StartsWith( name, "right" ) ) then icon1 = "gui/rmb.png" end
if ( string.StartsWith( name, "reload" ) ) then icon1 = "gui/r.png" end
if ( string.StartsWith( name, "use" ) ) then icon1 = "gui/e.png" end
end
if ( !icon2 && !string.StartsWith( name, "use" ) && string.EndsWith( name, "use" ) ) then icon2 = "gui/e.png" end
self.Icons = self.Icons or {}
if ( icon1 && !self.Icons[ icon1 ] ) then self.Icons[ icon1 ] = Material( icon1 ) end
if ( icon2 && !self.Icons[ icon2 ] ) then self.Icons[ icon2 ] = Material( icon2 ) end
if ( icon1 && self.Icons[ icon1 ] && !self.Icons[ icon1 ]:IsError() ) then
surface.SetDrawColor( 255, 255, 255, 255 )
surface.SetMaterial( self.Icons[ icon1 ] )
surface.DrawTexturedRect( x, y + h2, 16, 16 )
end
if ( icon2 && self.Icons[ icon2 ] && !self.Icons[ icon2 ]:IsError() ) then
surface.SetDrawColor( 255, 255, 255, 255 )
surface.SetMaterial( self.Icons[ icon2 ] )
surface.DrawTexturedRect( x - 25, y + h2, 16, 16 )
draw.SimpleText( "+", "default", x - 8, y + h2 + 2, color_white )
end
h2 = h2 + h
end
self.InfoBoxHeight = h2 + 8
end
function SWEP:SetStage( ... )
if ( !self:GetToolObject() ) then return end
return self:GetToolObject():SetStage( ... )
end
function SWEP:GetStage( ... )
if ( !self:GetToolObject() ) then return end
return self:GetToolObject():GetStage( ... )
end
function SWEP:ClearObjects( ... )
if ( !self:GetToolObject() ) then return end
self:GetToolObject():ClearObjects( ... )
end
function SWEP:StartGhostEntities( ... )
if ( !self:GetToolObject() ) then return end
self:GetToolObject():StartGhostEntities( ... )
end
function SWEP:PrintWeaponInfo( x, y, alpha )
end
function SWEP:FreezeMovement()
if ( !self:GetToolObject() ) then return false end
return self:GetToolObject():FreezeMovement()
end
function SWEP:OnReloaded()
-- TODO: Reload the tool control panels
-- controlpanel.Clear()
end