Merge branch 'fuse-controller' of Kazhnuz/imperium-porcorum into master
This commit is contained in:
commit
13bf047614
|
@ -1,66 +0,0 @@
|
|||
function Level:setDebugMode(debugmode)
|
||||
self.debugmode = debugmode
|
||||
self.drawdebug = false
|
||||
end
|
||||
|
||||
function Level:debugKey(key)
|
||||
if (key == "l") and self.drawdebug then
|
||||
local mousex, mousey = self:cameraWorldCoord(love.mouse.getPosition())
|
||||
mousex, mousey = pixeliseCoord(mousex, mousey, 16)
|
||||
Loot(self.world, 0, 0, mousex, mousey)
|
||||
end
|
||||
|
||||
if (key == "r") and self.drawdebug then
|
||||
self:launchMission()
|
||||
end
|
||||
|
||||
if (key == "tab") then
|
||||
self.drawdebug = invertBool(self.drawdebug)
|
||||
end
|
||||
end
|
||||
|
||||
function Level:debugPlayerCoord()
|
||||
local playerList = self:getPlayers()
|
||||
local string = "total players : " .. #playerList .. "\n"
|
||||
for i,v in ipairs(playerList) do
|
||||
v.id = i
|
||||
local x, y = utils.math.floorCoord(v.x, v.y)
|
||||
string = string .. "p" .. v.id .. " : " .. x .. ";" .. y .. "\n"
|
||||
end
|
||||
return string
|
||||
end
|
||||
|
||||
function Level:drawHitbox(box, r, g, b)
|
||||
drawBox(box.x, box.y, box.w, box.h, r, g, b)
|
||||
end
|
||||
|
||||
function Level:debugDrawCursor()
|
||||
local mousex, mousey = self:cameraWorldCoord(love.mouse.getPosition())
|
||||
mousex, mousey = pixeliseCoord(mousex, mousey, 16)
|
||||
mousex, mousey = self:cameraCoords(mousex, mousey)
|
||||
color = {255,255,255}
|
||||
|
||||
drawBox(mousex, mousey, 16, 16, 255, 255, 255)
|
||||
end
|
||||
|
||||
function Level:drawCollisions()
|
||||
if (self.drawdebug == true) then
|
||||
for _,block in ipairs(self.blocks) do
|
||||
if (block.collType == "wall") then
|
||||
self:drawHitbox(block, 0,0,0)
|
||||
elseif (block.collType == "platform") then
|
||||
self:drawHitbox(block, 64, 64, 64)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Level:drawDebugHUD()
|
||||
if (self.drawdebug == true) then
|
||||
self:debugDrawCursor()
|
||||
assets.fonts["small"]:set()
|
||||
local playercoord = self:debugPlayerCoord()
|
||||
local entityNumbers = self.world:countItems()
|
||||
love.graphics.print(playercoord .. self.activeObjects .. "/" .. entityNumbers, 8, 8)
|
||||
end
|
||||
end
|
|
@ -1,94 +0,0 @@
|
|||
local Level = Object:extend() -- On créer la classe des entitées, c'est la classe de base
|
||||
|
||||
local World = require "scenes.levels.controller.world"
|
||||
local Camera = require "scenes.levels.controller.camera"
|
||||
local PlayerManager = require "scenes.levels.controller.players"
|
||||
|
||||
local leveldatas = require "datas.levels"
|
||||
|
||||
-- INIT FUNCTIONS
|
||||
-- Initialize and launch the level
|
||||
|
||||
function Level:new()
|
||||
self:reset()
|
||||
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 = {}
|
||||
datas = leveldatas[levelID]
|
||||
self.datas.realm = datas.realm
|
||||
self.datas.level = datas.name
|
||||
|
||||
missiondatas = datas.missions[missionID]
|
||||
self.datas.missions = {}
|
||||
self.datas.missions.name = missiondatas.missionName
|
||||
self.datas.missions.desc = missiondatas.description
|
||||
self.datas.missions.map = missiondatas.mapfile
|
||||
self.datas.missions.gravity = missiondatas.gravity
|
||||
self.datas.missions.autorun = missiondatas.autorun
|
||||
self.datas.missions.objectiveID = missiondatas.objectiveID
|
||||
self.datas.missions.startx = missiondatas.startx
|
||||
self.datas.missions.starty = missiondatas.starty
|
||||
self.datas.missions.music = missiondatas.music
|
||||
|
||||
self.world = World(self, self.datas.missions.map)
|
||||
self.world:load()
|
||||
assets:setMusic(self.datas.missions.music)
|
||||
|
||||
self:launchMission()
|
||||
end
|
||||
|
||||
function Level:launchMission()
|
||||
self.playermanager = PlayerManager(self)
|
||||
--self:resetSpawnAndEntities()
|
||||
assets:silence()
|
||||
assets:playMusic()
|
||||
|
||||
self.playermanager:addPlayer(1)
|
||||
self.playermanager:spawnPlayer(1)
|
||||
|
||||
self.camera = Camera(self, self.playermanager.startx, self.playermanager.starty)
|
||||
|
||||
self.score = 0
|
||||
self.gold = 0
|
||||
end
|
||||
|
||||
-- UPDATE FUNCTIONS
|
||||
-- Update the level
|
||||
|
||||
function Level:update(dt)
|
||||
self.keys = core.input.keys
|
||||
if (self.pause == false) then
|
||||
self.playermanager:update(dt)
|
||||
self.world:update(dt)
|
||||
assets:update(dt)
|
||||
self.camera:update(dt)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- DRAW FUNCTIONS
|
||||
-- draw level elements
|
||||
|
||||
function Level:draw(dt)
|
||||
utils.graphics.resetColor()
|
||||
|
||||
self.camera:floorCoord()
|
||||
self.world:draw()
|
||||
|
||||
if (self.pause == false) then
|
||||
self.playermanager:drawHUD()
|
||||
end
|
||||
end
|
||||
|
||||
return Level
|
|
@ -1,2 +0,0 @@
|
|||
function Level:pauseUpdate()
|
||||
end
|
|
@ -1,34 +1,168 @@
|
|||
-- On charge les fichiers contenant les script gérant le gameplay
|
||||
require "scenes.levels.sounds"
|
||||
require "scenes.levels.sprites"
|
||||
|
||||
local Level = require "scenes.levels.controller"
|
||||
|
||||
-- On charge le module de scene et créer l'objet de scene des niveaux
|
||||
local Scene = require "core.modules.scenes"
|
||||
local LevelScene = Scene:extend()
|
||||
local Level = Scene:extend()
|
||||
|
||||
function LevelScene:new(levelID, missionID)
|
||||
self.controller = Level()
|
||||
LevelScene.super.new(self)
|
||||
level_loadSounds()
|
||||
loadSprites()
|
||||
-- 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:loadSounds()
|
||||
self:loadSprites()
|
||||
previousMenu = previous
|
||||
self.controller:loadMission(levelID, missionID)
|
||||
self:loadMission(levelID, missionID)
|
||||
|
||||
self:register()
|
||||
end
|
||||
|
||||
function LevelScene:update(dt)
|
||||
self.controller:update(dt)
|
||||
function Level:reset()
|
||||
self.datas = {}
|
||||
|
||||
self.pause = false
|
||||
self.map = nil
|
||||
self.backcolor = {0, 0, 0}
|
||||
|
||||
end
|
||||
|
||||
function LevelScene:draw(dt)
|
||||
self.controller:draw(dt)
|
||||
function Level:loadMission(levelID, missionID)
|
||||
local datas, missiondatas
|
||||
self.datas = {}
|
||||
datas = leveldatas[levelID]
|
||||
self.datas.realm = datas.realm
|
||||
self.datas.level = datas.name
|
||||
|
||||
missiondatas = datas.missions[missionID]
|
||||
self.datas.missions = {}
|
||||
self.datas.missions.name = missiondatas.missionName
|
||||
self.datas.missions.desc = missiondatas.description
|
||||
self.datas.missions.map = missiondatas.mapfile
|
||||
self.datas.missions.gravity = missiondatas.gravity
|
||||
self.datas.missions.autorun = missiondatas.autorun
|
||||
self.datas.missions.objectiveID = missiondatas.objectiveID
|
||||
self.datas.missions.startx = missiondatas.startx
|
||||
self.datas.missions.starty = missiondatas.starty
|
||||
self.datas.missions.music = missiondatas.music
|
||||
|
||||
self.world = World(self, self.datas.missions.map)
|
||||
self.world:load()
|
||||
assets:setMusic(self.datas.missions.music)
|
||||
|
||||
self:launchMission()
|
||||
end
|
||||
|
||||
function LevelScene:exit()
|
||||
function Level:loadSounds()
|
||||
assets:clearSFX()
|
||||
assets:newSFX("jump")
|
||||
assets:newSFX("break")
|
||||
assets:newSFX("collectcoin")
|
||||
end
|
||||
|
||||
function Level:loadCochonSprites(name)
|
||||
assets:addSprite(name, 32, 48, "pigs/")
|
||||
assets.sprites[name]:newAnimation(2, 1, 0.2)
|
||||
assets.sprites[name]:newAnimation('1-4', 1, 0.1)
|
||||
assets.sprites[name]:newAnimation(5, 1, 0.2)
|
||||
assets.sprites[name]:newAnimation('7-8', 1, 0.03, 'pauseAtEnd')
|
||||
assets.sprites[name]:newAnimation(7, 1, 0.2)
|
||||
end
|
||||
|
||||
function Level:loadSprites()
|
||||
assets:clearSprites()
|
||||
|
||||
assets:addSprite("coin", 16, 16)
|
||||
assets.sprites["coin"]:newAnimation(1, '1-4', 0.2)
|
||||
assets.sprites["coin"]:newAnimation(2, '1-4', 0.2)
|
||||
assets.sprites["coin"]:newAnimation(3, '1-4', 0.2)
|
||||
|
||||
assets:addSprite("weapon", 16, 16)
|
||||
assets.sprites["weapon"]:newAnimation(1, 2, 0.1)
|
||||
assets.sprites["weapon"]:newAnimation(2, 2, 0.1)
|
||||
|
||||
assets:addSprite("sparkle", 16, 16)
|
||||
assets.sprites["sparkle"]:newAnimation('1-5', 1, 0.08, 'pauseAtEnd')
|
||||
|
||||
self:loadCochonSprites("cochon")
|
||||
self:loadCochonSprites("bling-bling")
|
||||
|
||||
assets:addSprite("block", 16, 16)
|
||||
assets.sprites["block"]:newAnimation(1, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(2, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(3, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(4, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(5, 1, 0.08)
|
||||
|
||||
assets:addSprite("debris", 8, 8)
|
||||
assets.sprites["debris"]:newAnimation(1, 1, 0.08)
|
||||
|
||||
assets:addSprite("poof", 16, 16)
|
||||
assets.sprites["poof"]:newAnimation('1-6', 1, 0.08, 'pauseAtEnd')
|
||||
|
||||
assets:addSprite("lifeicons", 16, 16, "pigs/")
|
||||
assets.sprites["lifeicons"]:newAnimation(1, 1, 0.08)
|
||||
assets.sprites["lifeicons"]:newAnimation(2, 1, 0.08)
|
||||
assets.sprites["lifeicons"]:newAnimation(3, 1, 0.08)
|
||||
|
||||
assets:clearFonts()
|
||||
assets:addFont("medium", "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|} ", 1)
|
||||
assets:addFont("small", "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ", 1)
|
||||
|
||||
assets:addTextBox("yellowbox")
|
||||
assets:addProgressBar("greenbar", "medium", "small")
|
||||
assets:addProgressBar("bluebar", "medium", "small")
|
||||
end
|
||||
|
||||
function Level:launchMission()
|
||||
self.playermanager = PlayerManager(self)
|
||||
--self:resetSpawnAndEntities()
|
||||
assets:silence()
|
||||
assets:playMusic()
|
||||
|
||||
self.playermanager:addPlayer(1)
|
||||
self.playermanager:spawnPlayer(1)
|
||||
|
||||
self.camera = Camera(self, self.playermanager.startx, self.playermanager.starty)
|
||||
|
||||
self.score = 0
|
||||
self.gold = 0
|
||||
end
|
||||
|
||||
|
||||
-- UPDATE FUNCTIONS
|
||||
-- Update the level
|
||||
|
||||
function Level:update(dt)
|
||||
if (self.pause == false) then
|
||||
self.playermanager:update(dt)
|
||||
self.world:update(dt)
|
||||
assets:update(dt)
|
||||
self.camera:update(dt)
|
||||
end
|
||||
end
|
||||
|
||||
-- DRAW FUNCTIONS
|
||||
-- draw level elements
|
||||
|
||||
function Level:draw(dt)
|
||||
utils.graphics.resetColor()
|
||||
|
||||
self.camera:floorCoord()
|
||||
self.world:draw()
|
||||
|
||||
if (self.pause == false) then
|
||||
self.playermanager:drawHUD()
|
||||
end
|
||||
end
|
||||
|
||||
function Level:exit()
|
||||
self.controller:reset()
|
||||
end
|
||||
|
||||
return LevelScene
|
||||
return Level
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
function level_loadSounds()
|
||||
assets:clearSFX()
|
||||
assets:newSFX("jump")
|
||||
assets:newSFX("break")
|
||||
assets:newSFX("collectcoin")
|
||||
end
|
|
@ -1,53 +0,0 @@
|
|||
function loadSprites()
|
||||
assets:clearSprites()
|
||||
|
||||
assets:addSprite("coin", 16, 16)
|
||||
assets.sprites["coin"]:newAnimation(1, '1-4', 0.2)
|
||||
assets.sprites["coin"]:newAnimation(2, '1-4', 0.2)
|
||||
assets.sprites["coin"]:newAnimation(3, '1-4', 0.2)
|
||||
|
||||
assets:addSprite("weapon", 16, 16)
|
||||
assets.sprites["weapon"]:newAnimation(1, 2, 0.1)
|
||||
assets.sprites["weapon"]:newAnimation(2, 2, 0.1)
|
||||
|
||||
assets:addSprite("sparkle", 16, 16)
|
||||
assets.sprites["sparkle"]:newAnimation('1-5', 1, 0.08, 'pauseAtEnd')
|
||||
|
||||
loadCochonSprites("cochon")
|
||||
loadCochonSprites("bling-bling")
|
||||
|
||||
assets:addSprite("block", 16, 16)
|
||||
assets.sprites["block"]:newAnimation(1, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(2, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(3, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(4, 1, 0.08)
|
||||
assets.sprites["block"]:newAnimation(5, 1, 0.08)
|
||||
|
||||
assets:addSprite("debris", 8, 8)
|
||||
assets.sprites["debris"]:newAnimation(1, 1, 0.08)
|
||||
|
||||
assets:addSprite("poof", 16, 16)
|
||||
assets.sprites["poof"]:newAnimation('1-6', 1, 0.08, 'pauseAtEnd')
|
||||
|
||||
assets:addSprite("lifeicons", 16, 16, "pigs/")
|
||||
assets.sprites["lifeicons"]:newAnimation(1, 1, 0.08)
|
||||
assets.sprites["lifeicons"]:newAnimation(2, 1, 0.08)
|
||||
assets.sprites["lifeicons"]:newAnimation(3, 1, 0.08)
|
||||
|
||||
assets:clearFonts()
|
||||
assets:addFont("medium", "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|} ", 1)
|
||||
assets:addFont("small", "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ", 1)
|
||||
|
||||
assets:addTextBox("yellowbox")
|
||||
assets:addProgressBar("greenbar", "medium", "small")
|
||||
assets:addProgressBar("bluebar", "medium", "small")
|
||||
end
|
||||
|
||||
function loadCochonSprites(name)
|
||||
assets:addSprite(name, 32, 48, "pigs/")
|
||||
assets.sprites[name]:newAnimation(2, 1, 0.2)
|
||||
assets.sprites[name]:newAnimation('1-4', 1, 0.1)
|
||||
assets.sprites[name]:newAnimation(5, 1, 0.2)
|
||||
assets.sprites[name]:newAnimation('7-8', 1, 0.03, 'pauseAtEnd')
|
||||
assets.sprites[name]:newAnimation(7, 1, 0.2)
|
||||
end
|
Loading…
Reference in New Issue