Skip to content

Commit 3f55cb1

Browse files
committed
Add devtools interface
1 parent 10c67de commit 3f55cb1

3 files changed

Lines changed: 162 additions & 0 deletions

File tree

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
local ACF_DevTools = ACF_DevTools
2+
local EventViewer = ACF_DevTools.EventViewer
3+
4+
do
5+
local Created = EventViewer.DefineEvent("CFW.Contraption.Created")
6+
Created.Icon = "icon16/add.png"
7+
8+
function Created.BuildNode(Node)
9+
10+
end
11+
end
12+
13+
local function RenderEntity3D(Entity)
14+
if not IsValid(Entity) then return end
15+
16+
local pulse = Lerp((math.sin(CurTime() * 7) + 1) / 2, 0.33, 1)
17+
18+
render.SuppressEngineLighting(true)
19+
render.ModelMaterialOverride(Material("models/debug/debugwhite"))
20+
render.SetColorModulation(pulse, pulse, pulse)
21+
22+
render.DepthRange(0, 0)
23+
Entity:DrawModel()
24+
render.DepthRange(0, 1)
25+
26+
render.SetColorModulation(1, 1, 1)
27+
render.ModelMaterialOverride(nil)
28+
render.SuppressEngineLighting(false)
29+
end
30+
31+
do
32+
local EntityAdded = EventViewer.DefineEvent("CFW.Contraption.EntityAdded")
33+
EntityAdded.Icon = "icon16/basket_put.png"
34+
35+
function EntityAdded.BuildNode(Node, Entity)
36+
EventViewer.AddKeyValueNode(Node, "Entity", Entity, "icon16/brick.png")
37+
end
38+
EntityAdded.Render3D = RenderEntity3D
39+
end
40+
41+
do
42+
local EntityRemoved = EventViewer.DefineEvent("CFW.Contraption.EntityRemoved")
43+
EntityRemoved.Icon = "icon16/basket_remove.png"
44+
45+
function EntityRemoved.BuildNode(Node, Entity)
46+
EventViewer.AddKeyValueNode(Node, "Entity", Entity, "icon16/brick.png")
47+
end
48+
EntityRemoved.Render3D = RenderEntity3D
49+
end
50+
51+
do
52+
local Merged = EventViewer.DefineEvent("CFW.Contraption.Merged")
53+
Merged.Icon = "icon16/arrow_merge.png"
54+
55+
function Merged.BuildNode(Node, Other)
56+
EventViewer.AddKeyValueNode(Node, "Merged Into", Other, "icon16/bricks.png")
57+
end
58+
end
59+
60+
do
61+
local Split = EventViewer.DefineEvent("CFW.Contraption.Split")
62+
Split.Icon = "icon16/arrow_divide.png"
63+
64+
function Split.BuildNode(Node, Other)
65+
EventViewer.AddKeyValueNode(Node, "Split Into", Other, "icon16/bricks.png")
66+
end
67+
end
68+
69+
do
70+
local Removed = EventViewer.DefineEvent("CFW.Contraption.Removed")
71+
Removed.Icon = "icon16/cancel.png"
72+
73+
function Removed.BuildNode(Node)
74+
75+
end
76+
end
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
-- Generic interface for ACF-3 Devtools
2+
-- https://github.com/ACF-Team/ACF-3-DevTools
3+
local AddonName = "CFW"
4+
local Addon = _G[AddonName]
5+
Addon.EventViewer = Addon.EventViewer or {}
6+
Addon.EntityKeyValues = Addon.EntityKeyValues or {}
7+
8+
function Addon.EventViewer.Enabled() return false end
9+
function Addon.EntityKeyValues.Enabled() return false end
10+
11+
hook.Add("Initialize", AddonName .. "_SetupStubForDevTools", function()
12+
table.Empty(Addon.EventViewer)
13+
table.Empty(Addon.EntityKeyValues)
14+
15+
if not ACF_DevTools then
16+
-- NOTHING should run event viewer code unless this is enabled
17+
function Addon.EventViewer.Enabled() return false end
18+
function Addon.EntityKeyValues.Enabled() return false end
19+
-- ^^^ respect this 100%
20+
-- I don't want to maintain a bunch of stubs here.
21+
else
22+
-- This may become a real function sometime in the underlying implementation.
23+
-- For now, this is just an easier way to handle this.
24+
-- I would rename it to Available to be more clear, but I don't want to have to
25+
-- do like, .Available() and .Enabled() in the future...
26+
function Addon.EntityKeyValues.Enabled() return true end
27+
28+
setmetatable(Addon.EventViewer, {__index = ACF_DevTools.EventViewer})
29+
setmetatable(Addon.EntityKeyValues, {__index = ACF_DevTools.EntityKeyValues})
30+
31+
hook.Run(AddonName .. "_ACF3DevToolsInitialized")
32+
end
33+
end)

