Moved game loop from main.lua to specific script, sliced it into parts
This commit is contained in:
parent
d0e849bf3d
commit
0b18fcd369
|
@ -18,3 +18,5 @@ require "data/scripts/objects"
|
|||
require "data/scripts/debug"
|
||||
require "data/scripts/keybind"
|
||||
require "data/scripts/pause"
|
||||
-- game loop
|
||||
require "data/scripts/game"
|
||||
|
|
|
@ -4,7 +4,7 @@ Camera = {
|
|||
height = 0
|
||||
}
|
||||
|
||||
function Camera:CenterAt(x,y,cx,cy)
|
||||
function Camera:positionCenterAt(x,y,cx,cy)
|
||||
self.pos.x = x-self.width/game.scale/2
|
||||
self.pos.y = y-self.height/game.scale/2
|
||||
if not (cx == nil or cy == nil) then
|
||||
|
@ -19,7 +19,7 @@ function Camera:CenterAt(x,y,cx,cy)
|
|||
self.pos.y = math.floor(self.pos.y)
|
||||
end
|
||||
|
||||
function Camera:ScreenAt(x,y)
|
||||
function Camera:positionAt(x,y)
|
||||
self.pos.x = math.floor(x/self.width)*self.width
|
||||
self.pos.y = math.floor(y/self.height)*self.height
|
||||
end
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
function stepEditor()
|
||||
AnimateTiles()
|
||||
end
|
||||
|
||||
function stepGame()
|
||||
-- GAME STEP
|
||||
if not do_pause then
|
||||
SetCollisionFlags(main_Player)
|
||||
for _, enty in pairs(LoadedEntities) do
|
||||
enty:Smart()
|
||||
enty:DoPhysics()
|
||||
end
|
||||
AnimateTiles()
|
||||
Camera:positionCenterAt(main_Player.pos.x, main_Player.pos.y)
|
||||
--camera:positionAt(main_Player.pos.x, main_Player.pos.y,game.width,game.height)
|
||||
end
|
||||
end
|
||||
|
||||
function drawEditor()
|
||||
if game.width ~= love.graphics.getWidth() or game.height ~= love.graphics.getHeight() then
|
||||
Camera.height = game.height
|
||||
Camera.width = game.width
|
||||
Canvas.Darkness:release()
|
||||
Canvas.Darkness = CreateDarkness()
|
||||
love.graphics.setCanvas(Canvas.Darkness)
|
||||
SetDarkness()
|
||||
love.graphics.setCanvas()
|
||||
end
|
||||
|
||||
gameworldDraw()
|
||||
end
|
||||
|
||||
function drawGame()
|
||||
-- saveproof to game resize
|
||||
if game.width ~= love.graphics.getWidth() or game.height ~= love.graphics.getHeight() then
|
||||
Camera.height = game.height
|
||||
Camera.width = game.width
|
||||
Canvas.Darkness:release()
|
||||
Canvas.Darkness = CreateDarkness()
|
||||
love.graphics.setCanvas(Canvas.Darkness)
|
||||
SetDarkness()
|
||||
love.graphics.setCanvas()
|
||||
end
|
||||
|
||||
gameworldDraw()
|
||||
gameworldLighting()
|
||||
|
||||
-- HUD
|
||||
textScale = 0.5
|
||||
|
||||
--debug
|
||||
if debug then DebugUI() end
|
||||
if debug_collision then
|
||||
DebugColisions()
|
||||
DebugEntities()
|
||||
end
|
||||
|
||||
-- reset color
|
||||
if do_pause then PauseUI() end
|
||||
end
|
||||
|
||||
function gameworldDraw()
|
||||
local pcr, pcg, pcb, pca = love.graphics.getColor()
|
||||
|
||||
love.graphics.scale(game.scale,game.scale)
|
||||
love.graphics.setColor(1,1,1,1)
|
||||
LevelDisplayBackground()
|
||||
for _, enty in pairs(LoadedEntities) do
|
||||
enty:HandleAnimation()
|
||||
end
|
||||
LevelDisplayForeground()
|
||||
|
||||
love.graphics.setColor(pcr, pcg, pcb, pca)
|
||||
end
|
||||
|
||||
function gameworldLighting()
|
||||
-- work on lighting canvas
|
||||
love.graphics.setCanvas(Canvas.Darkness)
|
||||
SetDarkness()
|
||||
DoLights()
|
||||
DoBorder()
|
||||
-- apply to game canvas
|
||||
love.graphics.setColor(1,1,1,1)
|
||||
love.graphics.setCanvas()
|
||||
love.graphics.scale(1,1)
|
||||
DrawDarkness()
|
||||
end
|
72
main.lua
72
main.lua
|
@ -65,21 +65,9 @@ function love.update(dt)
|
|||
|
||||
|
||||
if editor_mode then
|
||||
|
||||
|
||||
AnimateTiles()
|
||||
stepEditor()
|
||||
else
|
||||
-- GAME STEP
|
||||
if not do_pause then
|
||||
SetCollisionFlags(main_Player)
|
||||
for _, enty in pairs(LoadedEntities) do
|
||||
enty:Smart()
|
||||
enty:DoPhysics()
|
||||
end
|
||||
AnimateTiles()
|
||||
Camera:CenterAt(main_Player.pos.x, main_Player.pos.y)
|
||||
--camera:ScreenAt(main_Player.pos.x, main_Player.pos.y,game.width,game.height)
|
||||
end
|
||||
stepGame()
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -96,7 +84,6 @@ function love.wheelmoved(_, y)
|
|||
end
|
||||
|
||||
function love.keypressed(key)
|
||||
|
||||
if key == "escape" then
|
||||
if do_pause then
|
||||
do_pause = false
|
||||
|
@ -139,60 +126,13 @@ function love.keypressed(key)
|
|||
end
|
||||
|
||||
function love.draw()
|
||||
|
||||
-- saveproof to game resize
|
||||
if game.width ~= love.graphics.getWidth() or game.height ~= love.graphics.getHeight() then
|
||||
game.width = love.graphics.getWidth()
|
||||
game.height = love.graphics.getHeight()
|
||||
Camera.height = game.height
|
||||
Camera.width = game.width
|
||||
Canvas.Darkness:release()
|
||||
Canvas.Darkness = CreateDarkness()
|
||||
love.graphics.setCanvas(Canvas.Darkness)
|
||||
SetDarkness()
|
||||
love.graphics.setCanvas()
|
||||
end
|
||||
|
||||
-- GAME WORLD
|
||||
love.graphics.scale(game.scale,game.scale)
|
||||
love.graphics.setColor(1,1,1,1)
|
||||
LevelDisplayBackground()
|
||||
for _, enty in pairs(LoadedEntities) do
|
||||
enty:HandleAnimation()
|
||||
if editor_mode then
|
||||
drawEditor()
|
||||
else
|
||||
drawGame()
|
||||
end
|
||||
LevelDisplayForeground()
|
||||
|
||||
-- Save color
|
||||
local pcr, pcg, pcb, pca = love.graphics.getColor()
|
||||
|
||||
love.graphics.setCanvas(Canvas.Darkness)
|
||||
SetDarkness()
|
||||
DoLights()
|
||||
DoBorder()
|
||||
|
||||
-- reset to screen
|
||||
love.graphics.setColor(1,1,1,1)
|
||||
love.graphics.setCanvas()
|
||||
love.graphics.scale(1,1)
|
||||
DrawDarkness()
|
||||
-- HUD
|
||||
-- Scale control
|
||||
textScale = 0.5
|
||||
|
||||
--debug
|
||||
if debug then DebugUI() end
|
||||
if debug_collision then
|
||||
love.graphics.setCanvas(Canvas.Darkness)
|
||||
SetDarkness()
|
||||
love.graphics.setCanvas()
|
||||
--DrawDarkness()
|
||||
DebugColisions()
|
||||
DebugEntities()
|
||||
end
|
||||
|
||||
-- reset color
|
||||
love.graphics.setColor(pcr,pcg,pcb,pca)
|
||||
local pcr, pcg, pcb, pca = love.graphics.getColor()
|
||||
if do_pause then PauseUI() end
|
||||
love.graphics.setColor(pcr,pcg,pcb,pca)
|
||||
end
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
(X) REHANDLE ANIMATIONS
|
||||
(X) 3 COLOR PALETTE (GOLD)
|
||||
(X) MASKS FUNCTIONALITY
|
||||
(X) MAKE PHYSICS CONSISTENT
|
||||
(X) MAKE HITBOXES
|
||||
(X) PHYSICS BY FRAME
|
||||
( ) MAKE ARROW CANVAS SO THAT
|
||||
ARROWS WHEN STUCK CAN BE STORED
|
||||
AS IMAGE AND NOT ENTITIES!!!
|
||||
|
@ -10,6 +13,3 @@ AS IMAGE AND NOT ENTITIES!!!
|
|||
(~) DO FAIRY
|
||||
( ) DO FLIES
|
||||
( ) DO UI
|
||||
> (X) MAKE PHYSICS CONSISTENT
|
||||
> > (X) MAKE HITBOXES
|
||||
> > (X) PHYSICS BY FRAME
|
||||
|
|
Loading…
Reference in New Issue