diff --git a/level_state.lua b/level_state.lua index 5bb8a1e..cf5d45d 100644 --- a/level_state.lua +++ b/level_state.lua @@ -2,6 +2,7 @@ Gamestate = require 'hump.gamestate' require 'level' require 'player' require 'computerplayer' +require 'nullplayer' require 'scoreboard' require 'entities/powerup' require 'entities/chaingunpowerup' @@ -47,7 +48,9 @@ function level_state:enter(previous, level_file) level_music:play() end - if self.computer then + if self.mode == "solo" then + players[2] = NullPlayer(2, "Null") + elseif self.mode == "computer" then players[2] = ComputerPlayer(2, 'Vengeance') else players[2] = Player(2, 'Nicd') @@ -61,7 +64,9 @@ function level_state:enter(previous, level_file) current_level.world:setCallbacks(begin_contact, end_contact, pre_solve, post_solve) players[1]:setPlane(current_level:getPlane(1)) - players[2]:setPlane(current_level:getPlane(2)) + if players[2] then + players[2]:setPlane(current_level:getPlane(2)) + end -- Set up scoreboards for i = 1, #players, 1 do diff --git a/menu_state.lua b/menu_state.lua index bcc4c8d..4b63521 100644 --- a/menu_state.lua +++ b/menu_state.lua @@ -56,11 +56,14 @@ end function menu_state:keypressed(key, unicode) - if key == "c" then - level_state.computer = true + if key == "1" then + level_state.mode = "solo" + Gamestate.switch(level_state) + elseif key == "c" then + level_state.mode = "computer" Gamestate.switch(level_state) else - level_state.computer = false + level_state.computer = "2player" Gamestate.switch(level_state) end end diff --git a/nullplayer.lua b/nullplayer.lua new file mode 100644 index 0000000..a579325 --- /dev/null +++ b/nullplayer.lua @@ -0,0 +1,38 @@ +Class = require 'hump/class' +require 'settings' +require 'entities/entity' + +NullPlayer = Class{ + init = function(self, id, name) + self.id = id + self.name = name + self.score = 0 + print('Null player ready for non-action!') + end; + + -- TODO: move to common base + setPlane = function(self, plane) + self.plane = Entity(0, 0, plane.level) + self.plane.health = 0 + self.plane.motorPower = 0 + plane:delete() + end; + + -- TODO: move to common base + getPlane = function(self) + return self.plane + end; + + -- TODO: move to common base + addScore = function(self, score) + end; + + update = function(self, dt) + end; + + press = function(self, key) + end; + + release = function(self, key) + end; +}