Compare commits
No commits in common. "0cf9e962b6798a604f2d8bf6de111d92344f14c2" and "101ba11709441b0ac44efb7c0210c92851ff9079" have entirely different histories.
0cf9e962b6
...
101ba11709
15 changed files with 49 additions and 191 deletions
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
Before Width: | Height: | Size: 807 B |
Binary file not shown.
Before Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.4 KiB |
|
@ -7,11 +7,10 @@ function self.fish(x, y, type)
|
||||||
local fish = {
|
local fish = {
|
||||||
x = x,
|
x = x,
|
||||||
y = y,
|
y = y,
|
||||||
size = 2, -- 0 for small, 1 for medium, 2 for big, 3 for king, 4 for carnivore
|
size = type, -- 0 for small, 1 for medium, 2 for big, 3 for king, 4 for carnivore
|
||||||
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,
|
||||||
star = false,
|
|
||||||
|
|
||||||
lifetime = 0,
|
lifetime = 0,
|
||||||
|
|
||||||
|
@ -55,7 +54,7 @@ function self.food(x, y, type)
|
||||||
speed = 0.2,
|
speed = 0.2,
|
||||||
time = math.random(),
|
time = math.random(),
|
||||||
deathtimer = 0,
|
deathtimer = 0,
|
||||||
type = type -- 1 = tier 1, 2 = tier 2, 3 = tier 3, 4 = star potion
|
type = type
|
||||||
}
|
}
|
||||||
|
|
||||||
return food
|
return food
|
||||||
|
|
19
main.lua
19
main.lua
|
@ -20,7 +20,6 @@ sprites = {}
|
||||||
sound_path = {}
|
sound_path = {}
|
||||||
music_path = {}
|
music_path = {}
|
||||||
fonts = {}
|
fonts = {}
|
||||||
cursors = {}
|
|
||||||
|
|
||||||
debug = false
|
debug = false
|
||||||
|
|
||||||
|
@ -49,22 +48,10 @@ function love.load()
|
||||||
fonts.default = love.graphics.newFont(12)
|
fonts.default = love.graphics.newFont(12)
|
||||||
|
|
||||||
if scene.load then scene.load() end
|
if scene.load then scene.load() end
|
||||||
|
|
||||||
cursors.default = love.mouse.newCursor('assets/sprites/cursor/pointer.png', sprites['cursor/pointer']:getWidth()/2, sprites['cursor/pointer']:getHeight()/2)
|
|
||||||
cursors.hover = love.mouse.newCursor('assets/sprites/cursor/hand.png', sprites['cursor/hand']:getWidth()/2, sprites['cursor/hand']:getHeight()/2)
|
|
||||||
cursors.drag = love.mouse.newCursor('assets/sprites/cursor/dragging.png', sprites['cursor/dragging']:getWidth()/2, sprites['cursor/dragging']:getHeight()/2)
|
|
||||||
|
|
||||||
love.mouse.setCursor(cursors.default)
|
|
||||||
end
|
|
||||||
|
|
||||||
local cursor
|
|
||||||
function setCursor(mouse)
|
|
||||||
cursor = mouse
|
|
||||||
end
|
end
|
||||||
|
|
||||||
frame = 0
|
frame = 0
|
||||||
function love.update(dt)
|
function love.update(dt)
|
||||||
cursor = nil
|
|
||||||
frame = frame + 1
|
frame = frame + 1
|
||||||
bench.update()
|
bench.update()
|
||||||
tick.update(dt)
|
tick.update(dt)
|
||||||
|
@ -72,12 +59,6 @@ function love.update(dt)
|
||||||
bench.startBenchmark('update')
|
bench.startBenchmark('update')
|
||||||
if scene.update then scene.update(dt) end
|
if scene.update then scene.update(dt) end
|
||||||
bench.stopBenchmark('update')
|
bench.stopBenchmark('update')
|
||||||
|
|
||||||
if cursor then
|
|
||||||
love.mouse.setCursor(cursor)
|
|
||||||
else
|
|
||||||
love.mouse.setCursor(cursors.default)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function love.draw()
|
function love.draw()
|
||||||
|
|
|
@ -65,24 +65,11 @@ return function(feesh, spritescale, fishsprite)
|
||||||
local sadsheet = fishsprite(size, true, anim)
|
local sadsheet = fishsprite(size, true, anim)
|
||||||
|
|
||||||
local alpha = n.render.hungry == 1 and 0 or 1
|
local alpha = n.render.hungry == 1 and 0 or 1
|
||||||
local allalpha = 1
|
love.graphics.setColor(1, 1, 1, alpha - n.render.deathanim)
|
||||||
if n.star then allalpha = 0.8 end
|
|
||||||
love.graphics.setColor(1, 1, 1, (alpha - n.render.deathanim) * allalpha)
|
|
||||||
love.graphics.draw(sheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sample.quads), 1)], x, y, angle, sizex * spritescale, spritescale, sample.width/2, sample.height/2)
|
love.graphics.draw(sheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sample.quads), 1)], x, y, angle, sizex * spritescale, spritescale, sample.width/2, sample.height/2)
|
||||||
love.graphics.setColor(1, 1, 1, (n.render.hungry - n.render.deathanim) * allalpha)
|
love.graphics.setColor(1, 1, 1, n.render.hungry - n.render.deathanim)
|
||||||
love.graphics.draw(sadsheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sample.quads), 1)], x, y, angle, sizex * spritescale, spritescale, sample.width/2, sample.height/2)
|
love.graphics.draw(sadsheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sample.quads), 1)], x, y, angle, sizex * spritescale, spritescale, sample.width/2, sample.height/2)
|
||||||
|
|
||||||
if n.star then
|
|
||||||
local mult = (math.sin(love.timer.getTime() / 4) / 2 + 0.5) * 0.1 + 0.9
|
|
||||||
|
|
||||||
love.graphics.setBlendMode('add')
|
|
||||||
love.graphics.setColor(1, 1, 1, (alpha - n.render.deathanim) * mult)
|
|
||||||
love.graphics.draw(sheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sample.quads), 1)], x, y, angle, sizex * spritescale, spritescale, sample.width/2, sample.height/2)
|
|
||||||
love.graphics.setColor(1, 1, 1, (n.render.hungry - n.render.deathanim) * mult)
|
|
||||||
love.graphics.draw(sadsheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sample.quads), 1)], x, y, angle, sizex * spritescale, spritescale, sample.width/2, sample.height/2)
|
|
||||||
love.graphics.setBlendMode('alpha')
|
|
||||||
end
|
|
||||||
|
|
||||||
love.graphics.setColor(1, 1, 1)
|
love.graphics.setColor(1, 1, 1)
|
||||||
if debug then love.graphics.print(shrt(n.eattimer), x + 20, y + 20) end
|
if debug then love.graphics.print(shrt(n.eattimer), x + 20, y + 20) end
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
local sheetNames = {
|
return function(food, sheets, spritescale)
|
||||||
'food1', 'food2', 'food3', 'potion'
|
|
||||||
}
|
|
||||||
|
|
||||||
return function(food, sheets, spritescale, starpotionequipped)
|
|
||||||
local sw, sh = love.graphics.getDimensions()
|
local sw, sh = love.graphics.getDimensions()
|
||||||
for _,f in ipairs(food) do
|
for _,f in ipairs(food) do
|
||||||
local sheet = sheets[sheetNames[f.type]]
|
local sheet = sheets['food' .. (f.type)]
|
||||||
local x = f.x * sw
|
local x = f.x * sw
|
||||||
local y = f.y * sh
|
local y = f.y * sh
|
||||||
local frame = math.floor((f.time%1) * #sheet.quads) + 1
|
local frame = math.floor((f.time%1) * #sheet.quads) + 1
|
||||||
|
@ -14,10 +10,4 @@ return function(food, sheets, spritescale, starpotionequipped)
|
||||||
|
|
||||||
love.graphics.draw(sheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sheet.quads), 1)], x, y, 0, spritescale, spritescale, sheet.width/2, sheet.height/2)
|
love.graphics.draw(sheet.spriteSheet, sheet.quads[math.max(math.min(frame, #sheet.quads), 1)], x, y, 0, spritescale, spritescale, sheet.width/2, sheet.height/2)
|
||||||
end
|
end
|
||||||
|
|
||||||
if starpotionequipped then
|
|
||||||
local sheet = sheets.potion
|
|
||||||
love.graphics.setColor(1, 1, 1, 0.8)
|
|
||||||
love.graphics.draw(sheet.spriteSheet, sheet.quads[1], love.mouse.getX(), love.mouse.getY(), 0, spritescale, spritescale, sheet.width/2, sheet.height/2)
|
|
||||||
end
|
|
||||||
end
|
end
|
|
@ -1,15 +1,10 @@
|
||||||
return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyflashtimer)
|
return function(headerheight, fishsprite, headerbuttons, sheets, balance)
|
||||||
local sw, sh = love.graphics.getDimensions()
|
local sw, sh = love.graphics.getDimensions()
|
||||||
local base = sprites['header/base']
|
local base = sprites['header/base']
|
||||||
local size = headerheight / HEADER_HEIGHT
|
local size = headerheight / HEADER_HEIGHT
|
||||||
love.graphics.setColor(1, 1, 1, 1)
|
love.graphics.setColor(1, 1, 1, 1)
|
||||||
love.graphics.draw(base, 0, 0, 0, size, size)
|
love.graphics.draw(base, 0, 0, 0, size, size)
|
||||||
|
|
||||||
local tooltip
|
|
||||||
local tooltipText
|
|
||||||
local tooltipx
|
|
||||||
local tooltipy
|
|
||||||
|
|
||||||
-- the game is making me do this. im sorry
|
-- the game is making me do this. im sorry
|
||||||
local x = 19
|
local x = 19
|
||||||
local y = 3
|
local y = 3
|
||||||
|
@ -21,24 +16,12 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyf
|
||||||
-- draw nothing
|
-- draw nothing
|
||||||
elseif hovered and love.mouse.isDown(1) then
|
elseif hovered and love.mouse.isDown(1) then
|
||||||
love.graphics.draw(sprites['header/buttonbg_down'], x * size, y * size, 0, size, size)
|
love.graphics.draw(sprites['header/buttonbg_down'], x * size, y * size, 0, size, size)
|
||||||
if not tooltip then tooltip = btn.tooltip end
|
|
||||||
elseif hovered then
|
elseif hovered then
|
||||||
love.graphics.draw(sprites['header/buttonbg_hover'], x * size, y * size, 0, size, size)
|
love.graphics.draw(sprites['header/buttonbg_hover'], x * size, y * size, 0, size, size)
|
||||||
if not tooltip then tooltip = btn.tooltip end
|
|
||||||
else
|
else
|
||||||
love.graphics.draw(sprites['header/buttonbg'], x * size, y * size, 0, size, size)
|
love.graphics.draw(sprites['header/buttonbg'], x * size, y * size, 0, size, size)
|
||||||
end
|
end
|
||||||
|
|
||||||
if tooltip and btn and not tooltipText then
|
|
||||||
if not btn.tooltipText then
|
|
||||||
btn.tooltipText = love.graphics.newText(fonts.pix, tooltip)
|
|
||||||
end
|
|
||||||
|
|
||||||
tooltipText = btn.tooltipText
|
|
||||||
tooltipx = x + sprites['header/buttonbg']:getWidth() * size * 0.5 - tooltipText:getWidth()/2
|
|
||||||
tooltipy = y + sprites['header/buttonbg']:getWidth() * size
|
|
||||||
end
|
|
||||||
|
|
||||||
if btn then
|
if btn then
|
||||||
if btn.open then
|
if btn.open then
|
||||||
-- sprite inside
|
-- sprite inside
|
||||||
|
@ -68,12 +51,6 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyf
|
||||||
|
|
||||||
love.graphics.setColor(0, 1, 0)
|
love.graphics.setColor(0, 1, 0)
|
||||||
love.graphics.printf(btn.tier + 1, round(x * size), round(y * size + offset*0.75 - fonts.continuum:getHeight()/2), round(sprites['header/buttonbg']:getWidth() * size), 'center')
|
love.graphics.printf(btn.tier + 1, round(x * size), round(y * size + offset*0.75 - fonts.continuum:getHeight()/2), round(sprites['header/buttonbg']:getWidth() * size), 'center')
|
||||||
elseif btn.sprite == 'starpotion' then
|
|
||||||
local sheet = sheets.potion
|
|
||||||
|
|
||||||
local scale = (sprites['header/buttonbg']:getWidth() / sheet.width) * 0.65
|
|
||||||
local offset = (sprites['header/buttonbg']:getWidth() * size) / 2
|
|
||||||
love.graphics.draw(sheet.spriteSheet, sheet.quads[1], x * size + offset, y * size + offset*0.75, 0, size * scale, size * scale, sheet.width/2, sheet.width/2)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- price
|
-- price
|
||||||
|
@ -107,22 +84,9 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyf
|
||||||
end
|
end
|
||||||
|
|
||||||
-- money count
|
-- money count
|
||||||
if love.timer.getTime() % 0.25 < 0.125 and moneyflashtimer > 0 then love.graphics.draw(sprites['header/moneyflash'], sw * 0.851, (HEADER_HEIGHT - 29) * size, 0, size, size) end
|
|
||||||
love.graphics.setFont(fonts.continuum)
|
love.graphics.setFont(fonts.continuum)
|
||||||
love.graphics.setColor(179/255, 254/255, 89/255)
|
love.graphics.setColor(179/255, 254/255, 89/255)
|
||||||
local leftpad = 100
|
local leftpad = 100
|
||||||
love.graphics.printf(balance, round(sw * 0.965 - leftpad), round((HEADER_HEIGHT - 25) * size), leftpad, 'right')
|
love.graphics.printf(balance, round(sw * 0.965 - leftpad), round(HEADER_HEIGHT - 25), leftpad, 'right')
|
||||||
|
|
||||||
-- tooltips
|
|
||||||
if tooltipText then
|
|
||||||
love.graphics.setColor(254/255, 254/255, 199/255)
|
|
||||||
love.graphics.rectangle('fill', round(tooltipx - 5), round(tooltipy - 5), round(tooltipText:getWidth() + 10), round(tooltipText:getHeight() + 10))
|
|
||||||
love.graphics.setColor(2/255, 2/255, 2/255)
|
|
||||||
love.graphics.rectangle('line', round(tooltipx - 5), round(tooltipy - 5), round(tooltipText:getWidth() + 10), round(tooltipText:getHeight() + 10))
|
|
||||||
|
|
||||||
love.graphics.setFont(fonts.pix)
|
|
||||||
love.graphics.draw(tooltipText, round(tooltipx), round(tooltipy))
|
|
||||||
end
|
|
||||||
|
|
||||||
love.graphics.setFont(fonts.default)
|
love.graphics.setFont(fonts.default)
|
||||||
end
|
end
|
|
@ -11,15 +11,11 @@ local balance = 100
|
||||||
local foodtier = 1
|
local foodtier = 1
|
||||||
local foodcount = 1
|
local foodcount = 1
|
||||||
|
|
||||||
local starpotionequipped = false
|
|
||||||
local moneyflashtimer = 0
|
|
||||||
|
|
||||||
local headerbuttons = {
|
local headerbuttons = {
|
||||||
{
|
{
|
||||||
cost = 100,
|
cost = 100,
|
||||||
sprite = 'guppy',
|
sprite = 'guppy',
|
||||||
openanim = 1,
|
openanim = 1,
|
||||||
tooltip = 'buy guppy',
|
|
||||||
open = false,
|
open = false,
|
||||||
closed = false,
|
closed = false,
|
||||||
func = function()
|
func = function()
|
||||||
|
@ -32,7 +28,6 @@ local headerbuttons = {
|
||||||
sprite = 'food',
|
sprite = 'food',
|
||||||
tier = foodtier,
|
tier = foodtier,
|
||||||
openanim = 1,
|
openanim = 1,
|
||||||
tooltip = 'upgrade food quality',
|
|
||||||
open = false,
|
open = false,
|
||||||
closed = false,
|
closed = false,
|
||||||
func = function(self)
|
func = function(self)
|
||||||
|
@ -51,7 +46,6 @@ local headerbuttons = {
|
||||||
sprite = 'foodcount',
|
sprite = 'foodcount',
|
||||||
tier = foodcount,
|
tier = foodcount,
|
||||||
openanim = 1,
|
openanim = 1,
|
||||||
tooltip = 'upgrade food quantity',
|
|
||||||
open = false,
|
open = false,
|
||||||
closed = false,
|
closed = false,
|
||||||
func = function(self)
|
func = function(self)
|
||||||
|
@ -68,7 +62,6 @@ local headerbuttons = {
|
||||||
{
|
{
|
||||||
cost = 1000,
|
cost = 1000,
|
||||||
sprite = 'carnivore',
|
sprite = 'carnivore',
|
||||||
tooltip = 'buy carnivore',
|
|
||||||
openanim = 1,
|
openanim = 1,
|
||||||
open = false,
|
open = false,
|
||||||
closed = false,
|
closed = false,
|
||||||
|
@ -76,17 +69,6 @@ local headerbuttons = {
|
||||||
playSound('splash', 0.7, 0.8)
|
playSound('splash', 0.7, 0.8)
|
||||||
table.insert(feesh, constr.fish(math.random(), 0.3, 4))
|
table.insert(feesh, constr.fish(math.random(), 0.3, 4))
|
||||||
end
|
end
|
||||||
},
|
|
||||||
{
|
|
||||||
cost = 250,
|
|
||||||
sprite = 'starpotion',
|
|
||||||
tooltip = 'buy star potion',
|
|
||||||
openanim = 1,
|
|
||||||
open = true,
|
|
||||||
closed = false,
|
|
||||||
func = function()
|
|
||||||
starpotionequipped = true
|
|
||||||
end
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +90,6 @@ function self.load()
|
||||||
sheets.food1 = newAnimation(sprites['food/1'], sprites['food/1']:getWidth()/10, sprites['food/1']:getHeight())
|
sheets.food1 = newAnimation(sprites['food/1'], sprites['food/1']:getWidth()/10, sprites['food/1']:getHeight())
|
||||||
sheets.food2 = newAnimation(sprites['food/2'], sprites['food/2']:getWidth()/10, sprites['food/2']:getHeight())
|
sheets.food2 = newAnimation(sprites['food/2'], sprites['food/2']:getWidth()/10, sprites['food/2']:getHeight())
|
||||||
sheets.food3 = newAnimation(sprites['food/3'], sprites['food/3']:getWidth()/10, sprites['food/3']:getHeight())
|
sheets.food3 = newAnimation(sprites['food/3'], sprites['food/3']:getWidth()/10, sprites['food/3']:getHeight())
|
||||||
sheets.potion = newAnimation(sprites['food/potion'], sprites['food/potion']:getWidth()/10, sprites['food/potion']:getHeight())
|
|
||||||
|
|
||||||
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())
|
||||||
|
|
||||||
|
@ -125,26 +106,9 @@ end
|
||||||
|
|
||||||
function self.update(dt)
|
function self.update(dt)
|
||||||
bench.startBenchmark('update_buttons')
|
bench.startBenchmark('update_buttons')
|
||||||
|
for _,btn in ipairs(headerbuttons) do
|
||||||
moneyflashtimer = moneyflashtimer - dt
|
|
||||||
|
|
||||||
local x = 19
|
|
||||||
local y = 3
|
|
||||||
for b,btn in ipairs(headerbuttons) do
|
|
||||||
btn.openanim = btn.openanim + dt * 6
|
btn.openanim = btn.openanim + dt * 6
|
||||||
local size = (love.graphics.getWidth()/640)
|
|
||||||
local hovered = mouseOverBox(x * size, y * size, sprites['header/buttonbg']:getWidth() * size, sprites['header/buttonbg']:getHeight() * size)
|
|
||||||
|
|
||||||
if btn.open and hovered then
|
|
||||||
setCursor(cursors.hover)
|
|
||||||
end
|
|
||||||
|
|
||||||
local incr = 69 -- its like button positions but forcefully shoved into a recursive function :D
|
|
||||||
if b == 2 then incr = 57 end
|
|
||||||
if b >= 3 then incr = 73 end
|
|
||||||
x = x + incr
|
|
||||||
end
|
end
|
||||||
|
|
||||||
bench.stopBenchmark('update_buttons')
|
bench.stopBenchmark('update_buttons')
|
||||||
|
|
||||||
bench.startBenchmark('update_food')
|
bench.startBenchmark('update_food')
|
||||||
|
@ -152,7 +116,7 @@ function self.update(dt)
|
||||||
bench.stopBenchmark('update_food')
|
bench.stopBenchmark('update_food')
|
||||||
|
|
||||||
bench.startBenchmark('update_money')
|
bench.startBenchmark('update_money')
|
||||||
require('scenes.gameplay.update.money')(money, dt, sheets)
|
require('scenes.gameplay.update.money')(money, dt)
|
||||||
bench.stopBenchmark('update_money')
|
bench.stopBenchmark('update_money')
|
||||||
|
|
||||||
bench.startBenchmark('update_fish')
|
bench.startBenchmark('update_fish')
|
||||||
|
@ -189,7 +153,7 @@ function self.draw()
|
||||||
bench.stopBenchmark('render_shadow')
|
bench.stopBenchmark('render_shadow')
|
||||||
|
|
||||||
bench.startBenchmark('render_food')
|
bench.startBenchmark('render_food')
|
||||||
require('scenes.gameplay.draw.food')(food, sheets, spritescale, starpotionequipped)
|
require('scenes.gameplay.draw.food')(food, sheets, spritescale)
|
||||||
bench.stopBenchmark('render_food')
|
bench.stopBenchmark('render_food')
|
||||||
|
|
||||||
-- all the fish
|
-- all the fish
|
||||||
|
@ -199,7 +163,7 @@ function self.draw()
|
||||||
bench.stopBenchmark('render_tank')
|
bench.stopBenchmark('render_tank')
|
||||||
|
|
||||||
bench.startBenchmark('render_header')
|
bench.startBenchmark('render_header')
|
||||||
require('scenes.gameplay.draw.header')(headerheight, fishsprite, headerbuttons, sheets, balance, moneyflashtimer)
|
require('scenes.gameplay.draw.header')(headerheight, fishsprite, headerbuttons, sheets, balance)
|
||||||
bench.stopBenchmark('render_header')
|
bench.stopBenchmark('render_header')
|
||||||
|
|
||||||
bench.startBenchmark('render_money')
|
bench.startBenchmark('render_money')
|
||||||
|
@ -210,8 +174,8 @@ end
|
||||||
function self.mousepressed(x, y, b)
|
function self.mousepressed(x, y, b)
|
||||||
if b == 1 then
|
if b == 1 then
|
||||||
for _,m in ipairs(money) do
|
for _,m in ipairs(money) do
|
||||||
local dist = math.abs(x - m.x * love.graphics.getWidth()) + math.abs(y - m.y * love.graphics.getHeight())
|
local dist = math.abs(x/love.graphics.getWidth() - m.x) + math.abs(y/love.graphics.getHeight() - m.y)
|
||||||
if dist < sheets.coin1.width/2 and not m.collected then
|
if dist < 0.1 and not m.collected then
|
||||||
m.collected = true
|
m.collected = true
|
||||||
m.deathtimer = 0
|
m.deathtimer = 0
|
||||||
playSound('collect', 1, 1 + math.random() * 0.2 - 0.1)
|
playSound('collect', 1, 1 + math.random() * 0.2 - 0.1)
|
||||||
|
@ -227,23 +191,14 @@ function self.mousepressed(x, y, b)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if b == 1 and y > HEADER_HEIGHT then
|
if b == 1 and y > HEADER_HEIGHT and #food < foodcount then
|
||||||
if starpotionequipped then
|
if balance >= 5 or debug then
|
||||||
table.insert(food, constr.food(x/love.graphics.getWidth(), y/love.graphics.getHeight(), 4))
|
table.insert(food, constr.food(x/love.graphics.getWidth(), y/love.graphics.getHeight(), foodtier))
|
||||||
playSound('dropfood')
|
playSound('dropfood')
|
||||||
starpotionequipped = false
|
balance = balance - 5
|
||||||
elseif #food < foodcount then
|
else
|
||||||
if balance >= 5 or debug then
|
playSound('buzzer')
|
||||||
table.insert(food, constr.food(x/love.graphics.getWidth(), y/love.graphics.getHeight(), foodtier))
|
|
||||||
playSound('dropfood')
|
|
||||||
balance = balance - 5
|
|
||||||
else
|
|
||||||
playSound('buzzer')
|
|
||||||
moneyflashtimer = 1.2
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local headerheight = HEADER_HEIGHT * love.graphics.getWidth()/640
|
local headerheight = HEADER_HEIGHT * love.graphics.getWidth()/640
|
||||||
|
@ -262,7 +217,6 @@ function self.mousepressed(x, y, b)
|
||||||
balance = balance - headerbuttons[i].cost
|
balance = balance - headerbuttons[i].cost
|
||||||
else
|
else
|
||||||
playSound('buzzer')
|
playSound('buzzer')
|
||||||
moneyflashtimer = 1.2
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -29,7 +29,6 @@ return function(feesh, dt, food, headerbuttons, money)
|
||||||
local str = math.random(70, 200)/200/4
|
local str = math.random(70, 200)/200/4
|
||||||
angle = mix(angle, math.deg(math.atan2((0.5 + math.sin(love.timer.getTime()/10 + fi) * 0.2) - n.y, 0)), 0.1) -- slightly head towards the middle, to prevent getting stuck at the bottom or top
|
angle = mix(angle, math.deg(math.atan2((0.5 + math.sin(love.timer.getTime()/10 + fi) * 0.2) - n.y, 0)), 0.1) -- slightly head towards the middle, to prevent getting stuck at the bottom or top
|
||||||
|
|
||||||
local followingObj = (n.shortestfood and food[n.shortestfood] and n.size ~= 4) or (n.shortestfood and feesh[n.shortestfood] and n.size == 4)
|
|
||||||
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
|
||||||
|
@ -86,7 +85,7 @@ return function(feesh, dt, food, headerbuttons, money)
|
||||||
local x = math.cos(math.rad(angle)) * str
|
local x = math.cos(math.rad(angle)) * str
|
||||||
local y = math.sin(math.rad(angle)) * str
|
local y = math.sin(math.rad(angle)) * str
|
||||||
|
|
||||||
if not (followingObj or n.dead) then
|
if not ((n.shortestfood and food[n.shortestfood]) or n.dead) then
|
||||||
x = x * math.sign(n.render.x - n.render.prevx)
|
x = x * math.sign(n.render.x - n.render.prevx)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -102,9 +101,8 @@ return function(feesh, dt, food, headerbuttons, money)
|
||||||
end
|
end
|
||||||
|
|
||||||
e.speed = 1 / (math.sqrt(math.pow(math.abs(e.x - e.fromx), 2) + math.pow(math.abs(e.y - e.fromy), 2))/2) / 15
|
e.speed = 1 / (math.sqrt(math.pow(math.abs(e.x - e.fromx), 2) + math.pow(math.abs(e.y - e.fromy), 2))/2) / 15
|
||||||
if n.eattimer < FISH_FOOD_HUNGRY or followingObj then
|
if n.eattimer < FISH_FOOD_HUNGRY or (n.shortestfood and food[n.shortestfood]) then
|
||||||
e.speed = e.speed * 1.3
|
e.speed = e.speed * 1.3
|
||||||
if n.size == 4 then e.speed = e.speed * 1.1 end
|
|
||||||
end
|
end
|
||||||
if n.dead then
|
if n.dead then
|
||||||
e.speed = e.speed * 0.2
|
e.speed = e.speed * 0.2
|
||||||
|
@ -129,7 +127,6 @@ return function(feesh, dt, food, headerbuttons, money)
|
||||||
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 == 3 then type = 3 end
|
||||||
if n.size == 4 then type = 4 end
|
if n.size == 4 then type = 4 end
|
||||||
if n.star then type = 3 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
|
||||||
|
@ -175,48 +172,39 @@ return function(feesh, dt, food, headerbuttons, money)
|
||||||
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}
|
||||||
|
|
||||||
n.eattimer = cooldowns[f.type] or FISH_FOOD_3_COOLDOWN
|
n.eattimer = cooldowns[f.type]
|
||||||
n.render.eattimer = 0
|
n.render.eattimer = 0
|
||||||
n.shortestfood = -1
|
n.shortestfood = -1
|
||||||
|
|
||||||
if f.type == 4 then -- star potion
|
if n.lifetime > FISH_AGE_MEDIUM and n.size == 0 then
|
||||||
if n.size == 2 or n.size == 3 then
|
n.size = 1
|
||||||
n.star = true
|
playSound('grow')
|
||||||
else
|
|
||||||
n.eattimer = -9e9
|
|
||||||
playSound('explode')
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if n.lifetime > FISH_AGE_MEDIUM and n.size == 0 then
|
|
||||||
n.size = 1
|
|
||||||
playSound('grow')
|
|
||||||
|
|
||||||
if not headerbuttons[1].open and not headerbuttons[1].closed then
|
if not headerbuttons[1].open and not headerbuttons[1].closed then
|
||||||
headerbuttons[1].open = true
|
headerbuttons[1].open = true
|
||||||
headerbuttons[1].openanim = 0
|
headerbuttons[1].openanim = 0
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if n.lifetime > FISH_AGE_BIG and n.size == 1 then
|
end
|
||||||
n.size = 2
|
if n.lifetime > FISH_AGE_BIG and n.size == 1 then
|
||||||
playSound('grow')
|
n.size = 2
|
||||||
|
playSound('grow')
|
||||||
|
|
||||||
if not headerbuttons[2].open and not headerbuttons[2].closed then
|
if not headerbuttons[2].open and not headerbuttons[2].closed then
|
||||||
headerbuttons[2].open = true
|
headerbuttons[2].open = true
|
||||||
headerbuttons[2].openanim = 0
|
headerbuttons[2].openanim = 0
|
||||||
end
|
|
||||||
if not headerbuttons[3].open and not headerbuttons[3].closed then
|
|
||||||
headerbuttons[3].open = true
|
|
||||||
headerbuttons[3].openanim = 0
|
|
||||||
end
|
|
||||||
if not headerbuttons[4].open and not headerbuttons[4].closed then
|
|
||||||
headerbuttons[4].open = true
|
|
||||||
headerbuttons[4].openanim = 0
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if n.lifetime > FISH_AGE_KING and n.size == 2 then
|
if not headerbuttons[3].open and not headerbuttons[3].closed then
|
||||||
n.size = 3
|
headerbuttons[3].open = true
|
||||||
playSound('grow')
|
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
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
return function(money, dt, sheets)
|
return function(money, dt)
|
||||||
for i,f in ipairs(money) do
|
for i,f in ipairs(money) do
|
||||||
if not f.collected then
|
if not f.collected then
|
||||||
f.y = f.y + dt * f.speed
|
f.y = f.y + dt * f.speed
|
||||||
|
@ -16,10 +16,5 @@ return function(money, dt, sheets)
|
||||||
if f.deathtimer > 1 or f.collecttimer > 1 then
|
if f.deathtimer > 1 or f.collecttimer > 1 then
|
||||||
table.remove(money, i)
|
table.remove(money, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
local dist = math.abs(love.mouse.getX() - f.x * love.graphics.getWidth()) + math.abs(love.mouse.getY() - f.y * love.graphics.getHeight())
|
|
||||||
if dist < sheets.coin1.width/2 and not f.collected then
|
|
||||||
setCursor(cursors.hover)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
Loading…
Add table
Add a link
Reference in a new issue