From 0687bc4cfe04591003b452106f1bb8d78f3a6d14 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sun, 30 Jun 2019 17:10:16 +0200 Subject: [PATCH] feat(examples): add an initial fake3D example based on moveplayer --- .../gameplay/moveplayer3D/actors/init.lua | 13 + .../gameplay/moveplayer3D/actors/parent.lua | 13 + .../gameplay/moveplayer3D/actors/player.lua | 39 ++ .../gameplay/moveplayer3D/actors/wall.lua | 14 + .../gameplay/moveplayer3D/assets/arena.lua | 380 ++++++++++++++++++ .../gameplay/moveplayer3D/assets/arena.tmx | 108 +++++ .../moveplayer3D/assets/overworld.png | Bin 0 -> 13788 bytes .../moveplayer3D/assets/overworld.tsx | 4 + examples/gameplay/moveplayer3D/init.lua | 40 ++ 9 files changed, 611 insertions(+) create mode 100644 examples/gameplay/moveplayer3D/actors/init.lua create mode 100644 examples/gameplay/moveplayer3D/actors/parent.lua create mode 100644 examples/gameplay/moveplayer3D/actors/player.lua create mode 100644 examples/gameplay/moveplayer3D/actors/wall.lua create mode 100644 examples/gameplay/moveplayer3D/assets/arena.lua create mode 100644 examples/gameplay/moveplayer3D/assets/arena.tmx create mode 100644 examples/gameplay/moveplayer3D/assets/overworld.png create mode 100644 examples/gameplay/moveplayer3D/assets/overworld.tsx create mode 100644 examples/gameplay/moveplayer3D/init.lua diff --git a/examples/gameplay/moveplayer3D/actors/init.lua b/examples/gameplay/moveplayer3D/actors/init.lua new file mode 100644 index 0000000..9d67a55 --- /dev/null +++ b/examples/gameplay/moveplayer3D/actors/init.lua @@ -0,0 +1,13 @@ +local Obj = {} + +-- On charge toutes les différentes types d'acteurs +local cwd = (...):gsub('%.init$', '') .. "." +Obj.Player = require(cwd .. "player") + +Obj.index = {} +Obj.index["player"] = Obj.Player + +Obj.collisions = {} +Obj.collisions["wall"] = require(cwd .. "wall") + +return Obj diff --git a/examples/gameplay/moveplayer3D/actors/parent.lua b/examples/gameplay/moveplayer3D/actors/parent.lua new file mode 100644 index 0000000..2a43c98 --- /dev/null +++ b/examples/gameplay/moveplayer3D/actors/parent.lua @@ -0,0 +1,13 @@ +local Base = require "gamecore.modules.world.actors.actor3D" +local Parent = Base:extend() + +function Parent:new(world, type, x, y, z, w, h, d, isSolid) + self.scene = world.scene + Parent.super.new(self, world, type, x, y, z, w, h, d, isSolid) +end + +function Parent:draw() + self:drawMainHitbox() +end + +return Parent diff --git a/examples/gameplay/moveplayer3D/actors/player.lua b/examples/gameplay/moveplayer3D/actors/player.lua new file mode 100644 index 0000000..ea3875a --- /dev/null +++ b/examples/gameplay/moveplayer3D/actors/player.lua @@ -0,0 +1,39 @@ +local cwd = (...):gsub('%.player$', '') .. "." +local Parent = require(cwd .. "parent") +local Player = Parent:extend() + +function Player:new(world, x, y, z, id) + Player.super.new(self, world, "player", x, y, 0, 16, 16, 24, true) + self:setGravity(480) +end + +function Player:updateStart(dt) + self.xfrc, self.yfrc = 480*3, 480*3 + + if self.keys["up"].isDown then + self.ysp = -120 + end + if self.keys["down"].isDown then + self.ysp = 120 + end + if self.keys["left"].isDown then + self.xsp = -120 + end + if self.keys["right"].isDown then + self.xsp = 120 + end + + if self.keys["A"].isDown then + self.zsp = 280 + end +end + +function Player:draw() + Player.super.draw(self) +end + +function Player:drawHUD(id) + love.graphics.print(id .. " test", 4, 4) +end + +return Player diff --git a/examples/gameplay/moveplayer3D/actors/wall.lua b/examples/gameplay/moveplayer3D/actors/wall.lua new file mode 100644 index 0000000..1706f85 --- /dev/null +++ b/examples/gameplay/moveplayer3D/actors/wall.lua @@ -0,0 +1,14 @@ +local Base = require "gamecore.modules.world.actors.actor3D" +local Wall = Base:extend() + +function Wall:new(world, x, y, z, w, h, d) + Wall.super.new(self, world, "wall", x, y, z, w, h, d, true) + self:setDebugColor(0,0,0) +end + +function Wall:draw() + self:drawMainHitbox() + utils.graphics.resetColor( ) +end + +return Wall diff --git a/examples/gameplay/moveplayer3D/assets/arena.lua b/examples/gameplay/moveplayer3D/assets/arena.lua new file mode 100644 index 0000000..f7ac116 --- /dev/null +++ b/examples/gameplay/moveplayer3D/assets/arena.lua @@ -0,0 +1,380 @@ +return { + version = "1.2", + luaversion = "5.1", + tiledversion = "1.2.2", + orientation = "orthogonal", + renderorder = "right-down", + width = 30, + height = 30, + tilewidth = 16, + tileheight = 16, + nextlayerid = 5, + nextobjectid = 18, + properties = {}, + tilesets = { + { + name = "overworld", + firstgid = 1, + filename = "overworld.tsx", + tilewidth = 16, + tileheight = 16, + spacing = 0, + margin = 0, + columns = 32, + image = "overworld.png", + imagewidth = 512, + imageheight = 240, + tileoffset = { + x = 0, + y = 0 + }, + grid = { + orientation = "orthogonal", + width = 16, + height = 16 + }, + properties = {}, + terrains = {}, + tilecount = 480, + tiles = {} + } + }, + layers = { + { + type = "tilelayer", + id = 1, + name = "Calque de Tile 1", + x = 0, + y = 0, + width = 30, + height = 30, + visible = true, + opacity = 1, + offsetx = 0, + offsety = 0, + properties = {}, + encoding = "lua", + data = { + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 399, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 400, 3, + 3, 339, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 337, 3, + 3, 339, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3, + 3, 431, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 432, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 + } + }, + { + type = "tilelayer", + id = 2, + name = "Rochers", + x = 0, + y = 0, + width = 30, + height = 30, + visible = true, + opacity = 1, + offsetx = 0, + offsety = 0, + properties = {}, + encoding = "lua", + data = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }, + { + type = "objectgroup", + id = 3, + name = "player", + visible = true, + opacity = 1, + offsetx = 0, + offsety = 0, + draworder = "topdown", + properties = {}, + objects = { + { + id = 1, + name = "", + type = "", + shape = "rectangle", + x = 48, + y = 80, + width = 16, + height = 16, + rotation = 0, + visible = true, + properties = { + ["id"] = 1 + } + }, + { + id = 2, + name = "", + type = "", + shape = "rectangle", + x = 416, + y = 80, + width = 16, + height = 16, + rotation = 0, + visible = true, + properties = { + ["id"] = 1 + } + }, + { + id = 3, + name = "", + type = "", + shape = "rectangle", + x = 48, + y = 416, + width = 16, + height = 16, + rotation = 0, + visible = true, + properties = { + ["id"] = 3 + } + }, + { + id = 4, + name = "", + type = "", + shape = "rectangle", + x = 416, + y = 416, + width = 16, + height = 16, + rotation = 0, + visible = true, + properties = { + ["id"] = 4 + } + } + } + }, + { + type = "objectgroup", + id = 4, + name = "wall", + visible = true, + opacity = 1, + offsetx = 0, + offsety = 0, + draworder = "topdown", + properties = {}, + objects = { + { + id = 5, + name = "", + type = "", + shape = "rectangle", + x = 0, + y = 0, + width = 480, + height = 64, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 6, + name = "", + type = "", + shape = "rectangle", + x = 448, + y = 64, + width = 32, + height = 416, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 7, + name = "", + type = "", + shape = "rectangle", + x = 32, + y = 448, + width = 416, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 8, + name = "", + type = "", + shape = "rectangle", + x = 0, + y = 64, + width = 32, + height = 416, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 9, + name = "", + type = "", + shape = "rectangle", + x = 112, + y = 128, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 10, + name = "", + type = "", + shape = "rectangle", + x = 272, + y = 128, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 12, + name = "", + type = "", + shape = "rectangle", + x = 368, + y = 112, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 13, + name = "", + type = "", + shape = "rectangle", + x = 192, + y = 224, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 14, + name = "", + type = "", + shape = "rectangle", + x = 352, + y = 272, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 15, + name = "", + type = "", + shape = "rectangle", + x = 256, + y = 368, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 16, + name = "", + type = "", + shape = "rectangle", + x = 128, + y = 384, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + }, + { + id = 17, + name = "", + type = "", + shape = "rectangle", + x = 80, + y = 288, + width = 32, + height = 32, + rotation = 0, + visible = true, + properties = {} + } + } + } + } +} diff --git a/examples/gameplay/moveplayer3D/assets/arena.tmx b/examples/gameplay/moveplayer3D/assets/arena.tmx new file mode 100644 index 0000000..29dee38 --- /dev/null +++ b/examples/gameplay/moveplayer3D/assets/arena.tmx @@ -0,0 +1,108 @@ + + + + + +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +3,399,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,400,3, +3,339,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,337,3, +3,339,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,339,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,337,3, +3,431,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,432,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,85,0,0,0,0,0, +0,0,0,0,0,0,0,84,85,0,0,0,0,0,0,0,0,84,85,0,0,0,0,116,117,0,0,0,0,0, +0,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,84,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,85,0,0,0,0,0,0, +0,0,0,0,0,84,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,117,0,0,0,0,0,0, +0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,85,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,84,85,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/gameplay/moveplayer3D/assets/overworld.png b/examples/gameplay/moveplayer3D/assets/overworld.png new file mode 100644 index 0000000000000000000000000000000000000000..7823efb868ab0a710e42844253ab1e0933999b10 GIT binary patch literal 13788 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 literal 0 HcmV?d00001 diff --git a/examples/gameplay/moveplayer3D/assets/overworld.tsx b/examples/gameplay/moveplayer3D/assets/overworld.tsx new file mode 100644 index 0000000..9b3f454 --- /dev/null +++ b/examples/gameplay/moveplayer3D/assets/overworld.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/examples/gameplay/moveplayer3D/init.lua b/examples/gameplay/moveplayer3D/init.lua new file mode 100644 index 0000000..7475f1d --- /dev/null +++ b/examples/gameplay/moveplayer3D/init.lua @@ -0,0 +1,40 @@ +-- scenes/moveplayer3D :: a basic player movement example in fake3D + +--[[ + Copyright © 2019 Kazhnuz + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +]] + +local Scene = require "gamecore.modules.scenes" +local MovePlayer = Scene:extend() + +local World = require "gamecore.modules.world.world3D" + +function MovePlayer:new() + MovePlayer.super.new(self) + + World(self, "examples.gameplay.moveplayer3D.actors", "examples/gameplay/moveplayer3D/assets/arena.lua") + + self.world:setPlayerNumber(1) + + self.world:loadMap() + self.world.obj.collisions["wall"](self.world, 0,0,-16,1000, 1000, 16) +end + +return MovePlayer