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
|