From daa59a7835c350a09dcb207c714acf57828137f3 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Mon, 7 Aug 2017 18:22:29 -0400 Subject: Inital Commit --- lua/autorun/gcompute_plugin.lua | 130 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 lua/autorun/gcompute_plugin.lua (limited to 'lua/autorun/gcompute_plugin.lua') 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 -- cgit v1.2.3-70-g09d2