summaryrefslogtreecommitdiff
path: root/lua/entities/info_towniespawn/cl_init.lua
blob: 178160cb845aff48fe5d7039a74ca9dfc4887e6d (plain)
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)