From 1549976382f03847d6e1f63a3f3efb26b21363b7 Mon Sep 17 00:00:00 2001 From: binarycat Date: Wed, 16 Mar 2022 19:59:42 -0400 Subject: [PATCH] add class() for easy definition of classes --- code/class.lua | 7 +++++++ code/entities/decoration.lua | 11 +++++------ code/entity.lua | 4 +--- code/require.lua | 1 + 4 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 code/class.lua diff --git a/code/class.lua b/code/class.lua new file mode 100644 index 0000000..2f7adc0 --- /dev/null +++ b/code/class.lua @@ -0,0 +1,7 @@ +function class(super, self) + assert(super == nil or super.__index == super) + self = self or {} + self.__index = self + setmetatable(self, super) + return self +end diff --git a/code/entities/decoration.lua b/code/entities/decoration.lua index 9d42f93..951d139 100644 --- a/code/entities/decoration.lua +++ b/code/entities/decoration.lua @@ -1,8 +1,8 @@ -Decoration = {} -Decoration.type = "Decoration" -Decoration.supertype = Entity.type -Decoration.display = Animation:new(animation.particle.simple) -setmetatable(Decoration, Entity) +Decoration = class(Entity, { + type = "Decoration", + supertype = Entity.type, + display = Animation:new(animation.particle.simple), +}) function Decoration:new(x,y,animation,light_data) local o = Entity:new(x,y) @@ -22,7 +22,6 @@ function Decoration:new(x,y,animation,light_data) o:id() setmetatable(o, self) - self.__index = self return o end diff --git a/code/entity.lua b/code/entity.lua index 1dc48c4..83b8dcc 100644 --- a/code/entity.lua +++ b/code/entity.lua @@ -1,6 +1,5 @@ LoadedObjects.Entities = {} -Entity = {} -Entity.type = "Entity" +Entity = class(nil, {type = "Entity"}) function Entity:new(x,y) local o = {} @@ -26,7 +25,6 @@ function Entity:new(x,y) o.sprite_flip = { x = 1, y = 1} setmetatable(o, self) - self.__index = self return o end diff --git a/code/require.lua b/code/require.lua index d4b8390..01e6377 100644 --- a/code/require.lua +++ b/code/require.lua @@ -7,6 +7,7 @@ require "data/sfx" require "code/locale" -- support functions +require "code/class" require "code/math" require "code/draw" require "code/hex"