summaryrefslogtreecommitdiff
path: root/lua/autorun/gcompute_plugin.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-08-07 18:22:29 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2017-08-07 18:22:29 -0400
commitdaa59a7835c350a09dcb207c714acf57828137f3 (patch)
treeae2c00da0e546447ca17a9c5d8492310e5e93f27 /lua/autorun/gcompute_plugin.lua
downloadartery_editor-daa59a7835c350a09dcb207c714acf57828137f3.tar.gz
artery_editor-daa59a7835c350a09dcb207c714acf57828137f3.tar.bz2
artery_editor-daa59a7835c350a09dcb207c714acf57828137f3.zip
Inital Commit
Diffstat (limited to 'lua/autorun/gcompute_plugin.lua')
-rw-r--r--lua/autorun/gcompute_plugin.lua130
1 files changed, 130 insertions, 0 deletions
diff --git a/lua/autorun/gcompute_plugin.lua b/lua/autorun/gcompute_plugin.lua
new file mode 100644
index 0000000..02d0e6e
--- /dev/null
+++ b/lua/autorun/gcompute_plugin.lua
@@ -0,0 +1,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