diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-08-07 18:22:29 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-08-07 18:22:29 -0400 |
| commit | daa59a7835c350a09dcb207c714acf57828137f3 (patch) | |
| tree | ae2c00da0e546447ca17a9c5d8492310e5e93f27 /lua/entities/info_towniespawn/cl_init.lua | |
| download | artery_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.lua | 109 |
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) |
