From f6931cb1bda8c7ec1301f359f28ecc3b1fdb1566 Mon Sep 17 00:00:00 2001 From: Aki Date: Sun, 26 Feb 2017 01:28:08 +0100 Subject: Ground => Platform --- ground.lua | 73 ------------------------------------------------------------ platform.lua | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ world.lua | 4 ++-- 3 files changed, 75 insertions(+), 75 deletions(-) delete mode 100644 ground.lua create mode 100644 platform.lua diff --git a/ground.lua b/ground.lua deleted file mode 100644 index 1318c11..0000000 --- a/ground.lua +++ /dev/null @@ -1,73 +0,0 @@ --- `Ground` --- Static platform physical object with a sprite. `Players` can walk on it. --- Collision category: [1] - --- WHOLE CODE HAS FLAG OF "need a cleanup" -require "animated" - --- Metatable of `Ground` --- nils initialized in constructor -Ground = { - body = nil, - shape = nil, - fixture = nil, - world = nil, -} -Ground.__index = Ground -setmetatable(Ground, Animated) - --- Constructor of `Ground` -function Ground:new (game, world, x, y, shape, sprite, animations) - local o = {} - setmetatable(o, self) - o.body = love.physics.newBody(world, x, y) - -- MULTIPLE SHAPES NEED TO BE REWRITED! - o.shape = {} - if type(shape[1]) == "number" then - local poly = love.physics.newPolygonShape(shape) - table.insert(o.shape, poly) - o.fixture = love.physics.newFixture(o.body, poly) - o.fixture:setCategory(1) - o.fixture:setFriction(0.2) - else - for i,v in pairs(shape) do - local poly = love.physics.newPolygonShape(v) - table.insert(o.shape, poly) - local fixture = love.physics.newFixture(o.body, poly) - fixture:setCategory(1) - fixture:setFriction(0.2) - end - end - -- END HERE - o:setSprite(love.graphics.newImage(sprite)) - o:setAnimationsList(animations) - o.world = game - return o -end - --- Position -function Ground:getPosition() - return self.body:getPosition() -end - --- Draw of `Ground` -function Ground:draw (offset_x, offset_y, scale, debug) - -- locals - local offset_x = offset_x or 0 - local offset_y = offset_y or 0 - local scale = scale or 1 - local debug = debug or false - local x, y = self:getPosition() - -- pixel grid - local draw_x = (math.floor(x) + offset_x) * scale - local draw_y = (math.floor(y) + offset_y) * scale - -- sprite draw - Animated.draw(self, draw_x, draw_y, 0, scale, scale) - -- debug draw - if debug then - love.graphics.setColor(255, 69, 0, 140) - for i,v in pairs(self.shape) do - love.graphics.polygon("fill", self.world.camera:translatePoints(self.body:getWorldPoints(v:getPoints()))) - end - end -end \ No newline at end of file diff --git a/platform.lua b/platform.lua new file mode 100644 index 0000000..908cf73 --- /dev/null +++ b/platform.lua @@ -0,0 +1,73 @@ +-- `Platform` +-- Static platform physical object with a sprite. `Players` can walk on it. +-- Collision category: [1] + +-- WHOLE CODE HAS FLAG OF "need a cleanup" +require "animated" + +-- Metatable of `Platform` +-- nils initialized in constructor +Platform = { + body = nil, + shape = nil, + fixture = nil, + world = nil, +} +Platform.__index = Platform +setmetatable(Platform, Animated) + +-- Constructor of `Platform` +function Platform:new (game, world, x, y, shape, sprite, animations) + local o = {} + setmetatable(o, self) + o.body = love.physics.newBody(world, x, y) + -- MULTIPLE SHAPES NEED TO BE REWRITED! + o.shape = {} + if type(shape[1]) == "number" then + local poly = love.physics.newPolygonShape(shape) + table.insert(o.shape, poly) + o.fixture = love.physics.newFixture(o.body, poly) + o.fixture:setCategory(1) + o.fixture:setFriction(0.2) + else + for i,v in pairs(shape) do + local poly = love.physics.newPolygonShape(v) + table.insert(o.shape, poly) + local fixture = love.physics.newFixture(o.body, poly) + fixture:setCategory(1) + fixture:setFriction(0.2) + end + end + -- END HERE + o:setSprite(love.graphics.newImage(sprite)) + o:setAnimationsList(animations) + o.world = game + return o +end + +-- Position +function Platform:getPosition() + return self.body:getPosition() +end + +-- Draw of `Platform` +function Platform:draw (offset_x, offset_y, scale, debug) + -- locals + local offset_x = offset_x or 0 + local offset_y = offset_y or 0 + local scale = scale or 1 + local debug = debug or false + local x, y = self:getPosition() + -- pixel grid + local draw_x = (math.floor(x) + offset_x) * scale + local draw_y = (math.floor(y) + offset_y) * scale + -- sprite draw + Animated.draw(self, draw_x, draw_y, 0, scale, scale) + -- debug draw + if debug then + love.graphics.setColor(255, 69, 0, 140) + for i,v in pairs(self.shape) do + love.graphics.polygon("fill", self.world.camera:translatePoints(self.body:getWorldPoints(v:getPoints()))) + end + end +end \ No newline at end of file diff --git a/world.lua b/world.lua index f2af28d..9c308b8 100644 --- a/world.lua +++ b/world.lua @@ -3,7 +3,7 @@ -- WHOLE CODE HAS FLAG OF "need a cleanup" -require "ground" +require "platform" require "player" require "cloud" require "effect" @@ -126,7 +126,7 @@ end -- Add new platform to the world function World:createPlatform(x, y, polygon, sprite, animations) - table.insert(self.Platforms, Ground:new(self, self.world, x, y, polygon, sprite, animations)) + table.insert(self.Platforms, Platform:new(self, self.world, x, y, polygon, sprite, animations)) end -- Add new naut to the world -- cgit v1.1