112 lines
3.2 KiB
Lua
112 lines
3.2 KiB
Lua
WireToolSetup.setCategory( "Visuals/Indicators" )
|
|
WireToolSetup.open( "7seg", "7 Segment Display", "gmod_wire_indicator", nil, "7 Segment Displays" )
|
|
|
|
TOOL.GhostAngle = Angle(90, 0, 0)
|
|
TOOL.GhostMin = "x"
|
|
|
|
if CLIENT then
|
|
language.Add( "tool.wire_7seg.name", "7-Segment Display Tool" )
|
|
language.Add( "tool.wire_7seg.desc", "Spawns 7 indicators for numeric display with the wire system." )
|
|
language.Add( "ToolWire7Seg_a_colour", "Off Colour:" )
|
|
language.Add( "ToolWire7Seg_b_colour", "On Colour:" )
|
|
language.Add( "ToolWire7SegTool_worldweld", "Allow weld to world" )
|
|
language.Add( "undone_wire7seg", "Undone 7-Segment Display" )
|
|
TOOL.Information = { { name = "left", text = "Create/Update " .. TOOL.Name } }
|
|
|
|
WireToolSetup.setToolMenuIcon( "icon16/lightbulb_add.png" )
|
|
end
|
|
|
|
WireToolSetup.BaseLang()
|
|
|
|
-- define MaxLimitName cause this tool just uses gmod_wire_indicators
|
|
TOOL.MaxLimitName = "wire_indicators"
|
|
|
|
if SERVER then
|
|
function TOOL:GetConVars()
|
|
return 0,
|
|
math.Clamp(self:GetClientNumber("ar"),0,255),
|
|
math.Clamp(self:GetClientNumber("ag"),0,255),
|
|
math.Clamp(self:GetClientNumber("ab"),0,255),
|
|
math.Clamp(self:GetClientNumber("aa"),0,255),
|
|
1,
|
|
math.Clamp(self:GetClientNumber("br"),0,255),
|
|
math.Clamp(self:GetClientNumber("bg"),0,255),
|
|
math.Clamp(self:GetClientNumber("bb"),0,255),
|
|
math.Clamp(self:GetClientNumber("ba"),0,255)
|
|
end
|
|
|
|
function TOOL:MakeEnt( ply, model, Ang, trace )
|
|
return MakeWire7Seg( ply, trace.HitPos, Ang, model, self:GetConVars() )
|
|
end
|
|
end
|
|
|
|
TOOL.ClientConVar = {
|
|
model = "models/segment.mdl",
|
|
ar = 70, --default: dark grey off, full red on
|
|
ag = 70,
|
|
ab = 70,
|
|
aa = 255,
|
|
br = 255,
|
|
bg = 0,
|
|
bb = 0,
|
|
ba = 255,
|
|
worldweld = 1,
|
|
}
|
|
|
|
function TOOL:PostMake_SetPos() end
|
|
|
|
function TOOL:LeftClick_PostMake( wire_indicators, ply, trace )
|
|
if not istable(wire_indicators) then return end
|
|
local worldweld = self:GetClientNumber("worldweld") == 1
|
|
undo.Create("Wire7Seg")
|
|
for x=1, 7 do
|
|
--make welds
|
|
local const = WireLib.Weld(wire_indicators[x], trace.Entity, trace.PhysicsBone, true, false, worldweld)
|
|
undo.AddEntity( wire_indicators[x] )
|
|
undo.AddEntity( const )
|
|
ply:AddCleanup( "wire_indicators", wire_indicators[x] )
|
|
ply:AddCleanup( "wire_indicators", const)
|
|
end
|
|
undo.SetPlayer( ply )
|
|
undo.Finish()
|
|
return true
|
|
end
|
|
|
|
function TOOL.BuildCPanel(panel)
|
|
WireToolHelpers.MakePresetControl(panel, "wire_7seg")
|
|
|
|
panel:AddControl("Color", {
|
|
Label = "#ToolWire7Seg_a_colour",
|
|
Red = "wire_7seg_ar",
|
|
Green = "wire_7seg_ag",
|
|
Blue = "wire_7seg_ab",
|
|
Alpha = "wire_7seg_aa",
|
|
ShowAlpha = "1",
|
|
ShowHSV = "1",
|
|
ShowRGB = "1",
|
|
Multiplier = "255"
|
|
})
|
|
|
|
panel:AddControl("Color", {
|
|
Label = "#ToolWire7Seg_b_colour",
|
|
Red = "wire_7seg_br",
|
|
Green = "wire_7seg_bg",
|
|
Blue = "wire_7seg_bb",
|
|
Alpha = "wire_7seg_ba",
|
|
ShowAlpha = "1",
|
|
ShowHSV = "1",
|
|
ShowRGB = "1",
|
|
Multiplier = "255"
|
|
})
|
|
|
|
panel:AddControl("ComboBox", {
|
|
Label = "#wire_model",
|
|
Options = {
|
|
["Huge 7-seg bar"] = { wire_7seg_model = "models/segment2.mdl" },
|
|
["Normal 7-seg bar"] = { wire_7seg_model = "models/segment.mdl" },
|
|
["Small 7-seg bar"] = { wire_7seg_model = "models/segment3.mdl" },
|
|
}
|
|
})
|
|
|
|
panel:CheckBox("#ToolWire7SegTool_worldweld", "wire_7seg_worldweld")
|
|
end
|