modules/world: add basic sti support
This commit is contained in:
parent
f3543680ba
commit
9a47584feb
1 changed files with 69 additions and 1 deletions
|
@ -1,11 +1,16 @@
|
|||
local cwd = (...):gsub('%.baseworld$', '') .. "."
|
||||
|
||||
local BaseWorld = Object:extend()
|
||||
|
||||
local Sti = require(cwd .. "libs.sti")
|
||||
|
||||
-- INIT FUNCTIONS
|
||||
-- All functions to init the world and the map
|
||||
|
||||
function BaseWorld:new(scene, actorlist)
|
||||
function BaseWorld:new(scene, actorlist, mapfile)
|
||||
self.scene = scene
|
||||
self:setActorList(actorlist)
|
||||
self:setMap(mapfile)
|
||||
self.actors = {}
|
||||
end
|
||||
|
||||
|
@ -17,6 +22,19 @@ function BaseWorld:setActorList(actorlist)
|
|||
end
|
||||
end
|
||||
|
||||
function BaseWorld:setMap(mapfile)
|
||||
if mapfile == nil then
|
||||
self.haveMap = false
|
||||
self.haveBackgroundColor = false
|
||||
self.backcolor = {128, 128, 128}
|
||||
else
|
||||
self.haveMap = true
|
||||
self.map = Sti(mapfile)
|
||||
self.haveBackgroundColor = true
|
||||
self.backcolor = self.map.backgroundcolor or {128, 128, 128}
|
||||
end
|
||||
end
|
||||
|
||||
-- ACTOR MANAGEMENT FUNCTIONS
|
||||
-- Basic function to handle actors
|
||||
|
||||
|
@ -66,22 +84,72 @@ function BaseWorld:getActors()
|
|||
return self.actors
|
||||
end
|
||||
|
||||
-- MAP FUNCTIONS
|
||||
-- All map wrappers
|
||||
|
||||
function BaseWorld:getDimensions()
|
||||
if self.haveMap then
|
||||
return self.map.width * self.map.tilewidth,
|
||||
self.map.height * self.map.tileheight
|
||||
else
|
||||
return core.screen:getDimensions()
|
||||
end
|
||||
end
|
||||
|
||||
function BaseWorld:setBackgroundColor(r, g, b)
|
||||
self.backcolor = {r, g, b}
|
||||
self.haveBackgroundColor = true
|
||||
end
|
||||
|
||||
function BaseWorld:removeBackgroundColor()
|
||||
self.haveBackgroundColor = false
|
||||
end
|
||||
|
||||
function BaseWorld:getBackgroundColor()
|
||||
return self.backcolor[1]/256, self.backcolor[2]/256, self.backcolor[3]/256
|
||||
end
|
||||
|
||||
-- UPDATE FUNCTIONS
|
||||
-- All update functions
|
||||
|
||||
function BaseWorld:update(dt)
|
||||
self:updateMap(dt)
|
||||
for i,v in ipairs(self.actors) do
|
||||
v:update(dt)
|
||||
end
|
||||
end
|
||||
|
||||
function BaseWorld:updateMap(dt)
|
||||
if self.haveMap then
|
||||
self.map:update(dt)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- DRAW FUNCTIONS
|
||||
-- All function to draw the map, world and actors
|
||||
|
||||
function BaseWorld:draw(dt)
|
||||
self:drawBackgroundColor()
|
||||
self:drawMap()
|
||||
for i,v in ipairs(self.actors) do
|
||||
v:draw(dt)
|
||||
end
|
||||
end
|
||||
|
||||
function BaseWorld:drawMap()
|
||||
if self.haveMap then
|
||||
self.map:draw()
|
||||
end
|
||||
end
|
||||
|
||||
function BaseWorld:drawBackgroundColor()
|
||||
if self.haveBackgroundColor then
|
||||
local r, g, b = self.backcolor[1], self.backcolor[2], self.backcolor[3]
|
||||
love.graphics.setColor(r/256, g/256, b/256)
|
||||
love.graphics.rectangle("fill", 0, 0, 480, 272)
|
||||
utils.graphics.resetColor()
|
||||
end
|
||||
end
|
||||
|
||||
return BaseWorld
|
||||
|
|
Loading…
Reference in a new issue