summaryrefslogtreecommitdiff
path: root/Data/DefaultContent/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Data/DefaultContent/Libraries')
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Class.lua93
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Core/Camera.lua5
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Core/Component.lua11
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Core/Game.lua14
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Core/GameObject.lua7
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Core/Sprite.lua21
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua4
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua18
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua18
-rw-r--r--Data/DefaultContent/Libraries/GameLab/GlobalClass.lua13
10 files changed, 94 insertions, 110 deletions
diff --git a/Data/DefaultContent/Libraries/GameLab/Class.lua b/Data/DefaultContent/Libraries/GameLab/Class.lua
index 62369e1..0b424a6 100644
--- a/Data/DefaultContent/Libraries/GameLab/Class.lua
+++ b/Data/DefaultContent/Libraries/GameLab/Class.lua
@@ -1,38 +1,79 @@
--- Declare class
+-- GameLab内置class模块
+-- 保留方法名:New, Ctor, Is
+-- 保留字段:_type, _base
-local _class = function (className)
- local class = {}
- local pkgName = (type(className) == "string") and string.match(className, "^(.+)%.%w+$") or ""
- local shortName = (type(className) == "string") and string.match(className, "%.*(%w+)$") or ""
- class._type = { -- 类型元数据,GameLab的类型都会包含这些
+local TrackClassInstances = false
+
+local _class = function (name, ctor)
+ local c = {}
+
+ local isstring = type(name) == "string"
+ local pkg = "unknown"
+ local short = "unknown"
+ if isstring then
+ pkg = string.match(name, "^(.+)%.%w+$")
+ short = string.match(name, "%.*(%w+)$")
+ end
+
+ c._type = {
mode = "lua",
- name = shortName or "",
- package = pkgName or "",
- fullName = className
+ name = short,
+ package = pkg,
+ fullName = name
}
- class.__index = class
- class.New = function(...)
- local instance = {}
- setmetatable(instance, class)
- instance:Ctor(...)
- return instance
+
+ c.__index = c
+
+ c.New = function(...)
+ local obj = {}
+ setmetatable(obj, c)
+ obj:Ctor(...)
+ return obj
end
- return class
+
+ c.Is = function(self, klass)
+ local m = getmetatable(self)
+ while m do
+ if m == klass then
+ return true
+ end
+ m = m._base
+ end
+ return false
+ end
+
+ if ctor and type(ctor) == "function" then
+ c.Ctor = ctor
+ end
+
+ local mt = {}
+
+ mt.__call = function(dummy, ...)
+ return c.New(...)
+ end
+
+ setmetatable(c, mt)
+
+ return c
end
--- 提供ClassName和PkgName作为类型的元数据,可以留空,但是最好提供,会作为类型判断的依据
-local Class = function(className)
- local cls = _class(className)
- cls.Extend = function(childName)
+local class = function(name, ctor)
+ local c = _class(name, ctor)
+
+ c.Extend = function(childName)
local child = _class(childName)
- if cls then
- setmetatable(child, cls)
- child.base = cls
+ if c then
+ setmetatable(child, c)
+ child._base = c
end
return child
end
- return cls
+
+ c._base = nil
+
+ return c
end
-GameLab.Class = Class
-return Class \ No newline at end of file
+GameLab.Class = class
+
+return class \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Camera.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Core/Camera.lua
deleted file mode 100644
index 5fcfbe7..0000000
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Camera.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-local Camera = {}
-
-
-
-return Camera \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Component.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Core/Component.lua
deleted file mode 100644
index 00bf2ca..0000000
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Component.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-local Component = {}
-
-Component.New = function()
-
-end
-
-Component.GetGameObject = function()
-
-end
-
-Jin.Component = Component \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Game.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Core/Game.lua
deleted file mode 100644
index 51ce25f..0000000
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Game.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-
--- Game entry
-
-local Game = {}
-
-Game.OnEvent = function(e)
-
-end
-
-Game.MainLoop = function()
-
-end
-
-return Game \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Core/GameObject.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Core/GameObject.lua
deleted file mode 100644
index ee0d143..0000000
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Core/GameObject.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-local GameObject = {}
-
-GameObject.AddComponent = function(self, comp)
-
-end
-
-Jin.GameObject = GameObject
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Sprite.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Core/Sprite.lua
deleted file mode 100644
index 47cb50d..0000000
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Core/Sprite.lua
+++ /dev/null
@@ -1,21 +0,0 @@
--- Quadķװʺ2DϷ
-local Sprite = {}
-
-Sprite.New = function(quad)
- local spr = {}
- spr.quad = Jin.Quad.New(quad)
- spr.pivot = Jin.Vector2.New(0.5, 0)
- spr.transform = Jin.Transform.New()
- spr.depth = 0
- return spr
-end
-
-Sprite.SetDepth = function(self, depth)
- spr.depth = depth
-end
-
-Sprite.SetTexture = function(self, tex, reset_quad)
-
-end
-
-Jin.Sprite = Sprite \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua
index 3655184..ecfc9ff 100644
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua
+++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua
@@ -39,7 +39,7 @@ Vector4.Scale = function(self, scale)
end
-Vector4.one = Vector4.New(1,1,1,1)
-Vector4.zero = Vector4.New(0,0,0,0)
+Vector4.one = Vector4(1,1,1,1)
+Vector4.zero = Vector4(0,0,0,0)
return Vector4 \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua
index 2785bdf..e70de4f 100644
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua
+++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua
@@ -9,7 +9,7 @@ end
Color.ToColor32 = function(self)
local Color32 = GameLab.find("GameLab.Engine.Rendering.Color32")
- local c32 = Color32.New()
+ local c32 = Color32()
c32.r = self.r * 255
c32.g = self.g * 255
c32.b = self.b * 255
@@ -24,13 +24,13 @@ Color.Clear = function(self)
self.a = 0
end
-Color.red = Color.New(1,0,0,1)
-Color.green = Color.New(0,1,0,1)
-Color.blue = Color.New(0,0,1,1)
-Color.magenta = Color.New(1,0,1,1)
-Color.red = Color.New(1,0,0,1)
-Color.yellow = Color.New(1,1,0,1)
-Color.black = Color.New(0,0,0,1)
-Color.white = Color.New(1,1,1,1)
+Color.red = Color(1,0,0,1)
+Color.green = Color(0,1,0,1)
+Color.blue = Color(0,0,1,1)
+Color.magenta = Color(1,0,1,1)
+Color.red = Color(1,0,0,1)
+Color.yellow = Color(1,1,0,1)
+Color.black = Color(0,0,0,1)
+Color.white = Color(1,1,1,1)
return Color \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua
index 48902b6..d1cacd7 100644
--- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua
+++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua
@@ -9,7 +9,7 @@ end
Color32.ToColor = function(self)
local Color = GameLab.find("GameLab.Engine.Rendering.Color")
- local c = Color.New()
+ local c = Color()
c.r = self.r / 255
c.g = self.g / 255
c.b = self.b / 255
@@ -24,13 +24,13 @@ Color32.Clear = function(self)
self.a = 0
end
-Color32.red = Color32.New(255,0,0,255)
-Color32.green = Color32.New(0,255,0,255)
-Color32.blue = Color32.New(0,0,255,255)
-Color32.magenta = Color32.New(255,0,255,255)
-Color32.red = Color32.New(255,0,0,255)
-Color32.yellow = Color32.New(255,255,0,255)
-Color32.black = Color32.New(0,0,0,255)
-Color32.white = Color32.New(255,255,255,255)
+Color32.red = Color32(255,0,0,255)
+Color32.green = Color32(0,255,0,255)
+Color32.blue = Color32(0,0,255,255)
+Color32.magenta = Color32(255,0,255,255)
+Color32.red = Color32(255,0,0,255)
+Color32.yellow = Color32(255,255,0,255)
+Color32.black = Color32(0,0,0,255)
+Color32.white = Color32(255,255,255,255)
return Color32 \ No newline at end of file
diff --git a/Data/DefaultContent/Libraries/GameLab/GlobalClass.lua b/Data/DefaultContent/Libraries/GameLab/GlobalClass.lua
index dcb5fba..7104480 100644
--- a/Data/DefaultContent/Libraries/GameLab/GlobalClass.lua
+++ b/Data/DefaultContent/Libraries/GameLab/GlobalClass.lua
@@ -1,18 +1,19 @@
local Class = GameLab.Class or require("GameLab.Class")
-- 声明类的同时添加到G表
-local GlobalClass = function(className)
- local cls = Class(className)
+local GlobalClass = function(name, ctor)
+ local c = Class(name, ctor)
- local shortName = string.match(className, "%.*(%w+)$")
+ local short = string.match(name, "%.*(%w+)$")
+ local pkgs = string.gmatch(name, "%.*(%w+)%.")
local t = _G
- for pkg in string.gmatch(className, "%.*(%w+)%.") do
+ for pkg in pkgs do
t[pkg] = t[pkg] or {}
t = t[pkg]
end
- t[shortName] = cls
+ t[short] = c
- return cls
+ return c
end
GameLab.GlobalClass = GlobalClass