diff --git a/imperium-porcorum.love/assets/maps/level1.lua b/imperium-porcorum.love/assets/maps/level1.lua index 250f1b0..aa43141 100644 --- a/imperium-porcorum.love/assets/maps/level1.lua +++ b/imperium-porcorum.love/assets/maps/level1.lua @@ -1,7 +1,7 @@ return { version = "1.2", luaversion = "5.1", - tiledversion = "1.2.2", + tiledversion = "1.2.4", orientation = "orthogonal", renderorder = "right-down", width = 210, @@ -3126,7 +3126,7 @@ return { { type = "objectgroup", id = 5, - name = "playerstart", + name = "player", visible = true, opacity = 1, offsetx = 0, diff --git a/imperium-porcorum.love/assets/maps/level1.tmx b/imperium-porcorum.love/assets/maps/level1.tmx index 9e623ae..507a0e8 100644 --- a/imperium-porcorum.love/assets/maps/level1.tmx +++ b/imperium-porcorum.love/assets/maps/level1.tmx @@ -1,5 +1,5 @@ - + @@ -779,7 +779,7 @@ - + diff --git a/imperium-porcorum.love/assets/maps/test-map2.lua b/imperium-porcorum.love/assets/maps/test-map2.lua index 2a1b779..b0043de 100644 --- a/imperium-porcorum.love/assets/maps/test-map2.lua +++ b/imperium-porcorum.love/assets/maps/test-map2.lua @@ -1,7 +1,7 @@ return { version = "1.2", luaversion = "5.1", - tiledversion = "1.2.2", + tiledversion = "1.2.4", orientation = "orthogonal", renderorder = "right-down", width = 100, @@ -182,7 +182,9 @@ return { height = 48, rotation = 0, visible = true, - properties = {} + properties = { + ["batchActors"] = true + } } } }, @@ -345,7 +347,7 @@ return { { type = "objectgroup", id = 4, - name = "playerstart", + name = "player", visible = true, opacity = 1, offsetx = 0, @@ -546,7 +548,9 @@ return { height = 32, rotation = 0, visible = true, - properties = {} + properties = { + ["batchActors"] = true + } } } } diff --git a/imperium-porcorum.love/assets/maps/test-map2.tmx b/imperium-porcorum.love/assets/maps/test-map2.tmx index 3ffb478..93172f2 100644 --- a/imperium-porcorum.love/assets/maps/test-map2.tmx +++ b/imperium-porcorum.love/assets/maps/test-map2.tmx @@ -1,5 +1,5 @@ - + @@ -111,7 +111,11 @@ - + + + + + @@ -126,7 +130,7 @@ - + @@ -144,6 +148,10 @@ - + + + + + diff --git a/imperium-porcorum.love/scenes/levels/entities/parent.lua b/imperium-porcorum.love/scenes/levels/entities/parent.lua index 20e6590..fdcfce4 100644 --- a/imperium-porcorum.love/scenes/levels/entities/parent.lua +++ b/imperium-porcorum.love/scenes/levels/entities/parent.lua @@ -63,7 +63,15 @@ function Entity:getDirection() end function Entity:isInsideView() - return self.camera:isInsideView(self.x, self.y, self.w, self.h) + local camx, camy, camw, camh = self.world.cameras:getViewCoordinate(1) + local x, y, w, h = self.x, self.y, self.w, self.h + local border = border or 0 + if (x + w + border >= camx) and (x < camx + camw + border) + and (y + h + border >= camy) and (y < camy + camh + border) then + return true + else + return false + end end return Entity diff --git a/imperium-porcorum.love/scenes/levels/entities/player.lua b/imperium-porcorum.love/scenes/levels/entities/player.lua index 877409b..440ae89 100644 --- a/imperium-porcorum.love/scenes/levels/entities/player.lua +++ b/imperium-porcorum.love/scenes/levels/entities/player.lua @@ -34,7 +34,7 @@ function Player:new(world, x, y) end function Player:getStats(playerID) - self.pigID = self.manager.players[playerID].pigID + self.pigID = playerID self.stats = game.pigmanager:getPig(1) self.playerID = playerID end @@ -131,11 +131,11 @@ end function Player:limitMovement() if (math.abs(self.xsp) >= self.maxxsp) then - self.xsp = self.maxxsp * math.sign(self.xsp) + self.xsp = self.maxxsp * utils.math.sign(self.xsp) end if (math.abs(self.ysp) >= self.maxysp) then - self.ysp = self.maxysp * math.sign(self.ysp) + self.ysp = self.maxysp * utils.math.sign(self.ysp) end end diff --git a/imperium-porcorum.love/scenes/levels/init.lua b/imperium-porcorum.love/scenes/levels/init.lua index 33e5998..ad0ddeb 100644 --- a/imperium-porcorum.love/scenes/levels/init.lua +++ b/imperium-porcorum.love/scenes/levels/init.lua @@ -4,8 +4,6 @@ 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" @@ -44,15 +42,9 @@ function Level:loadMission(levelID, missionID) 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 @@ -74,10 +66,6 @@ end function Level:draw(dt) utils.graphics.resetColor() - - if (self.pause == false) then - self.playermanager:drawHUD() - end end function Level:exit() diff --git a/imperium-porcorum.love/scenes/levels/players.lua b/imperium-porcorum.love/scenes/levels/players.lua index e790498..059bb8a 100644 --- a/imperium-porcorum.love/scenes/levels/players.lua +++ b/imperium-porcorum.love/scenes/levels/players.lua @@ -25,8 +25,8 @@ end function PlayerManager:spawnPlayer(playerID) local play = self.players[playerID] - Obj.Player(self.scene.world, self.startx, self.starty, playerID) - self.activePlayer = playerID + --Obj.Player(self.scene.world, self.startx, self.starty, playerID) + --self.activePlayer = playerID end function PlayerManager:getPlayers() @@ -47,7 +47,8 @@ function PlayerManager:getPlayerByID(id) local player if (id == nil) then - error("You must have an ID to search") + return nil + --error("You must have an ID to search") end for i,v in ipairs(itemList) do @@ -85,10 +86,6 @@ end function PlayerManager:drawHUD(dt) - if self:playerHaveObject(1) then - local player = self:getPlayerByID(1) - player:drawHUD() - end end diff --git a/imperium-porcorum.love/scenes/levels/world.lua b/imperium-porcorum.love/scenes/levels/world.lua index 94b3172..f6a944a 100644 --- a/imperium-porcorum.love/scenes/levels/world.lua +++ b/imperium-porcorum.love/scenes/levels/world.lua @@ -12,20 +12,6 @@ function World:new(scene, mapfile, actorlist) self.super.new(self, scene, actorlist, mapfile) end -function World:getStartPosition() - local startx, starty - for k, objectlayer in pairs(self.map.layers) do - if objectlayer.name == "playerstart" then - for k, object in pairs(objectlayer.objects) do - startx = object.x + (object.width/2) - starty = object.y + (object.height) - 12 - end - self.map:removeLayer("playerstart") - end - end - return startx, starty -end - -- ACTORS FUNCTIONS -- Some Bump2D Wrapper not handled by gamecore @@ -33,41 +19,4 @@ function World:changeActorData(actor) self.actors:update(actor, actor.x, actor.y, actor.w, actor.h) end --- UPDATE FUNCTIONS --- All update functions - -function World:update(dt) - self.scene.playermanager:update(dt) - self.super.update(self, dt) - self.scene.camera:update(dt) -end - --- DRAW FUNCTIONS --- All function to draw the map, world and entities - -function World:draw() - -- Ona attache puis détache la caméra pour dessiner le monde, afin que celui - -- reste "fixe" tandis que le jouer bouge. - self.scene.camera:floorCoord() - self:drawBackgroundColor() - self.scene.camera:attach() - self:drawMap() - self:drawActors() - self.scene.camera:detach() -end - -function World:drawMap() - -- Du à la manière dont fonctionne STI, on est obligé de récupérer les info - -- de position de camera pour afficher la carte par rapport à ces infos - local tx, ty = self.scene.camera:getCoord() - local scale = self.scene.camera:getScale() - local tx = tx - local ty = ty - - tx = math.floor(tx) - ty = math.floor(ty) - - self.map:draw(-tx, -ty, scale, scale) -end - return World