From 5e4b759e6b4fd8af9e66f76090ee868368bee467 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sun, 14 Jan 2018 15:38:14 -0500 Subject: Moved art_chest entity into gamemode folder Moved the art_chest entity to use the unusual artery system instead of the default entity system. --- entities/entities/art_chest/cl_init.lua | 62 ------------------------------- entities/entities/art_chest/init.lua | 58 ----------------------------- entities/entities/art_chest/shared.lua | 2 - gamemode/ents/art_chest/cl_art_chest.lua | 64 ++++++++++++++++++++++++++++++++ gamemode/ents/art_chest/sh_art_chest.lua | 11 ++++++ gamemode/ents/art_chest/sv_art_chest.lua | 58 +++++++++++++++++++++++++++++ 6 files changed, 133 insertions(+), 122 deletions(-) delete mode 100644 entities/entities/art_chest/cl_init.lua delete mode 100644 entities/entities/art_chest/init.lua delete mode 100644 entities/entities/art_chest/shared.lua create mode 100644 gamemode/ents/art_chest/cl_art_chest.lua create mode 100644 gamemode/ents/art_chest/sh_art_chest.lua create mode 100644 gamemode/ents/art_chest/sv_art_chest.lua diff --git a/entities/entities/art_chest/cl_init.lua b/entities/entities/art_chest/cl_init.lua deleted file mode 100644 index e7357ea..0000000 --- a/entities/entities/art_chest/cl_init.lua +++ /dev/null @@ -1,62 +0,0 @@ -include("shared.lua") ---local invfuncs = include("../../../gamemode/shared/inventory_common.lua") -local invfuncs = nrequire("inventory/inventory.lua") - -ENT.RenderGroup = RENDERGROUP_BOTH - -function ENT:Initialize() -end - -function ENT:OnRemove() -end - -function ENT:Think() -end - -function ENT:Draw() - - self:DrawModel() -end - -local oldpanel = nil -local namecache = {} - -net.Receive("openchestinv",function(len,ply) - if oldpanel ~= nil then oldpanel:Remove() end - local what = net.ReadEntity() - local chest = invfuncs.DeSerializeBackpack() - ShowInventory() - local dat = {} - dat.redraw = function() - net.Start("requestchestinv") - net.WriteEntity(what) - net.SendToServer() - end - dat.panel = vgui.Create( "DFrame" ) - oldpanel = dat.panel - dat.panel.OnClose = function() - net.Start("closechestinv") - net.WriteEntity(what) - net.SendToServer() - end - table.insert(LocalPlayer().invdisplays,dat) - local width = ScrW() - local height = ScrH() - local invpanel = dat.panel - invpanel:SetPos( width - (width / 4), 0 ) - invpanel:SetSize( width / 4, height ) - if namecache[what] == nil then - net.Start("requestchestname") - net.WriteEntity(what) - net.SendToServer() - invpanel:SetTitle( "Chest" ) - else - invpanel:SetTitle(namecache[what]) - end - invpanel:SetDraggable( true ) - invpanel:MakePopup() - local innerpanel = vgui.Create("DPanel",dat.panel) - innerpanel:Dock(FILL) - innerpanel.Paint = function( self, w, h ) draw.RoundedBox( 4, 0, 0, w, h, Color( 157, 160, 167 ) ) end - invfuncs.DrawBackpackOnDPanel(innerpanel, chest, 1, what) -end) diff --git a/entities/entities/art_chest/init.lua b/entities/entities/art_chest/init.lua deleted file mode 100644 index 60f82c8..0000000 --- a/entities/entities/art_chest/init.lua +++ /dev/null @@ -1,58 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") -local inv = nrequire("inventory/inventory.lua") -local track = nrequire("inventory/sv_invtracker.lua") - ---local invfuncs = include("../../../gamemode/shared/inventory_common.lua") -function ENT:Initialize() - self.Openedby = {} - self:SetModel(self.Model or "models/props_junk/Rock001a.mdl") - self:PhysicsInit(SOLID_VPHYSICS) - self:SetMoveType(MOVETYPE_NONE) - self:SetSolid(SOLID_VPHYSICS) - self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE) - self:SetUseType(SIMPLE_USE) - local phys = self:GetPhysicsObject() - phys:EnableMotion(false) - phys:Sleep() - - self.data = { - inventories = {} - } - - local myinv = inv.CreateInventory(self.InvType or "Shaped Inventory") - myinv.Owner = self - - timer.Simple(0, function() - myinv.id = self:GetCreationID() - self.data.inventories[myinv.id] = myinv - end) --Wait until the entity is initalized - - self.Observers = {} -end - -local uans = {"openchestinv", "closechestinv"} - -for k, v in pairs(uans) do - util.AddNetworkString(v) -end - -net.Receive("closechestinv", function(ln, ply) - local chest = net.ReadEntity() - local obsid = chest.Observers[ply] - chest.data.inventories[chest:GetCreationID()]:RemoveObserver(obsid) - chest.Observers[ply] = nil -end) - ---NOTE:Why is it important to allow a table to this argument? -function ENT:SendInventory(towho) - local observer = track.MakeInventoryObserver(towho, self:GetCreationID()) - local obsid = self.data.inventories[self:GetCreationID()]:AddObserver(observer) - self.Observers[towho] = obsid - track.NotifyPlayerOfInventory(towho, self.data.inventories[self:GetCreationID()]) -end - -function ENT:Use(ply) - self:SendInventory(ply) -end diff --git a/entities/entities/art_chest/shared.lua b/entities/entities/art_chest/shared.lua deleted file mode 100644 index 0038793..0000000 --- a/entities/entities/art_chest/shared.lua +++ /dev/null @@ -1,2 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "base_anim" diff --git a/gamemode/ents/art_chest/cl_art_chest.lua b/gamemode/ents/art_chest/cl_art_chest.lua new file mode 100644 index 0000000..6800810 --- /dev/null +++ b/gamemode/ents/art_chest/cl_art_chest.lua @@ -0,0 +1,64 @@ +local ENT = nrequire("sh_art_chest.lua") +--local invfuncs = include("../../../gamemode/shared/inventory_common.lua") +local invfuncs = nrequire("inventory/inventory.lua") + +ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Initialize() +end + +function ENT:OnRemove() +end + +function ENT:Think() +end + +function ENT:Draw() + + self:DrawModel() +end + +local oldpanel = nil +local namecache = {} + +net.Receive("openchestinv",function(len,ply) + if oldpanel ~= nil then oldpanel:Remove() end + local what = net.ReadEntity() + local chest = invfuncs.DeSerializeBackpack() + ShowInventory() + local dat = {} + dat.redraw = function() + net.Start("requestchestinv") + net.WriteEntity(what) + net.SendToServer() + end + dat.panel = vgui.Create( "DFrame" ) + oldpanel = dat.panel + dat.panel.OnClose = function() + net.Start("closechestinv") + net.WriteEntity(what) + net.SendToServer() + end + table.insert(LocalPlayer().invdisplays,dat) + local width = ScrW() + local height = ScrH() + local invpanel = dat.panel + invpanel:SetPos( width - (width / 4), 0 ) + invpanel:SetSize( width / 4, height ) + if namecache[what] == nil then + net.Start("requestchestname") + net.WriteEntity(what) + net.SendToServer() + invpanel:SetTitle( "Chest" ) + else + invpanel:SetTitle(namecache[what]) + end + invpanel:SetDraggable( true ) + invpanel:MakePopup() + local innerpanel = vgui.Create("DPanel",dat.panel) + innerpanel:Dock(FILL) + innerpanel.Paint = function( self, w, h ) draw.RoundedBox( 4, 0, 0, w, h, Color( 157, 160, 167 ) ) end + invfuncs.DrawBackpackOnDPanel(innerpanel, chest, 1, what) +end) + +scripted_ents.Register(ENT, "art_chest") diff --git a/gamemode/ents/art_chest/sh_art_chest.lua b/gamemode/ents/art_chest/sh_art_chest.lua new file mode 100644 index 0000000..1cfd103 --- /dev/null +++ b/gamemode/ents/art_chest/sh_art_chest.lua @@ -0,0 +1,11 @@ +local ENT = {} + +ENT.Type = "anim" +ENT.Base = "base_anim" + +hook.Add("artery_core_loaded","load_ent_art_chest",function() + local e = scripted_ents.Get("base_anim") + setmetatable(ENT,e) +end) + +return ENT diff --git a/gamemode/ents/art_chest/sv_art_chest.lua b/gamemode/ents/art_chest/sv_art_chest.lua new file mode 100644 index 0000000..2eeea7b --- /dev/null +++ b/gamemode/ents/art_chest/sv_art_chest.lua @@ -0,0 +1,58 @@ +local ENT = nrequire("sh_art_chest.lua") +local inv = nrequire("inventory/inventory.lua") +local track = nrequire("inventory/sv_invtracker.lua") + +--local invfuncs = include("../../../gamemode/shared/inventory_common.lua") +function ENT:Initialize() + self.Openedby = {} + self:SetModel(self.Model or "models/props_junk/Rock001a.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_NONE) + self:SetSolid(SOLID_VPHYSICS) + self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE) + self:SetUseType(SIMPLE_USE) + local phys = self:GetPhysicsObject() + phys:EnableMotion(false) + phys:Sleep() + + self.data = { + inventories = {} + } + + local myinv = inv.CreateInventory(self.InvType or "Shaped Inventory") + myinv.Owner = self + + timer.Simple(0, function() + myinv.id = self:GetCreationID() + self.data.inventories[myinv.id] = myinv + end) --Wait until the entity is initalized + + self.Observers = {} +end + +local uans = {"openchestinv", "closechestinv"} + +for k, v in pairs(uans) do + util.AddNetworkString(v) +end + +net.Receive("closechestinv", function(ln, ply) + local chest = net.ReadEntity() + local obsid = chest.Observers[ply] + chest.data.inventories[chest:GetCreationID()]:RemoveObserver(obsid) + chest.Observers[ply] = nil +end) + +--NOTE:Why is it important to allow a table to this argument? +function ENT:SendInventory(towho) + local observer = track.MakeInventoryObserver(towho, self:GetCreationID()) + local obsid = self.data.inventories[self:GetCreationID()]:AddObserver(observer) + self.Observers[towho] = obsid + track.NotifyPlayerOfInventory(towho, self.data.inventories[self:GetCreationID()]) +end + +function ENT:Use(ply) + self:SendInventory(ply) +end + +scripted_ents.Register(ENT, "art_chest") -- cgit v1.2.3-70-g09d2