summaryrefslogtreecommitdiff
path: root/lua/autorun/gcompute_plugin.lua
blob: 02d0e6e06715231288afd5498b06e1d549460c5f (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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
if SERVER then return end
if engine.ActiveGamemode() ~= "sandbox" then return end
print('Hello from the gcompute plugin!')

local self, info = GCompute.IDE.ViewTypes:CreateType ("NavView")
info:SetAutoCreate (true)
info:SetDefaultLocation ("Bottom/Right")
self.Title           = "Nav View"
self.Icon            = "icon16/heart.png"
self.Hideable        = true

local function find_selected_code()
	local i = GCompute.IDE:GetInstance()
	local selectedpanel
	for k,v in pairs(i.ViewManager.ViewsById) do
		if v.CodeEditor ~= nil and v.Container:IsVisible() then
			selectedpanel = v
			break
		end
	end
	print("Found selected panel!")
end

--Returns an array of nav nodes
local function find_nav_nodes()
	
end

--Returns the name of the npc, "???" if undetermined
local function find_name()
	local sp = find_selected_code()
	print("Found sp:",sp)
end

--Create the thing that shows possible nav nodes
function self:ctor (container)
	local editor = vgui.Create("DPanel",editorframe)
	editor:Dock(FILL)
	
	--Edit name
	local namelabel = vgui.Create("DLabel",editor)
	namelabel:SetText("Townie Name:")
	namelabel:Dock(TOP)
	namelabel:SetDark(true)
	local nameentry = vgui.Create("DTextEntry",editor)
	nameentry:Dock(TOP)
	nameentry:SetText(data.Name)
	nameentry:SetUpdateOnType(true)
	nameentry.OnValueChange = function(self,value)
		data.Name = value
	end
	
	--Edit model
	local modellabel = vgui.Create("DLabel",editor)
	modellabel:SetText("Townie Model:")
	modellabel:Dock(TOP)
	modellabel:SetDark(true)
	local modelentry = vgui.Create("DTextEntry",editor)
	modelentry:Dock(TOP)
	modelentry:SetText(data.Model)
	modelentry:SetUpdateOnType(true)
	modelentry.OnValueChange = function(self,value)
		data.Model = value
	end
	
	--Edit navnodes
	local navnodelist = vgui.Create("DListLayout",editor)
	navnodelist:Dock(FILL)
	local allnavents = ents.FindByClass("info_townienode")
	
	local function create_navnode_panel(v)
		local navnodeitm = vgui.Create("DPanel")
		
		local navname = vgui.Create("DComboBox",navnodeitm)
		for i,j in pairs(navnode_info) do
			navname:AddChoice(j.Name)
		end
		navname:SetValue(v)
		navname:Dock(LEFT)
		navname.OnSelect = function(self,index,value)
			data.NavNodes[index] = value
		end
		
		local navdelete = vgui.Create("DButton",navnodeitm)
		navdelete:SetText("-")
		navdelete.DoClick = function()
			print('Tryint to get rid of nav node', v)
			--delete it from the data
			for i,j in pairs(data.NavNodes) do
				if j == v then
					for k = i, #data.NavNodes do
						data.NavNodes[i] = data.NavNodes[i+1]
					end
					break
				end
			end
			--and remove the panel
			navnodeitm:Remove()
		end
		navdelete:Dock(RIGHT)
		
		return navnodeitm
	end
	
	for k,v in pairs(data.NavNodes) do
		local navnodeitm = create_navnode_panel(v)
		navnodelist:Add(navnodeitm)
	end
	local addbutton = vgui.Create("DButton",editor)
	addbutton:SetText("+")
	addbutton.DoClick = function()
		local navnodeitm = create_navnode_panel("select")
		navnodelist:Add(navnodeitm)
	end
	addbutton:Dock(BOTTOM)
end

function self:dtor ()
	if self.HTMLPanel and self.HTMLPanel:IsValid () then
		self.HTMLPanel:Remove ()
	end
	self.HTMLPanel = nil
end

-- Persistance
function self:LoadSession (inBuffer)
end

function self:SaveSession (outBuffer)
end