Refactor getting bubble counts
parent
4410d32776
commit
046c9f9f4e
39
main.lua
39
main.lua
|
|
@ -72,6 +72,22 @@ local function get_next_bubble_type(index, remaining_bubble_types)
|
||||||
return remaining_bubble_types[love.math.random(#remaining_bubble_types)]
|
return remaining_bubble_types[love.math.random(#remaining_bubble_types)]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_bubble_counts()
|
||||||
|
local total = 0
|
||||||
|
local count_by_type = {}
|
||||||
|
for i = 1, #game.bubble_slots do
|
||||||
|
local bubble_type = game.bubble_slots[i].bubble_type
|
||||||
|
if bubble_type ~= 0 then
|
||||||
|
total = total + 1
|
||||||
|
end
|
||||||
|
if count_by_type[bubble_type] == nil then
|
||||||
|
count_by_type[bubble_type] = 0
|
||||||
|
end
|
||||||
|
count_by_type[bubble_type] = count_by_type[bubble_type] + 1
|
||||||
|
end
|
||||||
|
return total, count_by_type
|
||||||
|
end
|
||||||
|
|
||||||
local function find_nearest_slot(x, y)
|
local function find_nearest_slot(x, y)
|
||||||
local nearest_slot_index = 0
|
local nearest_slot_index = 0
|
||||||
local min_dist = math.huge
|
local min_dist = math.huge
|
||||||
|
|
@ -182,6 +198,11 @@ function love.load(arg)
|
||||||
game.level_right = game.level_left + game.level_width
|
game.level_right = game.level_left + game.level_width
|
||||||
game.level_bottom = game.level_top + game.level_height
|
game.level_bottom = game.level_top + game.level_height
|
||||||
|
|
||||||
|
for i = 1, #game.bubble_slots do
|
||||||
|
game.bubble_slots[i].x = game.bubble_slots[i].x + game.level_left
|
||||||
|
game.bubble_slots[i].y = game.bubble_slots[i].y + game.level_top
|
||||||
|
end
|
||||||
|
|
||||||
game.launcher_image = love.graphics.newImage('images/launcher.png')
|
game.launcher_image = love.graphics.newImage('images/launcher.png')
|
||||||
game.launcher_height = game.launcher_image:getHeight()
|
game.launcher_height = game.launcher_image:getHeight()
|
||||||
game.launcher_width = game.launcher_image:getWidth()
|
game.launcher_width = game.launcher_image:getWidth()
|
||||||
|
|
@ -191,22 +212,12 @@ function love.load(arg)
|
||||||
game.launcher_offset_y = game.launcher_height / 2
|
game.launcher_offset_y = game.launcher_height / 2
|
||||||
game.launcher_rotation = -tau / 4 -- up
|
game.launcher_rotation = -tau / 4 -- up
|
||||||
|
|
||||||
game.bubble_type_counts = {}
|
local total_bubble_count, counts_by_type = get_bubble_counts()
|
||||||
local bubble_types = {}
|
local bubble_types = {}
|
||||||
for i = 1, #game.bubble_slots do
|
for bubble_type, count in pairs(counts_by_type) do
|
||||||
game.bubble_slots[i].x = game.bubble_slots[i].x + game.level_left
|
if bubble_type >= 1 and bubble_type <= 8 then
|
||||||
game.bubble_slots[i].y = game.bubble_slots[i].y + game.level_top
|
bubble_types[#bubble_types+1] = bubble_type
|
||||||
local bubble_type = game.bubble_slots[i].bubble_type
|
|
||||||
if game.bubble_type_counts[bubble_type] == nil then
|
|
||||||
game.bubble_type_counts[bubble_type] = 0
|
|
||||||
if bubble_type >= 1 and bubble_type <= 8 then
|
|
||||||
bubble_types[#bubble_types+1] = bubble_type
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
game.bubble_type_counts[bubble_type] = game.bubble_type_counts[bubble_type] + 1
|
|
||||||
end
|
|
||||||
if #bubble_types == 0 then
|
|
||||||
bubble_types = {1,2,3,4,5,6,7,8}
|
|
||||||
end
|
end
|
||||||
game.next_bubble_index = 1
|
game.next_bubble_index = 1
|
||||||
game.next_bubble = {
|
game.next_bubble = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue