Allow resetting the level after game over
parent
22ce65d003
commit
214a73c2e0
145
main.lua
145
main.lua
|
|
@ -293,68 +293,15 @@ local function find_unattached_bubbles()
|
||||||
return unattached
|
return unattached
|
||||||
end
|
end
|
||||||
|
|
||||||
function love.load(arg)
|
local function start_level()
|
||||||
if arg[#arg] == "debug" then require("lldebugger").start() end
|
|
||||||
|
|
||||||
game.window_width, game.window_height = love.graphics.getDimensions()
|
|
||||||
game.window_center_x = game.window_width / 2
|
|
||||||
game.window_center_y = game.window_height / 2
|
|
||||||
|
|
||||||
game.score_font = love.graphics.setNewFont(50)
|
|
||||||
game.points_font = love.graphics.newFont(30)
|
|
||||||
|
|
||||||
game.game_over_image = love.graphics.newImage('images/game_over.png')
|
|
||||||
game.game_over = false
|
game.game_over = false
|
||||||
game.fade_to_grey = {time = 0, duration = 120, progress = 0.0}
|
|
||||||
game.paused = false
|
game.paused = false
|
||||||
|
game.fade_to_grey = {time = 0, duration = 120, progress = 0.0}
|
||||||
game.frame_by_frame = false
|
game.frame_by_frame = false
|
||||||
|
game.frame_counter = 0
|
||||||
game.bubble_diameter = 60
|
game.timer = 0
|
||||||
game.bubble_radius = game.bubble_diameter / 2
|
|
||||||
game.bubble_speed = 960 * delta_time -- 960 px/s
|
|
||||||
|
|
||||||
-- vertical distance between bubble center points
|
|
||||||
game.row_gap = math.ceil(math.sqrt(
|
|
||||||
(game.bubble_diameter * game.bubble_diameter) -
|
|
||||||
(game.bubble_radius * game.bubble_radius)
|
|
||||||
))
|
|
||||||
|
|
||||||
game.background_image = love.graphics.newImage('images/background.png')
|
|
||||||
game.background_width = game.background_image:getWidth()
|
|
||||||
|
|
||||||
game.bubble_images = {
|
|
||||||
love.graphics.newImage('images/red.png'), -- 1
|
|
||||||
love.graphics.newImage('images/orange.png'), -- 2
|
|
||||||
love.graphics.newImage('images/yellow.png'), -- 3
|
|
||||||
love.graphics.newImage('images/green.png'), -- 4
|
|
||||||
love.graphics.newImage('images/blue.png'), -- 5
|
|
||||||
love.graphics.newImage('images/purple.png'), -- 6
|
|
||||||
love.graphics.newImage('images/pink.png'), -- 7
|
|
||||||
love.graphics.newImage('images/white.png') -- 8
|
|
||||||
}
|
|
||||||
|
|
||||||
game.score = 0
|
game.score = 0
|
||||||
game.points_display = {}
|
game.points_display = {}
|
||||||
|
|
||||||
game.levels = {}
|
|
||||||
game.levels[1] = {
|
|
||||||
{1,1,1,3,3,2,2,2},
|
|
||||||
{ 1,1,3,3,3,2,2 },
|
|
||||||
{4,4,7,8,8,6,5,5},
|
|
||||||
{ 4,7,7,8,6,6,5 },
|
|
||||||
{0,0,0,0,0,0,0,0},
|
|
||||||
{ 0,0,0,0,0,0,0 },
|
|
||||||
{0,0,0,0,0,0,0,0},
|
|
||||||
{ 0,0,0,0,0,0,0 },
|
|
||||||
{0,0,0,0,0,0,0,0},
|
|
||||||
{ 0,0,0,0,0,0,0 },
|
|
||||||
{0,0,0,0,0,0,0,0},
|
|
||||||
{ 0,0,0,0,0,0,0 },
|
|
||||||
{0,0,0,0,0,0,0,0},
|
|
||||||
{ 0,0,0,0,0,0,0 }
|
|
||||||
}
|
|
||||||
game.current_level = 1
|
|
||||||
|
|
||||||
game.bubbles_launched = 0
|
game.bubbles_launched = 0
|
||||||
game.ceiling_drops_after = 5
|
game.ceiling_drops_after = 5
|
||||||
game.ceiling_drop_tween = nil
|
game.ceiling_drop_tween = nil
|
||||||
|
|
@ -381,17 +328,10 @@ function love.load(arg)
|
||||||
game.bubble_slots[i].y = game.bubble_slots[i].y + game.ceiling_bottom
|
game.bubble_slots[i].y = game.bubble_slots[i].y + game.ceiling_bottom
|
||||||
end
|
end
|
||||||
|
|
||||||
game.launcher_image = love.graphics.newImage('images/launcher.png')
|
|
||||||
game.launcher_height = game.launcher_image:getHeight()
|
|
||||||
game.launcher_width = game.launcher_image:getWidth()
|
|
||||||
game.launcher_x = game.window_width / 2
|
game.launcher_x = game.window_width / 2
|
||||||
game.launcher_y = game.level_top + game.level_height + game.bubble_diameter
|
game.launcher_y = game.level_top + game.level_height + game.bubble_diameter
|
||||||
game.launcher_offset_x = 90 -- rotation point in launcher image
|
|
||||||
game.launcher_offset_y = game.launcher_height / 2
|
|
||||||
game.launcher_rotation = -tau / 4 -- up
|
game.launcher_rotation = -tau / 4 -- up
|
||||||
|
|
||||||
game.show_aim_guide = true
|
|
||||||
game.aim_guide = {}
|
|
||||||
local total_bubble_count, counts_by_type = get_bubble_counts()
|
local total_bubble_count, counts_by_type = get_bubble_counts()
|
||||||
local bubble_types = {}
|
local bubble_types = {}
|
||||||
for bubble_type, count in pairs(counts_by_type) do
|
for bubble_type, count in pairs(counts_by_type) do
|
||||||
|
|
@ -408,8 +348,75 @@ function love.load(arg)
|
||||||
}
|
}
|
||||||
game.next_bubble_type = get_next_bubble_type(2, bubble_types)
|
game.next_bubble_type = get_next_bubble_type(2, bubble_types)
|
||||||
|
|
||||||
|
game.show_aim_guide = true
|
||||||
|
game.aim_guide = {}
|
||||||
|
generate_aim_guide(game.window_width / 2, game.window_height / 2)
|
||||||
|
|
||||||
game.bursting_bubbles = {}
|
game.bursting_bubbles = {}
|
||||||
game.falling_bubbles = {}
|
game.falling_bubbles = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function love.load(arg, unfiltered_arg)
|
||||||
|
if arg[#arg] == "debug" then require("lldebugger").start() end
|
||||||
|
|
||||||
|
game.window_width, game.window_height = love.graphics.getDimensions()
|
||||||
|
game.window_center_x = game.window_width / 2
|
||||||
|
game.window_center_y = game.window_height / 2
|
||||||
|
|
||||||
|
game.score_font = love.graphics.setNewFont(50)
|
||||||
|
game.points_font = love.graphics.newFont(30)
|
||||||
|
|
||||||
|
game.game_over_image = love.graphics.newImage('images/game_over.png')
|
||||||
|
|
||||||
|
game.bubble_diameter = 60
|
||||||
|
game.bubble_radius = game.bubble_diameter / 2
|
||||||
|
game.bubble_speed = 960 * delta_time -- 960 px/s = 8 px/frame
|
||||||
|
|
||||||
|
-- vertical distance between bubble center points
|
||||||
|
game.row_gap = math.ceil(math.sqrt(
|
||||||
|
(game.bubble_diameter * game.bubble_diameter) -
|
||||||
|
(game.bubble_radius * game.bubble_radius)
|
||||||
|
))
|
||||||
|
|
||||||
|
game.background_image = love.graphics.newImage('images/background.png')
|
||||||
|
game.background_width = game.background_image:getWidth()
|
||||||
|
|
||||||
|
game.bubble_images = {
|
||||||
|
love.graphics.newImage('images/red.png'), -- 1
|
||||||
|
love.graphics.newImage('images/orange.png'), -- 2
|
||||||
|
love.graphics.newImage('images/yellow.png'), -- 3
|
||||||
|
love.graphics.newImage('images/green.png'), -- 4
|
||||||
|
love.graphics.newImage('images/blue.png'), -- 5
|
||||||
|
love.graphics.newImage('images/purple.png'), -- 6
|
||||||
|
love.graphics.newImage('images/pink.png'), -- 7
|
||||||
|
love.graphics.newImage('images/white.png') -- 8
|
||||||
|
}
|
||||||
|
|
||||||
|
game.levels = {}
|
||||||
|
game.levels[1] = {
|
||||||
|
{1,1,1,3,3,2,2,2},
|
||||||
|
{ 1,1,3,3,3,2,2 },
|
||||||
|
{4,4,7,8,8,6,5,5},
|
||||||
|
{ 4,7,7,8,6,6,5 },
|
||||||
|
{0,0,0,0,0,0,0,0},
|
||||||
|
{ 0,0,0,0,0,0,0 },
|
||||||
|
{0,0,0,0,0,0,0,0},
|
||||||
|
{ 0,0,0,0,0,0,0 },
|
||||||
|
{0,0,0,0,0,0,0,0},
|
||||||
|
{ 0,0,0,0,0,0,0 },
|
||||||
|
{0,0,0,0,0,0,0,0},
|
||||||
|
{ 0,0,0,0,0,0,0 },
|
||||||
|
{0,0,0,0,0,0,0,0},
|
||||||
|
{ 0,0,0,0,0,0,0 }
|
||||||
|
}
|
||||||
|
game.current_level = 1
|
||||||
|
|
||||||
|
game.launcher_image = love.graphics.newImage('images/launcher.png')
|
||||||
|
game.launcher_height = game.launcher_image:getHeight()
|
||||||
|
game.launcher_width = game.launcher_image:getWidth()
|
||||||
|
game.launcher_offset_x = 90 -- rotation point in launcher image
|
||||||
|
game.launcher_offset_y = game.launcher_height / 2
|
||||||
|
|
||||||
|
|
||||||
game.shader = love.graphics.newShader [[
|
game.shader = love.graphics.newShader [[
|
||||||
uniform float progress;
|
uniform float progress;
|
||||||
|
|
@ -423,6 +430,8 @@ function love.load(arg)
|
||||||
return pixel;
|
return pixel;
|
||||||
}
|
}
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
start_level()
|
||||||
end
|
end
|
||||||
|
|
||||||
function love.update(dt)
|
function love.update(dt)
|
||||||
|
|
@ -891,7 +900,11 @@ function love.draw(alpha)
|
||||||
end
|
end
|
||||||
|
|
||||||
function love.mousepressed(x, y, button, is_touch, presses)
|
function love.mousepressed(x, y, button, is_touch, presses)
|
||||||
if not game.game_over and button == 1 and game.current_bubble and
|
if game.game_over then
|
||||||
|
start_level()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if button == 1 and game.current_bubble and
|
||||||
game.current_bubble.x == game.launcher_x and
|
game.current_bubble.x == game.launcher_x and
|
||||||
game.current_bubble.y == game.launcher_y and
|
game.current_bubble.y == game.launcher_y and
|
||||||
game.current_bubble.velocity_x == 0 and
|
game.current_bubble.velocity_x == 0 and
|
||||||
|
|
@ -931,6 +944,8 @@ end
|
||||||
function love.keypressed(key, scan_code, is_repeat)
|
function love.keypressed(key, scan_code, is_repeat)
|
||||||
if key == 'escape' then
|
if key == 'escape' then
|
||||||
love.event.quit()
|
love.event.quit()
|
||||||
|
elseif game.game_over or key == 'r' then
|
||||||
|
start_level()
|
||||||
elseif key == 'space' then
|
elseif key == 'space' then
|
||||||
game.paused = not game.paused
|
game.paused = not game.paused
|
||||||
elseif key == 'n' and game.paused then
|
elseif key == 'n' and game.paused then
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue