project-witchy/imperium-porcorum.love/scenes/levels/init.lua

88 lines
1.9 KiB
Lua

-- On charge le module de scene et créer l'objet de scene des niveaux
local Scene = require "core.modules.scenes"
local Level = Scene:extend()
-- Chargement des controllers
local World = require "scenes.levels.world"
local Camera = require "scenes.levels.camera"
local PlayerManager = require "scenes.levels.players"
local leveldatas = require "datas.levels"
-- INIT FUNCTIONS
-- Initialize and launch the level
function Level:new(levelID, missionID)
self:reset()
Level.super.new(self)
self.assets:batchImport("scenes.levels.assets")
previousMenu = previous
self:loadMission(levelID, missionID)
self:register()
end
function Level:reset()
self.datas = {}
self.pause = false
self.map = nil
self.backcolor = {0, 0, 0}
end
function Level:loadMission(levelID, missionID)
local datas, missiondatas
self.datas = require("datas.levels." .. levelID)
local mapfile = "assets.maps." .. self.datas.mapfile
self.world = World(self, self.datas.mapfile, "scenes.levels.entities")
self.world:loadMap()
self.assets:setMusic("assets/music/" .. self.datas.music)
self:launchMission()
end
function Level:launchMission()
self.playermanager = PlayerManager(self)
--self:resetSpawnAndEntities()
self.assets:silence()
self.assets:playMusic()
self.playermanager:addPlayer(1)
self.playermanager:spawnPlayer(1)
self.camera = Camera(self, self.playermanager.startx, self.playermanager.starty)
end
-- UPDATE FUNCTIONS
-- Update the level
function Level:update(dt)
local keys = self.sources[1].keys
if keys["start"].isPressed then
self.world:setActivity(self.pause)
self.assets:setActivity(self.pause)
self.pause = (self.pause == false)
end
end
-- DRAW FUNCTIONS
-- draw level elements
function Level:draw(dt)
utils.graphics.resetColor()
if (self.pause == false) then
self.playermanager:drawHUD()
end
end
function Level:exit()
self.controller:reset()
end
return Level