Compare commits

..

No commits in common. "101ba11709441b0ac44efb7c0210c92851ff9079" and "3b70bf9b5d1deadc92430feeafb66cdfcee137e6" have entirely different histories.

15 changed files with 31 additions and 110 deletions

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -20,7 +20,6 @@ FISH_FOOD_DEAD = -13
FISH_AGE_MEDIUM = 25 -- the age, in seconds, needed for a guppy to become a medium guppy FISH_AGE_MEDIUM = 25 -- the age, in seconds, needed for a guppy to become a medium guppy
FISH_AGE_BIG = 65 -- see above, but for big FISH_AGE_BIG = 65 -- see above, but for big
FISH_AGE_KING = 15 * 60 -- see above, but for king (15 minutes)
FISH_SIZE = 6 -- how many large guppies can you fit on the screen FISH_SIZE = 6 -- how many large guppies can you fit on the screen

View File

@ -2,12 +2,11 @@ require 'const'
local self = {} local self = {}
function self.fish(x, y, type) function self.fish(x, y)
type = type or 0
local fish = { local fish = {
x = x, x = x,
y = y, y = y,
size = type, -- 0 for small, 1 for medium, 2 for big, 3 for king, 4 for carnivore size = 0, -- 0 for small, 1 for medium, 2 for big, 3 for king
eattimer = 0 + math.random() * 2, -- starts out hungry, with a 2s delay eattimer = 0 + math.random() * 2, -- starts out hungry, with a 2s delay
moneytimer = 10 + math.random() * 5, -- min 10s before it can make money moneytimer = 10 + math.random() * 5, -- min 10s before it can make money
dead = false, dead = false,

View File

@ -57,8 +57,6 @@ return function(feesh, spritescale, fishsprite)
size = 'big' size = 'big'
elseif n.size == 3 then elseif n.size == 3 then
size = 'king' size = 'king'
elseif n.size == 4 then
size = 'carnivore'
end end
local sheet = fishsprite(size, false, anim) local sheet = fishsprite(size, false, anim)

View File

@ -25,11 +25,10 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance)
if btn then if btn then
if btn.open then if btn.open then
-- sprite inside -- sprite inside
if btn.sprite == 'guppy' or btn.sprite == 'carnivore' then if btn.sprite == 'guppy' then
local sheet = fishsprite(btn.sprite == 'carnivore' and 'carnivore' or 'medium', false, 'swim') local sheet = fishsprite('medium', false, 'swim')
local frame = math.floor((love.timer.getTime() * 2) % 1 * #sheet.quads) + 1 local frame = math.floor((love.timer.getTime() * 2) % 1 * #sheet.quads) + 1
local scale = (sprites['header/buttonbg']:getWidth() / sheet.width) * 0.9 local scale = (sprites['header/buttonbg']:getWidth() / sheet.width) * 0.9
if btn.sprite == 'carnivore' then scale = scale * 0.7 end
local offset = (sprites['header/buttonbg']:getWidth() * size) / 2 local offset = (sprites['header/buttonbg']:getWidth() * size) / 2
love.graphics.draw(sheet.spriteSheet, sheet.quads[frame], x * size + offset, y * size + offset*0.75, 0, size * scale, size * scale, sheet.width/2, sheet.width/2) love.graphics.draw(sheet.spriteSheet, sheet.quads[frame], x * size + offset, y * size + offset*0.75, 0, size * scale, size * scale, sheet.width/2, sheet.width/2)
elseif btn.sprite == 'food' then elseif btn.sprite == 'food' then

View File

@ -1,11 +1,7 @@
local moneysheets = {
'coin1', 'coin2', 'star', 'diamond', 'chest'
}
return function(money, sheets, spritescale) return function(money, sheets, spritescale)
local sw, sh = love.graphics.getDimensions() local sw, sh = love.graphics.getDimensions()
for _,f in ipairs(money) do for _,f in ipairs(money) do
local sheet = sheets[moneysheets[f.type]] local sheet = sheets['money' .. (f.type)]
local x = mix(f.x * sw, sw / 9 * 8, ease.outCubic(f.collecttimer)) local x = mix(f.x * sw, sw / 9 * 8, ease.outCubic(f.collecttimer))
local y = mix(f.y * sh, HEADER_HEIGHT - 20, ease.outCubic(f.collecttimer)) local y = mix(f.y * sh, HEADER_HEIGHT - 20, ease.outCubic(f.collecttimer))
local frame = math.floor((f.time%1) * #sheet.quads) + 1 local frame = math.floor((f.time%1) * #sheet.quads) + 1

View File

@ -16,7 +16,7 @@ local headerbuttons = {
cost = 100, cost = 100,
sprite = 'guppy', sprite = 'guppy',
openanim = 1, openanim = 1,
open = false, open = true,
closed = false, closed = false,
func = function() func = function()
playSound('splash', 0.7, 0.8) playSound('splash', 0.7, 0.8)
@ -28,7 +28,7 @@ local headerbuttons = {
sprite = 'food', sprite = 'food',
tier = foodtier, tier = foodtier,
openanim = 1, openanim = 1,
open = false, open = true,
closed = false, closed = false,
func = function(self) func = function(self)
self.openanim = 0 self.openanim = 0
@ -46,7 +46,7 @@ local headerbuttons = {
sprite = 'foodcount', sprite = 'foodcount',
tier = foodcount, tier = foodcount,
openanim = 1, openanim = 1,
open = false, open = true,
closed = false, closed = false,
func = function(self) func = function(self)
self.openanim = 0 self.openanim = 0
@ -58,17 +58,6 @@ local headerbuttons = {
self.tier = foodcount self.tier = foodcount
end end
end end
},
{
cost = 1000,
sprite = 'carnivore',
openanim = 1,
open = false,
closed = false,
func = function()
playSound('splash', 0.7, 0.8)
table.insert(feesh, constr.fish(math.random(), 0.3, 4))
end
} }
} }
@ -93,14 +82,11 @@ function self.load()
sheets.buttonopen = newAnimation(sprites['header/button_open'], sprites['header/button_open']:getWidth()/3, sprites['header/button_open']:getHeight()) sheets.buttonopen = newAnimation(sprites['header/button_open'], sprites['header/button_open']:getWidth()/3, sprites['header/button_open']:getHeight())
sheets.coin1 = newAnimation(sprites['money/coin1'], sprites['money/coin1']:getWidth()/10, sprites['money/coin1']:getHeight()) sheets.money1 = newAnimation(sprites['money/coin1'], sprites['money/coin1']:getWidth()/10, sprites['money/coin1']:getHeight())
sheets.coin2 = newAnimation(sprites['money/coin2'], sprites['money/coin2']:getWidth()/10, sprites['money/coin2']:getHeight()) sheets.money2 = newAnimation(sprites['money/coin2'], sprites['money/coin2']:getWidth()/10, sprites['money/coin2']:getHeight())
sheets.star = newAnimation(sprites['money/star'], sprites['money/star']:getWidth()/10, sprites['money/star']:getHeight())
sheets.diamond = newAnimation(sprites['money/diamond'], sprites['money/diamond']:getWidth()/10, sprites['money/diamond']:getHeight())
sheets.chest = newAnimation(sprites['money/chest'], sprites['money/chest']:getWidth()/10, sprites['money/chest']:getHeight())
for i = 1, 2 do for i = 1, 2 do
table.insert(feesh, constr.fish(math.random(), math.random(), 0)) table.insert(feesh, constr.fish(math.random(), math.random()))
end end
end end
@ -122,12 +108,6 @@ function self.update(dt)
bench.startBenchmark('update_fish') bench.startBenchmark('update_fish')
require('scenes.gameplay.update.fish')(feesh, dt, food, headerbuttons, money) require('scenes.gameplay.update.fish')(feesh, dt, food, headerbuttons, money)
bench.stopBenchmark('update_fish') bench.stopBenchmark('update_fish')
if debug then
for _,b in ipairs(headerbuttons) do
b.open = true
end
end
end end
function self.draw() function self.draw()
@ -182,9 +162,6 @@ function self.mousepressed(x, y, b)
if m.type == 1 then balance = balance + 15 end if m.type == 1 then balance = balance + 15 end
if m.type == 2 then balance = balance + 35 end if m.type == 2 then balance = balance + 35 end
if m.type == 3 then balance = balance + 40 end
if m.type == 4 then balance = balance + 200 end
if m.type == 5 then balance = balance + 2000 end
return return
end end
@ -192,7 +169,7 @@ function self.mousepressed(x, y, b)
end end
if b == 1 and y > HEADER_HEIGHT and #food < foodcount then if b == 1 and y > HEADER_HEIGHT and #food < foodcount then
if balance >= 5 or debug then if balance >= 5 then
table.insert(food, constr.food(x/love.graphics.getWidth(), y/love.graphics.getHeight(), foodtier)) table.insert(food, constr.food(x/love.graphics.getWidth(), y/love.graphics.getHeight(), foodtier))
playSound('dropfood') playSound('dropfood')
balance = balance - 5 balance = balance - 5
@ -211,7 +188,7 @@ function self.mousepressed(x, y, b)
if hovered then if hovered then
if headerbuttons[i] and headerbuttons[i].open then if headerbuttons[i] and headerbuttons[i].open then
if balance >= headerbuttons[i].cost or debug then if balance >= headerbuttons[i].cost then
headerbuttons[i].func(headerbuttons[i]) headerbuttons[i].func(headerbuttons[i])
playSound('buttonclick') playSound('buttonclick')
balance = balance - headerbuttons[i].cost balance = balance - headerbuttons[i].cost

View File

@ -32,49 +32,26 @@ return function(feesh, dt, food, headerbuttons, money)
if n.eattimer <= 0 and not n.dead then -- needs to follow something if n.eattimer <= 0 and not n.dead then -- needs to follow something
local mx, my local mx, my
if n.eattimer <= 0 then if n.eattimer <= 0 then
if n.size == 4 then -- carnivore if n.shortestfood and food[n.shortestfood] then
if n.shortestfood and feesh[n.shortestfood] then local f = food[n.shortestfood]
local f = feesh[n.shortestfood] mx, my = f.x, f.y
mx, my = f.x, f.y elseif frame % FISH_FOOD_CHECK_FREQ == 0 then
elseif frame % FISH_FOOD_CHECK_FREQ == 0 then local minfood = 0
local minfood = 0 local mindist = 9e9
local mindist = 9e9
for i,f in ipairs(feesh) do for i,f in ipairs(food) do
if f.size == 0 then local dist = math.sqrt(math.pow(math.abs(f.x - n.render.x), 2) + math.pow(math.abs(f.y - n.render.y), 2))
local dist = math.sqrt(math.pow(math.abs(f.render.x - n.render.x), 2) + math.pow(math.abs(f.render.y - n.render.y), 2)) if dist < mindist then
if dist < mindist then mindist = dist
mindist = dist minfood = i
minfood = i
end
end
end
if minfood ~= 0 then
n.shortestfood = minfood
end end
end end
else
if n.shortestfood and food[n.shortestfood] then
local f = food[n.shortestfood]
mx, my = f.x, f.y
elseif frame % FISH_FOOD_CHECK_FREQ == 0 then
local minfood = 0
local mindist = 9e9
for i,f in ipairs(food) do if minfood ~= 0 then
local dist = math.sqrt(math.pow(math.abs(f.x - n.render.x), 2) + math.pow(math.abs(f.y - n.render.y), 2)) n.shortestfood = minfood
if dist < mindist then
mindist = dist
minfood = i
end
end
if minfood ~= 0 then
n.shortestfood = minfood
end
end end
end end
end end
if mx and my then if mx and my then
angle = math.deg(math.atan2(my - n.y, mx - n.x)) + math.random(-FISH_FOLLOW_RANDOM, FISH_FOLLOW_RANDOM) angle = math.deg(math.atan2(my - n.y, mx - n.x)) + math.random(-FISH_FOLLOW_RANDOM, FISH_FOLLOW_RANDOM)
@ -125,8 +102,6 @@ return function(feesh, dt, food, headerbuttons, money)
if n.size > 0 then if n.size > 0 then
local type = 2 local type = 2
if n.size == 1 then type = 1 end if n.size == 1 then type = 1 end
if n.size == 3 then type = 3 end
if n.size == 4 then type = 4 end
table.insert(money, constr.money(n.render.x, n.render.y, type)) table.insert(money, constr.money(n.render.x, n.render.y, type))
end end
end end
@ -148,27 +123,13 @@ return function(feesh, dt, food, headerbuttons, money)
bench.stopBenchmark('update_fish_position') bench.stopBenchmark('update_fish_position')
bench.startBenchmark('update_fish_colission') bench.startBenchmark('update_fish_colission')
if n.size == 4 then if n.shortestfood and food[n.shortestfood] and frame % FISH_COLISSION_CHECK_FREQ == 0 then
if n.shortestfood and feesh[n.shortestfood] and frame % FISH_COLISSION_CHECK_FREQ == 0 and not n.dead then local f = food[n.shortestfood]
local f = feesh[n.shortestfood] if f then
local dist = math.abs(n.render.x - f.render.x) + math.abs(n.render.y - f.render.y)
if dist < FOOD_HITBOX then
playSound('chomp', 1, 1 + math.random() * 0.1 - 0.05)
table.remove(feesh, n.shortestfood)
n.eattimer = FISH_FOOD_3_COOLDOWN
n.render.eattimer = 0
n.shortestfood = -1
end
end
else
if n.shortestfood and food[n.shortestfood] and frame % FISH_COLISSION_CHECK_FREQ == 0 and not n.dead then
local f = food[n.shortestfood]
local dist = math.abs(n.render.x - f.x) + math.abs(n.render.y - f.y) local dist = math.abs(n.render.x - f.x) + math.abs(n.render.y - f.y)
if dist < FOOD_HITBOX then if dist < FOOD_HITBOX then
playSound('slurp', 1, 1 + math.random() * 0.1 - 0.05) playSound('slurp')
table.remove(food, n.shortestfood) table.remove(food, n.shortestfood)
local cooldowns = {FISH_FOOD_1_COOLDOWN, FISH_FOOD_2_COOLDOWN, FISH_FOOD_3_COOLDOWN} local cooldowns = {FISH_FOOD_1_COOLDOWN, FISH_FOOD_2_COOLDOWN, FISH_FOOD_3_COOLDOWN}
@ -197,14 +158,6 @@ return function(feesh, dt, food, headerbuttons, money)
headerbuttons[3].open = true headerbuttons[3].open = true
headerbuttons[3].openanim = 0 headerbuttons[3].openanim = 0
end end
if not headerbuttons[4].open and not headerbuttons[4].closed then
headerbuttons[4].open = true
headerbuttons[4].openanim = 0
end
end
if n.lifetime > FISH_AGE_KING and n.size == 2 then
n.size = 3
playSound('grow')
end end
end end
end end