1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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)
|