Add basic level state
This commit is contained in:
parent
b055603e8b
commit
919acb04b1
4 changed files with 138 additions and 2 deletions
46
level.lua
Normal file
46
level.lua
Normal file
|
@ -0,0 +1,46 @@
|
|||
Class = require 'hump.class'
|
||||
require 'settings'
|
||||
|
||||
-- A level manages the level datastructure containing static blocks and level
|
||||
-- specific data like global physics
|
||||
|
||||
-- Reset color to this before drawing each object
|
||||
draw_base_color = {255, 255, 255, 255}
|
||||
|
||||
Level = Class{
|
||||
init = function(self)
|
||||
self.name = 'Default'
|
||||
self.entity_list = {}
|
||||
|
||||
self.backgroundColor = {135, 206, 250, 255}
|
||||
|
||||
self.world = love.physics.newWorld(GRAVITY_X, GRAVITY_Y, true)
|
||||
end;
|
||||
|
||||
delete = function(self)
|
||||
for key, entity in pairs(self.entity_list) do
|
||||
entity:delete()
|
||||
end
|
||||
self.entity_list = nil
|
||||
end;
|
||||
|
||||
activate = function(self)
|
||||
|
||||
end;
|
||||
|
||||
drawEntities = function(self)
|
||||
for key, entity in pairs(self.entity_list) do
|
||||
love.graphics.setColor(draw_base_color)
|
||||
entity:draw()
|
||||
end
|
||||
love.graphics.setColor(draw_base_color)
|
||||
end;
|
||||
|
||||
updateEntities = function(self, dt)
|
||||
self.world:update(dt)
|
||||
|
||||
for key, entity in pairs(self.entity_list) do
|
||||
entity:update(dt)
|
||||
end
|
||||
end;
|
||||
}
|
88
level_state.lua
Normal file
88
level_state.lua
Normal file
|
@ -0,0 +1,88 @@
|
|||
Gamestate = require 'hump.gamestate'
|
||||
require 'level'
|
||||
|
||||
level_state = {}
|
||||
|
||||
players = {}
|
||||
level_music = nil
|
||||
|
||||
function level_state:init()
|
||||
end
|
||||
|
||||
function level_state:enter(previous, level_file)
|
||||
entity_id = 1
|
||||
if level_music == nil then
|
||||
--level_music = love.audio.newSource("resources/audio/freeze.ogg")
|
||||
--level_music:setVolume(0.5)
|
||||
--level_music:setLooping(true)
|
||||
--level_music:play()
|
||||
end
|
||||
|
||||
love.graphics.setBackgroundColor({0, 0, 0, 255})
|
||||
current_level = Level()
|
||||
current_level.world:setCallbacks(begin_contact, end_contact, pre_solve, post_solve)
|
||||
end
|
||||
|
||||
|
||||
function level_state:draw()
|
||||
current_level:drawEntities()
|
||||
end
|
||||
|
||||
|
||||
function level_state:update(dt)
|
||||
if current_level.reset == true then
|
||||
resetLevel()
|
||||
return
|
||||
end
|
||||
|
||||
current_level:updateEntities(dt)
|
||||
end
|
||||
|
||||
|
||||
function level_state:focus(bool)
|
||||
|
||||
end
|
||||
|
||||
|
||||
function level_state:leave(bool)
|
||||
current_level:delete()
|
||||
current_level = nil
|
||||
end
|
||||
|
||||
function level_state:keypressed(key, unicode)
|
||||
-- Ctrl + R restarts current level.
|
||||
if key == "r"
|
||||
and ( love.keyboard.isDown("lctrl")
|
||||
or love.keyboard.isDown("rctrl") ) then
|
||||
|
||||
current_level.reset = true
|
||||
else
|
||||
-- Do stuff
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function level_state:keyreleased(key, unicode)
|
||||
player:keyreleased(key)
|
||||
end
|
||||
|
||||
|
||||
function level_state:mousepressed(x, y, button)
|
||||
|
||||
end
|
||||
|
||||
function begin_contact(a, b, coll)
|
||||
|
||||
end
|
||||
|
||||
function end_contact(a, b, coll)
|
||||
|
||||
end
|
||||
|
||||
function pre_solve(a, b, coll)
|
||||
|
||||
end
|
||||
|
||||
function end_solve(a, b, coll)
|
||||
|
||||
end
|
3
main.lua
3
main.lua
|
@ -1,5 +1,6 @@
|
|||
Gamestate = require 'hump.gamestate'
|
||||
require 'menu_state'
|
||||
require 'level_state'
|
||||
|
||||
-- Initialize game global variables and switch to menu state
|
||||
|
||||
|
@ -12,7 +13,7 @@ function love.load()
|
|||
love.physics.setMeter(30)
|
||||
|
||||
Gamestate.registerEvents()
|
||||
Gamestate.switch(menu_state)
|
||||
Gamestate.switch(level_state)
|
||||
end
|
||||
|
||||
function love.quit()
|
||||
|
|
|
@ -3,4 +3,5 @@
|
|||
|
||||
PIXELS_PER_METER = 10
|
||||
|
||||
|
||||
GRAVITY_X = 0
|
||||
GRAVITY_Y = 9.81
|
||||
|
|
Loading…
Reference in a new issue