From c1e2a3e47d57ea44a246b2beb78c13ea2669f227 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 20 Dec 2018 20:17:32 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin-lua/embed/scripts/ai.lua | 9 -- src/libjin-lua/embed/scripts/ai/ai.lua | 8 ++ src/libjin-lua/embed/scripts/ai/state_machine.lua | 7 ++ src/libjin-lua/embed/scripts/app.lua | 136 +++++++++++++++++++++ src/libjin-lua/embed/scripts/boot.lua | 136 --------------------- src/libjin-lua/embed/scripts/graphics.lua | 136 --------------------- src/libjin-lua/embed/scripts/graphics/graphics.lua | 136 +++++++++++++++++++++ src/libjin-lua/embed/scripts/keyboard.lua | 14 --- src/libjin-lua/embed/scripts/keyboard/keyboard.lua | 14 +++ src/libjin-lua/embed/scripts/mouse.lua | 14 --- src/libjin-lua/embed/scripts/mouse/mouse.lua | 14 +++ src/libjin-lua/embed/scripts/net.lua | 4 - src/libjin-lua/embed/scripts/net/net.lua | 4 + src/libjin-lua/embed/scripts/path.lua | 13 -- src/libjin-lua/embed/scripts/path/path.lua | 13 ++ 15 files changed, 332 insertions(+), 326 deletions(-) delete mode 100644 src/libjin-lua/embed/scripts/ai.lua create mode 100644 src/libjin-lua/embed/scripts/ai/ai.lua create mode 100644 src/libjin-lua/embed/scripts/ai/state_machine.lua create mode 100644 src/libjin-lua/embed/scripts/app.lua delete mode 100644 src/libjin-lua/embed/scripts/boot.lua delete mode 100644 src/libjin-lua/embed/scripts/graphics.lua create mode 100644 src/libjin-lua/embed/scripts/graphics/graphics.lua delete mode 100644 src/libjin-lua/embed/scripts/keyboard.lua create mode 100644 src/libjin-lua/embed/scripts/keyboard/keyboard.lua delete mode 100644 src/libjin-lua/embed/scripts/mouse.lua create mode 100644 src/libjin-lua/embed/scripts/mouse/mouse.lua delete mode 100644 src/libjin-lua/embed/scripts/net.lua create mode 100644 src/libjin-lua/embed/scripts/net/net.lua delete mode 100644 src/libjin-lua/embed/scripts/path.lua create mode 100644 src/libjin-lua/embed/scripts/path/path.lua (limited to 'src/libjin-lua/embed/scripts') diff --git a/src/libjin-lua/embed/scripts/ai.lua b/src/libjin-lua/embed/scripts/ai.lua deleted file mode 100644 index c9f6ff1..0000000 --- a/src/libjin-lua/embed/scripts/ai.lua +++ /dev/null @@ -1,9 +0,0 @@ - -jin.ai = jin.ai or {} - -local ja = jin.ai - -ja.StateMachineType = { - STEPWISE = 1, - ITERATIVE = 2, -} diff --git a/src/libjin-lua/embed/scripts/ai/ai.lua b/src/libjin-lua/embed/scripts/ai/ai.lua new file mode 100644 index 0000000..fb8ffa7 --- /dev/null +++ b/src/libjin-lua/embed/scripts/ai/ai.lua @@ -0,0 +1,8 @@ +jin.ai = jin.ai or {} + +local ja = jin.ai + +ja.StateMachineType = { + STEPWISE = 1, + ITERATIVE = 2, +} diff --git a/src/libjin-lua/embed/scripts/ai/state_machine.lua b/src/libjin-lua/embed/scripts/ai/state_machine.lua new file mode 100644 index 0000000..b4ec768 --- /dev/null +++ b/src/libjin-lua/embed/scripts/ai/state_machine.lua @@ -0,0 +1,7 @@ +jin.ai = jin.ai or {} + +local statemachine = {} + +jin.ai.newStateMachine = function() + +end diff --git a/src/libjin-lua/embed/scripts/app.lua b/src/libjin-lua/embed/scripts/app.lua new file mode 100644 index 0000000..cfcf264 --- /dev/null +++ b/src/libjin-lua/embed/scripts/app.lua @@ -0,0 +1,136 @@ + +local cwd = jin.args['cwd'] or '.' +jin.filesystem.init() +jin.filesystem.mount(cwd) + +------------------------------------------------------------------------- +-- Config game +------------------------------------------------------------------------- + +jin.config = {} +if jin.filesystem.exist("config.lua") then + xpcall(function()jin.config = require "config" end, function()end) +end +jin.config.width = jin.config.width or 580 +jin.config.height = jin.config.height or 450 +jin.config.vsync = jin.config.vsync or true +jin.config.title = jin.config.title or ("jin v" .. jin.version) +jin.config.resizable = jin.config.resizable or false +jin.config.fullscreen = jin.config.fullscreen or false +jin.config.fps = jin.config.fps or 60 +jin.config.icon = jin.config.icon or "" + +------------------------------------------------------------------------- +-- Default game loop +------------------------------------------------------------------------- + +local function call(func, ...) + if func then + return func(...) + end +end + +local step = jin.time.step +jin.time.step = nil + +function jin.core.run() + jin.graphics.reset() + call(jin.core.onLoad) + local dt = 0 + while jin.core.running() do + for _, e in pairs(jin.event.poll()) do + if e.type == "KeyDown" then + jin.keyboard.set(e.key, true) + elseif e.type == "KeyUp" then + jin.keyboard.set(e.key, false) + end + call(jin.core.onEvent, e) + end + step() + dt = jin.time.getDelta() + call(jin.core.onUpdate, dt) + jin.graphics.clear() + call(jin.core.onDraw) + jin.graphics.present() + jin.time.sleep(0.001) + end +end + +------------------------------------------------------------------------- +-- Boot game +------------------------------------------------------------------------- + +-- Display error message. +local function onError(msg) + jin.audio.destroy() + jin.graphics.showWindow() + local err = "Error:\n" .. msg .. "\n" .. debug.traceback() + jin.graphics.reset() + jin.graphics.setClearColor(100, 100, 100, 255) + jin.graphics.clear() + jin.graphics.print(err, 5, 5) + jin.graphics.present() + while jin.core.running() do + for _, e in pairs(jin.event.poll()) do + if e.type == "Quit" then + jin.core.stop() + end + end + jin.time.sleep(0.001) + end +end + +-- No game screen. +local function noGame() + jin.graphics.showWindow() + jin.graphics.reset() + jin.graphics.setClearColor(100, 100, 100, 255) + jin.graphics.clear() + jin.graphics.print("No Game", 5, 5) + jin.graphics.present() + while jin.core.running() do + for _, e in pairs(jin.event.poll()) do + if e.type == "Quit" then + jin.core.stop() + end + end + jin.time.sleep(0.001) + end +end + +local function boot() + if jin.filesystem.exist("main.lua") then + call(function() + require"main" + jin.core.run() + end) + else + noGame() + end +end + +------------------------------------------------------------------------- +-- Initialize sub systems +------------------------------------------------------------------------- + +jin.audio.init() +jin.graphics.init(jin.config) + +------------------------------------------------------------------------- +-- Boot game +------------------------------------------------------------------------- + +xpcall(boot, onError) + +------------------------------------------------------------------------- +-- Destroy sub-systems +------------------------------------------------------------------------- + +jin.graphics.destroy() +jin.audio.destroy() + +------------------------------------------------------------------------- +-- Quit game +------------------------------------------------------------------------- + +jin.core.quit() diff --git a/src/libjin-lua/embed/scripts/boot.lua b/src/libjin-lua/embed/scripts/boot.lua deleted file mode 100644 index cfcf264..0000000 --- a/src/libjin-lua/embed/scripts/boot.lua +++ /dev/null @@ -1,136 +0,0 @@ - -local cwd = jin.args['cwd'] or '.' -jin.filesystem.init() -jin.filesystem.mount(cwd) - -------------------------------------------------------------------------- --- Config game -------------------------------------------------------------------------- - -jin.config = {} -if jin.filesystem.exist("config.lua") then - xpcall(function()jin.config = require "config" end, function()end) -end -jin.config.width = jin.config.width or 580 -jin.config.height = jin.config.height or 450 -jin.config.vsync = jin.config.vsync or true -jin.config.title = jin.config.title or ("jin v" .. jin.version) -jin.config.resizable = jin.config.resizable or false -jin.config.fullscreen = jin.config.fullscreen or false -jin.config.fps = jin.config.fps or 60 -jin.config.icon = jin.config.icon or "" - -------------------------------------------------------------------------- --- Default game loop -------------------------------------------------------------------------- - -local function call(func, ...) - if func then - return func(...) - end -end - -local step = jin.time.step -jin.time.step = nil - -function jin.core.run() - jin.graphics.reset() - call(jin.core.onLoad) - local dt = 0 - while jin.core.running() do - for _, e in pairs(jin.event.poll()) do - if e.type == "KeyDown" then - jin.keyboard.set(e.key, true) - elseif e.type == "KeyUp" then - jin.keyboard.set(e.key, false) - end - call(jin.core.onEvent, e) - end - step() - dt = jin.time.getDelta() - call(jin.core.onUpdate, dt) - jin.graphics.clear() - call(jin.core.onDraw) - jin.graphics.present() - jin.time.sleep(0.001) - end -end - -------------------------------------------------------------------------- --- Boot game -------------------------------------------------------------------------- - --- Display error message. -local function onError(msg) - jin.audio.destroy() - jin.graphics.showWindow() - local err = "Error:\n" .. msg .. "\n" .. debug.traceback() - jin.graphics.reset() - jin.graphics.setClearColor(100, 100, 100, 255) - jin.graphics.clear() - jin.graphics.print(err, 5, 5) - jin.graphics.present() - while jin.core.running() do - for _, e in pairs(jin.event.poll()) do - if e.type == "Quit" then - jin.core.stop() - end - end - jin.time.sleep(0.001) - end -end - --- No game screen. -local function noGame() - jin.graphics.showWindow() - jin.graphics.reset() - jin.graphics.setClearColor(100, 100, 100, 255) - jin.graphics.clear() - jin.graphics.print("No Game", 5, 5) - jin.graphics.present() - while jin.core.running() do - for _, e in pairs(jin.event.poll()) do - if e.type == "Quit" then - jin.core.stop() - end - end - jin.time.sleep(0.001) - end -end - -local function boot() - if jin.filesystem.exist("main.lua") then - call(function() - require"main" - jin.core.run() - end) - else - noGame() - end -end - -------------------------------------------------------------------------- --- Initialize sub systems -------------------------------------------------------------------------- - -jin.audio.init() -jin.graphics.init(jin.config) - -------------------------------------------------------------------------- --- Boot game -------------------------------------------------------------------------- - -xpcall(boot, onError) - -------------------------------------------------------------------------- --- Destroy sub-systems -------------------------------------------------------------------------- - -jin.graphics.destroy() -jin.audio.destroy() - -------------------------------------------------------------------------- --- Quit game -------------------------------------------------------------------------- - -jin.core.quit() diff --git a/src/libjin-lua/embed/scripts/graphics.lua b/src/libjin-lua/embed/scripts/graphics.lua deleted file mode 100644 index 41c481c..0000000 --- a/src/libjin-lua/embed/scripts/graphics.lua +++ /dev/null @@ -1,136 +0,0 @@ - -jin.graphics = jin.graphics or {} - -local jg = jin.graphics - -jg.RenderMode = { - FILL = 1, - LINE = 2, -} - -jg.SpriteOrigin = { - TOPLEFT = 0, - TOPCENTER = 1, - TOPRIGHT = 2, - MIDDLELEFT = 3, - MIDDLECENTER = 4, - MIDDLERIGHT = 5, - BOTTOMLEFT = 6, - BOTTOMCENTER = 7, - BOTTOMRIGHT = 8 -} - -jg.SpriteMode = { - SINGLE = 1, - RANDOM = 2, - ANIMATED = 3 -} - --- built in shaders -jg.Shaders = { - Font = nil, - Texture = nil, - Sprite = nil, - SpriteSheet = nil, - Default = nil -} - -local function compileBuiltInShaders() - jg.Shaders.Font = jg.newShader([[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return Color(col.rgb, texel(tex, v.uv).a); - } - #END_FRAGMENT_SHADER - ]]) - jg.Shaders.Texture = jg.newShader([[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]]) - jg.Shaders.Sprite = jg.newShader([[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]]) - jg.Shaders.SpriteSheet = jg.newShader([[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]]) - jg.Shaders.Default = jg.newShader([[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]]) -end - -local _init = jg.init -local initialized = false -jg.init = function(setting) - if initialized then - return initialized - end - initialized = _init(setting) - if initialized then - compileBuiltInShaders() - jg.useShader(jg.Shaders.Default) - end - return initialized -end - -jg.unuseShader = function() - jg.useShader(jg.Shaders.Default) -end - --- Reset all attributes to default value. -jg.reset = function() - jg.setColor(255, 255, 255, 255) - jg.setClearColor(0, 0, 0, 255) - jg.clear() - jg.unsetFont() - jg.unuseShader() -end diff --git a/src/libjin-lua/embed/scripts/graphics/graphics.lua b/src/libjin-lua/embed/scripts/graphics/graphics.lua new file mode 100644 index 0000000..41c481c --- /dev/null +++ b/src/libjin-lua/embed/scripts/graphics/graphics.lua @@ -0,0 +1,136 @@ + +jin.graphics = jin.graphics or {} + +local jg = jin.graphics + +jg.RenderMode = { + FILL = 1, + LINE = 2, +} + +jg.SpriteOrigin = { + TOPLEFT = 0, + TOPCENTER = 1, + TOPRIGHT = 2, + MIDDLELEFT = 3, + MIDDLECENTER = 4, + MIDDLERIGHT = 5, + BOTTOMLEFT = 6, + BOTTOMCENTER = 7, + BOTTOMRIGHT = 8 +} + +jg.SpriteMode = { + SINGLE = 1, + RANDOM = 2, + ANIMATED = 3 +} + +-- built in shaders +jg.Shaders = { + Font = nil, + Texture = nil, + Sprite = nil, + SpriteSheet = nil, + Default = nil +} + +local function compileBuiltInShaders() + jg.Shaders.Font = jg.newShader([[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return Color(col.rgb, texel(tex, v.uv).a); + } + #END_FRAGMENT_SHADER + ]]) + jg.Shaders.Texture = jg.newShader([[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]]) + jg.Shaders.Sprite = jg.newShader([[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]]) + jg.Shaders.SpriteSheet = jg.newShader([[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]]) + jg.Shaders.Default = jg.newShader([[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]]) +end + +local _init = jg.init +local initialized = false +jg.init = function(setting) + if initialized then + return initialized + end + initialized = _init(setting) + if initialized then + compileBuiltInShaders() + jg.useShader(jg.Shaders.Default) + end + return initialized +end + +jg.unuseShader = function() + jg.useShader(jg.Shaders.Default) +end + +-- Reset all attributes to default value. +jg.reset = function() + jg.setColor(255, 255, 255, 255) + jg.setClearColor(0, 0, 0, 255) + jg.clear() + jg.unsetFont() + jg.unuseShader() +end diff --git a/src/libjin-lua/embed/scripts/keyboard.lua b/src/libjin-lua/embed/scripts/keyboard.lua deleted file mode 100644 index 452e0f7..0000000 --- a/src/libjin-lua/embed/scripts/keyboard.lua +++ /dev/null @@ -1,14 +0,0 @@ - -jin.keyboard = jin.keyboard or {} - -local jk = jin.keyboard - -local keys = {} - -function jin.keyboard.isPressed(k) - return keys[k] -end - -function jin.keyboard.set(k, status) - keys[k] = status -end diff --git a/src/libjin-lua/embed/scripts/keyboard/keyboard.lua b/src/libjin-lua/embed/scripts/keyboard/keyboard.lua new file mode 100644 index 0000000..452e0f7 --- /dev/null +++ b/src/libjin-lua/embed/scripts/keyboard/keyboard.lua @@ -0,0 +1,14 @@ + +jin.keyboard = jin.keyboard or {} + +local jk = jin.keyboard + +local keys = {} + +function jin.keyboard.isPressed(k) + return keys[k] +end + +function jin.keyboard.set(k, status) + keys[k] = status +end diff --git a/src/libjin-lua/embed/scripts/mouse.lua b/src/libjin-lua/embed/scripts/mouse.lua deleted file mode 100644 index 876bf1d..0000000 --- a/src/libjin-lua/embed/scripts/mouse.lua +++ /dev/null @@ -1,14 +0,0 @@ - -jin.mouse = jin.mouse or {} - -local jm = jin.mouse - -local button = {} - -function jin.mouse.isDown(btn) - return button[btn] -end - -function jin.mouse.set(btn, status) - button[btn] = status -end diff --git a/src/libjin-lua/embed/scripts/mouse/mouse.lua b/src/libjin-lua/embed/scripts/mouse/mouse.lua new file mode 100644 index 0000000..876bf1d --- /dev/null +++ b/src/libjin-lua/embed/scripts/mouse/mouse.lua @@ -0,0 +1,14 @@ + +jin.mouse = jin.mouse or {} + +local jm = jin.mouse + +local button = {} + +function jin.mouse.isDown(btn) + return button[btn] +end + +function jin.mouse.set(btn, status) + button[btn] = status +end diff --git a/src/libjin-lua/embed/scripts/net.lua b/src/libjin-lua/embed/scripts/net.lua deleted file mode 100644 index 946b55f..0000000 --- a/src/libjin-lua/embed/scripts/net.lua +++ /dev/null @@ -1,4 +0,0 @@ - -jin.net = jin.net or {} - -local jn = jin.net diff --git a/src/libjin-lua/embed/scripts/net/net.lua b/src/libjin-lua/embed/scripts/net/net.lua new file mode 100644 index 0000000..946b55f --- /dev/null +++ b/src/libjin-lua/embed/scripts/net/net.lua @@ -0,0 +1,4 @@ + +jin.net = jin.net or {} + +local jn = jin.net diff --git a/src/libjin-lua/embed/scripts/path.lua b/src/libjin-lua/embed/scripts/path.lua deleted file mode 100644 index ede7f62..0000000 --- a/src/libjin-lua/embed/scripts/path.lua +++ /dev/null @@ -1,13 +0,0 @@ - -jin.path = jin.path or {} - -local jp = jin.path - --- game root directory -jin._root = nil - --- return full path of a given path -function jin.path.full(path) - local root = jin._dir .. '/' .. jin._argv[2] - return root .. '/' .. path -end diff --git a/src/libjin-lua/embed/scripts/path/path.lua b/src/libjin-lua/embed/scripts/path/path.lua new file mode 100644 index 0000000..015f602 --- /dev/null +++ b/src/libjin-lua/embed/scripts/path/path.lua @@ -0,0 +1,13 @@ + +jin.path = jin.path or {} + +local jp = jin.path + +-- Game root directory +jin._root = nil + +-- Get full path of a given path +function jin.path.full(path) + local root = jin._dir .. '/' .. jin._argv[2] + return root .. '/' .. path +end -- cgit v1.1-26-g67d0