diff options
author | Aki <nthirtyone@gmail.com> | 2017-03-16 19:05:50 +0100 |
---|---|---|
committer | Aki <nthirtyone@gmail.com> | 2017-03-16 19:05:50 +0100 |
commit | 84278ed41f61c586dbb38dd99c45ee33e2f58c77 (patch) | |
tree | d7661f79901f40464b0b39a9bc5de6f4d5191b3b /not/Platform.lua | |
parent | bd22a09dc862ac5480426bfd5e0311a97b6cfa77 (diff) | |
download | roflnauts-84278ed41f61c586dbb38dd99c45ee33e2f58c77.zip roflnauts-84278ed41f61c586dbb38dd99c45ee33e2f58c77.tar.gz roflnauts-84278ed41f61c586dbb38dd99c45ee33e2f58c77.tar.bz2 |
Moved ? -> not.?; Renamed Player -> Hero
Diffstat (limited to 'not/Platform.lua')
-rw-r--r-- | not/Platform.lua | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/not/Platform.lua b/not/Platform.lua new file mode 100644 index 0000000..9b7b03c --- /dev/null +++ b/not/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 "not.Sprite" + +-- Metatable of `Platform` +-- nils initialized in constructor +Platform = { + body = nil, + shape = nil, + fixture = nil, + world = nil, +} +Platform.__index = Platform +setmetatable(Platform, Sprite) + +-- 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:setImage(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 + Sprite.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 |