diff options
-rw-r--r-- | decoration.lua | 30 | ||||
-rw-r--r-- | maps/default.lua | 3 | ||||
-rw-r--r-- | world.lua | 20 |
3 files changed, 50 insertions, 3 deletions
diff --git a/decoration.lua b/decoration.lua new file mode 100644 index 0000000..226b7f9 --- /dev/null +++ b/decoration.lua @@ -0,0 +1,30 @@ +Decoration = { + world = nil, + sprite = nil, + x = 0, + y = 0 +} +function Decoration:new(x, y, sprite) + local o = {} + setmetatable(o, self) + self.__index = self + o.sprite = love.graphics.newImage(sprite) + o:setPosition(x,y) + return o +end +function Decoration:setPosition(x, y) + self.x, self.y = x, y +end +function Decoration:getPosition() + return self.x, self.y +end +function Decoration:draw(offset_x, offset_y, scale) + -- defaults + local offset_x = offset_x or 0 + local offset_y = offset_y or 0 + local scale = scale or 1 + -- draw + love.graphics.setColor(255,255,255,255) + local x, y = self:getPosition() + love.graphics.draw(self.sprite, (x+offset_x)*scale, (y+offset_y)*scale, 0, scale, scale) +end
\ No newline at end of file diff --git a/maps/default.lua b/maps/default.lua index a2d5275..d21f33f 100644 --- a/maps/default.lua +++ b/maps/default.lua @@ -38,5 +38,6 @@ return { shape = {0,1, 34,1, 34,16, 0,16}, sprite = "assets/platform_top.png" } - } + }, + decorations = {} }
\ No newline at end of file @@ -7,6 +7,7 @@ require "ground" require "player" require "cloud" require "effect" +require "decoration" -- Metatable of `World` -- nils initialized in constructor @@ -16,8 +17,8 @@ World = { Nauts = nil, Platforms = nil, Clouds = nil, - EffectsBottom = nil, - EffectsTop = nil, + Decorations = nil, + Effects = nil, camera = nil, -- cloud generator clouds_delay = 6, @@ -45,6 +46,8 @@ function World:new(map, ...) o.Clouds = c local e = {} o.Effects = e + local d = {} + o.Decorations = d -- Random init math.randomseed(os.time()) -- Map @@ -71,6 +74,9 @@ function World:loadMap(name) for _,platform in pairs(self.map.platforms) do self:createPlatform(platform.x, platform.y, platform.shape, platform.sprite) end + for _,decoration in pairs(self.map.decorations) do + self:createDecoration(decoration.x, decoration.y, decoration.sprite) + end end -- Spawn all the nauts for the round @@ -107,6 +113,11 @@ function World:createNaut(x, y, name) return naut end +-- Add new decoration to the world +function World:createDecoration(x, y, sprite) + table.insert(self.Decorations, Decoration:new(x, y, sprite)) +end + -- Add new cloud to the world function World:createCloud(x, y, t, v) table.insert(self.Clouds, Cloud:new(x, y, t, v)) @@ -190,6 +201,11 @@ function World:draw() cloud:draw(offset_x, offset_y, scale) end + -- Draw decorations + for _,decoration in pairs(self.Decorations) do + decoration:draw(offset_x, offset_y, scale) + end + -- Draw effects for _,effect in pairs(self.Effects) do effect:draw(offset_x,offset_y, scale) |