lua/cfw/devtools_hooks.lua

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
local EventViewer = CFW.EventViewer
2+
3+
local function GetEventViewerName(Contraption) return "Contraption: " .. tostring(Contraption):sub(8) end
4+
local function InitializeHooks(Enabled)
5+
if not Enabled then
6+
hook.Remove("cfw.contraption.created", "CFW_DevtoolsHooks")
7+
hook.Remove("cfw.contraption.entityAdded", "CFW_DevtoolsHooks")
8+
hook.Remove("cfw.contraption.entityRemoved", "CFW_DevtoolsHooks")
9+
hook.Remove("cfw.contraption.merged", "CFW_DevtoolsHooks")
10+
hook.Remove("cfw.contraption.split", "CFW_DevtoolsHooks")
11+
hook.Remove("cfw.contraption.removed", "CFW_DevtoolsHooks")
12+
return
13+
end
14+
15+
hook.Add("cfw.contraption.created", "CFW_DevtoolsHooks", function(self)
16+
if EventViewer.Enabled() then
17+
EventViewer.AppendEvent(GetEventViewerName(self), "CFW.Contraption.Created")
18+
end
19+
end)
20+
21+
hook.Add("cfw.contraption.entityAdded", "CFW_DevtoolsHooks", function(self, ent)
22+
if EventViewer.Enabled() then
23+
EventViewer.AppendEvent(GetEventViewerName(self), "CFW.Contraption.EntityAdded", ent)
24+
end
25+
end)
26+
27+
hook.Add("cfw.contraption.entityRemoved", "CFW_DevtoolsHooks", function(self, ent)
28+
if EventViewer.Enabled() then
29+
EventViewer.AppendEvent(GetEventViewerName(self), "CFW.Contraption.EntityRemoved", ent)
30+
end
31+
end)
32+
33+
hook.Add("cfw.contraption.merged", "CFW_DevtoolsHooks", function(self, mergedInto)
34+
if EventViewer.Enabled() then
35+
EventViewer.AppendEvent(GetEventViewerName(self), "CFW.Contraption.Merged", GetEventViewerName(mergedInto))
36+
end
37+
end)
38+
39+
hook.Add("cfw.contraption.split", "CFW_DevtoolsHooks", function(self, mergedInto)
40+
if EventViewer.Enabled() then
41+
EventViewer.AppendEvent(GetEventViewerName(self), "CFW.Contraption.Split", GetEventViewerName(mergedInto))
42+
end
43+
end)
44+
45+
hook.Add("cfw.contraption.removed", "CFW_DevtoolsHooks", function(self)
46+
if EventViewer.Enabled() then
47+
EventViewer.AppendEvent(GetEventViewerName(self), "CFW.Contraption.Removed")
48+
end
49+
end)
50+
end
51+
52+
hook.Add("ACF3_DevTools_EnableChanged", "CFW_Hook", InitializeHooks)
53+
InitializeHooks(CFW.EventViewer.Enabled())

0 commit comments

Comments
 (0)