summaryrefslogtreecommitdiff
path: root/lua/entities/info_towniespawn/cl_init.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-08-07 18:22:29 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2017-08-07 18:22:29 -0400
commitdaa59a7835c350a09dcb207c714acf57828137f3 (patch)
treeae2c00da0e546447ca17a9c5d8492310e5e93f27 /lua/entities/info_towniespawn/cl_init.lua
downloadartery_editor-daa59a7835c350a09dcb207c714acf57828137f3.tar.gz
artery_editor-daa59a7835c350a09dcb207c714acf57828137f3.tar.bz2
artery_editor-daa59a7835c350a09dcb207c714acf57828137f3.zip
Inital Commit
Diffstat (limited to 'lua/entities/info_towniespawn/cl_init.lua')
-rw-r--r--lua/entities/info_towniespawn/cl_init.lua109
1 files changed, 109 insertions, 0 deletions
diff --git a/lua/entities/info_towniespawn/cl_init.lua b/lua/entities/info_towniespawn/cl_init.lua
new file mode 100644
index 0000000..178160c
--- /dev/null
+++ b/lua/entities/info_towniespawn/cl_init.lua
@@ -0,0 +1,109 @@
+if engine.ActiveGamemode() ~= "sandbox" then return end
+
+include('shared.lua')
+
+function ENT:Draw()
+ --self:DrawModel() -- Draws Model Client Side
+end
+
+function ENT:Hint()
+ AddWorldTip( self:EntIndex(), "Spawnpoint", 0.5, self:GetPos(), self )
+end
+
+local navnodes = {}
+local selectors = {}
+
+local function sync_navnode_table(who)
+ print("Synching navnodes, table is")
+ PrintTable(navnodes)
+ net.Start("edit_townie_navchange")
+ net.WriteEntity(who)
+ net.WriteTable(navnodes)
+ net.SendToServer()
+end
+
+local function add_nav_item(layout,name,elist,who)
+ print("Adding nav item",layout,name,elist)
+ local holder = vgui.Create("DPanel",layout)
+
+ local selector = vgui.Create("DComboBox",holder)
+ selector.num = #navnodes + 1
+ print("adding the ", selector.num, "selector")
+ selectors[selector.num] = selector
+ selector:Dock(FILL)
+ for k,v in pairs(elist) do
+ print("Adding option",v)
+ selector:AddChoice(v)
+ end
+ if name ~= nil then
+ selector:SetValue(name)
+ navnodes[#navnodes+1] = name
+ end
+
+ selector:SetWidth(150)
+
+ selector.OnSelect = function(self,index,value)
+ print(value,"selected","on",selector.num)
+ navnodes[selector.num] = value
+ sync_navnode_table(who)
+ end
+
+ local delete = vgui.Create("DButton",holder)
+ delete:Dock(RIGHT)
+ delete:SetText("-")
+ delete.DoClick = function(self)
+ for i = selector.num,#navnodes do
+ navnodes[i] = navnodes[i+1]
+ selectors[i] = selectors[i+1]
+ if IsValid(selectors[i]) then
+ selectors[i].num = selectors[i].num - 1
+ end
+ end
+ holder:Remove()
+ sync_navnode_table(who)
+ end
+
+ layout:Add(holder)
+end
+
+net.Receive("edit_townie_use",function()
+ print("I want to make the edit panel for a townie")
+ navnodes = {}
+ local who = net.ReadEntity()
+ local tbl = net.ReadTable() --Current nav nodes for this townie
+ local posi = net.ReadTable() --A list of all nav nodes in the map
+ local editorframe = vgui.Create( "DFrame" )
+ editorframe:SetPos( 100, 100 )
+ editorframe:SetSize( 300, 200 )
+ editorframe:SetTitle( "Edit" .. tostring(who) )
+ editorframe:SetDraggable( true )
+ editorframe:MakePopup()
+
+ local editor = vgui.Create("DPanel",editorframe)
+ editor:Dock(FILL)
+
+ local layout = vgui.Create( "DListLayout", editor )
+ layout:Dock(FILL)
+
+ print("Already setup navnodes:",tbl)
+ PrintTable(tbl)
+
+ for k,v in pairs(tbl) do
+ print("adding",layout,v,slist)
+ add_nav_item(layout,v,posi,who)
+ end
+
+ print("After creation, navnodes are")
+ PrintTable(navnodes)
+
+ local addbutton = vgui.Create("DButton",layout)
+ addbutton:Dock(BOTTOM)
+ addbutton:SetText("+")
+ addbutton.DoClick = function()
+ add_nav_item(layout,nil,posi,who)
+ end
+
+ layout:SetSize( 100, 100 )
+ layout:SetPos( 20, 50 )
+
+end)