Merge branch 'fuse-controller' of Kazhnuz/imperium-porcorum into master

This commit is contained in:
Kazhnuz 2019-03-03 17:12:44 +01:00 committed by Gitea
commit 13bf047614
9 changed files with 153 additions and 240 deletions

View File

@ -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

View File

@ -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

View File

@ -1,2 +0,0 @@
function Level:pauseUpdate()
end

View File

@ -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

View File

@ -1,6 +0,0 @@
function level_loadSounds()
assets:clearSFX()
assets:newSFX("jump")
assets:newSFX("break")
assets:newSFX("collectcoin")
end

View File

@ -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