Godot upload

This commit is contained in:
csd4ni3l
2026-02-28 13:55:12 +01:00
commit 738a94093a
94 changed files with 1902 additions and 0 deletions

4
.editorconfig Normal file
View File

@@ -0,0 +1,4 @@
root = true
[*]
charset = utf-8

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
# Godot 4+ specific ignores
.godot/
/android/
export

93
OFL.txt Normal file
View File

@@ -0,0 +1,93 @@
Copyright 2023 The Soft Type Project Authors (https://github.com/scfried/soft-type-jersey)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

5
README.md Normal file
View File

@@ -0,0 +1,5 @@
# Fishy Fingers
A game where you have to collect fish using your hook (your mouse) and using your friends (toucan and blahaj).
Made in Godot 4.

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c362isr3mm3oj"
path="res://.godot/imported/background.png-78c17a218553c834306c94dd8bb6814d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/background.png"
dest_files=["res://.godot/imported/background.png-78c17a218553c834306c94dd8bb6814d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/graphics/blahaj.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfy0mfttvevvr"
path="res://.godot/imported/blahaj.png-9f08995984274c234ca593335a860c85.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/blahaj.png"
dest_files=["res://.godot/imported/blahaj.png-9f08995984274c234ca593335a860c85.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://co1iuyvs5t7cb"
path="res://.godot/imported/blue_cod.png-90046450b6d29d0caa9947b41b804383.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/blue_cod.png"
dest_files=["res://.godot/imported/blue_cod.png-90046450b6d29d0caa9947b41b804383.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/graphics/bubble.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bdh8no6kvpber"
path="res://.godot/imported/bubble.png-129f08e5020eb0492e663a51965bfaf1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/bubble.png"
dest_files=["res://.godot/imported/bubble.png-129f08e5020eb0492e663a51965bfaf1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/graphics/cursor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bmkcbeeqh600a"
path="res://.godot/imported/cursor.png-45ecd5a1e583fe3ca68fe559623aadce.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/cursor.png"
dest_files=["res://.godot/imported/cursor.png-45ecd5a1e583fe3ca68fe559623aadce.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://csvmfrn0u1g0f"
path="res://.godot/imported/fishing_net.png-dd8e8180135cb0bfa1f890038b9735e9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/fishing_net.png"
dest_files=["res://.godot/imported/fishing_net.png-dd8e8180135cb0bfa1f890038b9735e9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 841 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d1ms2w6paousl"
path="res://.godot/imported/green_cod.png-db8f32010b40547dcc659ef8b82a5ce9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/green_cod.png"
dest_files=["res://.godot/imported/green_cod.png-db8f32010b40547dcc659ef8b82a5ce9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/graphics/hook.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dqefsim4g3qec"
path="res://.godot/imported/hook.png-4917a963245066ae9168e5b824720f41.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/hook.png"
dest_files=["res://.godot/imported/hook.png-4917a963245066ae9168e5b824720f41.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://biegivb6ikxr8"
path="res://.godot/imported/orange_cod.png-e37a0a5f0d2b615a6b174113c0ca0fac.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/orange_cod.png"
dest_files=["res://.godot/imported/orange_cod.png-e37a0a5f0d2b615a6b174113c0ca0fac.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhw3g3dixr48n"
path="res://.godot/imported/pink_cod.png-efdacc12a0e1914046e833aed98fa771.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/pink_cod.png"
dest_files=["res://.godot/imported/pink_cod.png-efdacc12a0e1914046e833aed98fa771.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://jxb6ldorhcgj"
path="res://.godot/imported/purple_cod.png-bc00ab7276a5406f179d1d8ade065282.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/purple_cod.png"
dest_files=["res://.godot/imported/purple_cod.png-bc00ab7276a5406f179d1d8ade065282.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/graphics/shop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dh6okgkcp5222"
path="res://.godot/imported/shop.png-a25afba6f589c4083419c7204b15daa4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/shop.png"
dest_files=["res://.godot/imported/shop.png-a25afba6f589c4083419c7204b15daa4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8ev5ouxlx4ed"
path="res://.godot/imported/special_cod.png-0ad09f38d2d3f06950d312de59eb9059.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/special_cod.png"
dest_files=["res://.godot/imported/special_cod.png-0ad09f38d2d3f06950d312de59eb9059.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/graphics/toucan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bbhjrteldo3ki"
path="res://.godot/imported/toucan.png-fee52cf6e05cbfa9445af653c2b77861.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/toucan.png"
dest_files=["res://.godot/imported/toucan.png-fee52cf6e05cbfa9445af653c2b77861.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://doymyu58ur7v7"
path="res://.godot/imported/yellow_cod.png-ab0de6a615c678f39ba60308673aab37.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/yellow_cod.png"
dest_files=["res://.godot/imported/yellow_cod.png-ab0de6a615c678f39ba60308673aab37.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,10 @@
[gd_scene format=3 uid="uid://id0pabbvhqyf"]
[ext_resource type="AudioStream" uid="uid://uofd453dcad6" path="res://assets/sfx/background_music.mp3" id="1_s1x8q"]
[node name="BackgroundMusic" type="Node2D" unique_id=1149003101]
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." unique_id=1705185639]
stream = ExtResource("1_s1x8q")
autoplay = true
parameters/looping = true

View File

@@ -0,0 +1,62 @@
[gd_scene format=3 uid="uid://dgsxil03vytwi"]
[ext_resource type="Texture2D" uid="uid://c362isr3mm3oj" path="res://assets/graphics/background.png" id="1_ulj4j"]
[ext_resource type="Script" uid="uid://n4gqvy2ytjst" path="res://assets/scripts/background_scaler.gd" id="2_ulj4j"]
[ext_resource type="FontFile" uid="uid://bd4iri86plmvs" path="res://font.ttf" id="7_7o21g"]
[ext_resource type="Theme" uid="uid://b0kqa0xq44wmt" path="res://theme.tres" id="7_dd8ki"]
[ext_resource type="Script" uid="uid://65gtnts6kj5w" path="res://assets/scripts/credits_close_button.gd" id="8_7o21g"]
[sub_resource type="Theme" id="Theme_g3p6w"]
default_font = ExtResource("7_7o21g")
default_font_size = 32
RichTextLabel/colors/default_color = Color(0, 0, 0, 1)
[node name="Credits" type="Control" unique_id=1417362834]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="background" type="Sprite2D" parent="." unique_id=507322845]
position = Vector2(573, 323.5)
scale = Vector2(0.6, 0.6009259)
texture = ExtResource("1_ulj4j")
script = ExtResource("2_ulj4j")
[node name="credits_label" type="RichTextLabel" parent="." unique_id=1646312536]
layout_mode = 0
offset_left = 203.0
offset_top = 112.0
offset_right = 1075.0
offset_bottom = 623.0
theme = ExtResource("7_dd8ki")
theme_override_font_sizes/normal_font_size = 64
text = "csd4ni3l - Game Developer
Koni Rea - Graphics Designer
Marsh - Graphics Designer
Water splash sound effect from Pixabay
Music by Viacheslav Starostin from Pixabay"
[node name="close_button" type="Button" parent="." unique_id=1132807717]
layout_mode = 0
offset_left = 1034.0
offset_top = 23.0
offset_right = 1109.0
offset_bottom = 94.0
theme = SubResource("Theme_g3p6w")
theme_override_font_sizes/font_size = 32
text = "X"
script = ExtResource("8_7o21g")
[node name="title" type="RichTextLabel" parent="." unique_id=1072193387]
layout_mode = 0
offset_left = 412.0
offset_top = 1.0
offset_right = 755.0
offset_bottom = 105.0
theme = ExtResource("7_dd8ki")
theme_override_font_sizes/normal_font_size = 96
text = "Credits
"

View File

@@ -0,0 +1,24 @@
[gd_scene format=3 uid="uid://b44s3ql48fqgs"]
[ext_resource type="Texture2D" uid="uid://bdh8no6kvpber" path="res://assets/graphics/bubble.png" id="1_7wt87"]
[ext_resource type="Script" uid="uid://bouh46cbivutc" path="res://assets/scripts/cutscene.gd" id="1_hw5wm"]
[ext_resource type="Script" uid="uid://c02mfpu30mq5w" path="res://assets/scripts/bubble.gd" id="2_hw5wm"]
[ext_resource type="Texture2D" uid="uid://c362isr3mm3oj" path="res://assets/graphics/background.png" id="4_hjtv6"]
[ext_resource type="Script" uid="uid://n4gqvy2ytjst" path="res://assets/scripts/background_scaler.gd" id="5_y0eth"]
[node name="Cutscene" type="Node2D" unique_id=525358259]
script = ExtResource("1_hw5wm")
[node name="bubble_to_clone" type="Sprite2D" parent="." unique_id=764080502]
z_index = 99
position = Vector2(-757, 280.99997)
scale = Vector2(1, 0.88)
texture = ExtResource("1_7wt87")
script = ExtResource("2_hw5wm")
metadata/is_original = true
[node name="background" type="Sprite2D" parent="." unique_id=228251703]
position = Vector2(573, 323.5)
scale = Vector2(0.6, 0.6009259)
texture = ExtResource("4_hjtv6")
script = ExtResource("5_y0eth")

168
assets/scenes/game.tscn Normal file
View File

@@ -0,0 +1,168 @@
[gd_scene format=3 uid="uid://cqdfva3dlq28y"]
[ext_resource type="Script" uid="uid://wwqm6xuj48lg" path="res://assets/scripts/game_manager.gd" id="1_fc420"]
[ext_resource type="Texture2D" uid="uid://c362isr3mm3oj" path="res://assets/graphics/background.png" id="2_kc0sw"]
[ext_resource type="Script" uid="uid://n4gqvy2ytjst" path="res://assets/scripts/background_scaler.gd" id="3_i358u"]
[ext_resource type="Script" uid="uid://qp6v3st8ix3v" path="res://assets/scripts/fish_area_2d.gd" id="6_5jdip"]
[ext_resource type="Theme" uid="uid://b0kqa0xq44wmt" path="res://theme.tres" id="8_rojm1"]
[ext_resource type="Texture2D" uid="uid://dh6okgkcp5222" path="res://assets/graphics/shop.png" id="9_pnywb"]
[ext_resource type="Script" uid="uid://24gsro7ny3g" path="res://assets/scripts/shop_clicker.gd" id="10_fx2rd"]
[ext_resource type="FontFile" uid="uid://bd4iri86plmvs" path="res://font.ttf" id="11_jdjof"]
[ext_resource type="Texture2D" uid="uid://co1iuyvs5t7cb" path="res://assets/graphics/blue_cod.png" id="12_h5j7u"]
[ext_resource type="Texture2D" uid="uid://bbhjrteldo3ki" path="res://assets/graphics/toucan.png" id="12_s2rys"]
[ext_resource type="Script" uid="uid://bqxust6gkydnx" path="res://assets/scripts/toucan.gd" id="13_fc420"]
[ext_resource type="Script" uid="uid://cprehixvgn0k1" path="res://assets/scripts/click_timer.gd" id="14_p2xyf"]
[ext_resource type="Script" uid="uid://c8ys3ls826d21" path="res://assets/scripts/spawn_timer.gd" id="15_xe33q"]
[ext_resource type="Texture2D" uid="uid://bdh8no6kvpber" path="res://assets/graphics/bubble.png" id="16_fqk1v"]
[ext_resource type="Texture2D" uid="uid://bfy0mfttvevvr" path="res://assets/graphics/blahaj.png" id="16_kc0sw"]
[ext_resource type="Script" uid="uid://c02mfpu30mq5w" path="res://assets/scripts/bubble.gd" id="17_5jdip"]
[ext_resource type="Script" uid="uid://doambvkr7546i" path="res://assets/scripts/blahaj.gd" id="17_fqk1v"]
[sub_resource type="GDScript" id="GDScript_fc0e3"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_5jdip"]
size = Vector2(168, 199.99992)
[sub_resource type="Theme" id="Theme_j5wjh"]
default_font = ExtResource("11_jdjof")
default_font_size = 32
RichTextLabel/colors/default_color = Color(0, 0, 0, 1)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fc420"]
size = Vector2(163.33324, 153.09705)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fqk1v"]
size = Vector2(82.5, 82)
[node name="Main" type="Node2D" unique_id=695523442]
script = ExtResource("1_fc420")
[node name="background" type="Sprite2D" parent="." unique_id=60202612]
position = Vector2(573, 323.5)
scale = Vector2(0.6, 0.6009259)
texture = ExtResource("2_kc0sw")
script = ExtResource("3_i358u")
[node name="fish_parent" type="Node2D" parent="." unique_id=692749356]
script = SubResource("GDScript_fc0e3")
[node name="fish_area2d" type="Area2D" parent="fish_parent" unique_id=158667042 groups=["fish"]]
position = Vector2(-1367, 397)
scale = Vector2(0.5, 0.34)
script = ExtResource("6_5jdip")
metadata/is_original = true
[node name="fish_button_to_clone" type="Sprite2D" parent="fish_parent/fish_area2d" unique_id=485461812]
texture = ExtResource("12_h5j7u")
metadata/is_original = true
[node name="fish_collider" type="CollisionShape2D" parent="fish_parent/fish_area2d" unique_id=1553468051]
position = Vector2(0, 2.941162)
shape = SubResource("RectangleShape2D_5jdip")
[node name="Control" type="Control" parent="." unique_id=645586738]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 1037.0
offset_top = 152.0
offset_right = 1037.0
offset_bottom = 152.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
[node name="shop_button" type="TextureButton" parent="Control" unique_id=477030571]
layout_mode = 0
offset_right = 130.0
offset_bottom = 130.0
mouse_filter = 1
theme = ExtResource("8_rojm1")
texture_normal = ExtResource("9_pnywb")
stretch_mode = 0
script = ExtResource("10_fx2rd")
[node name="shop_label" type="RichTextLabel" parent="Control" unique_id=653140448]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.079
anchor_bottom = 0.062000003
offset_left = 32.0
offset_top = 116.0
offset_right = 128.84
offset_bottom = 158.52
mouse_filter = 2
theme = ExtResource("8_rojm1")
text = "Shop"
[node name="coins_label" type="RichTextLabel" parent="Control" unique_id=1668438805]
top_level = true
layout_mode = 0
offset_left = 1.0
offset_top = 1.0
offset_right = 1201.0
offset_bottom = 176.0
scale = Vector2(1.0200951, 1.1290053)
mouse_filter = 2
theme = SubResource("Theme_j5wjh")
text = "Coins: {}
CPS: {}
Hit Rate: {} %
"
[node name="click_timer" type="Timer" parent="." unique_id=1213150076]
wait_time = 3.0
autostart = true
script = ExtResource("14_p2xyf")
[node name="spawn_timer" type="Timer" parent="." unique_id=1014421546]
wait_time = 0.33
autostart = true
script = ExtResource("15_xe33q")
[node name="ClickSoundManager" type="AudioStreamPlayer2D" parent="." unique_id=2021202455]
volume_db = 15.0
[node name="toucan_area2d" type="Area2D" parent="." unique_id=855676345]
position = Vector2(-1151, 373)
scale = Vector2(0.6, 0.6009259)
metadata/is_original = true
[node name="toucan" type="Sprite2D" parent="toucan_area2d" unique_id=1093138591]
position = Vector2(4.999756, -4.992241)
scale = Vector2(5, 5)
texture = ExtResource("12_s2rys")
script = ExtResource("13_fc420")
[node name="toucan_collider" type="CollisionShape2D" parent="toucan_area2d" unique_id=279039260]
position = Vector2(-3.333374, 11.648682)
shape = SubResource("RectangleShape2D_fc420")
[node name="blahaj_area2d" type="Area2D" parent="." unique_id=1258170752]
position = Vector2(-1141, 498)
metadata/is_original = true
[node name="blahaj" type="Sprite2D" parent="blahaj_area2d" unique_id=888472474]
position = Vector2(10, -11)
scale = Vector2(6, 4.5)
texture = ExtResource("16_kc0sw")
script = ExtResource("17_fqk1v")
[node name="blahaj_collider" type="CollisionShape2D" parent="blahaj_area2d" unique_id=922647248]
position = Vector2(63, 8)
shape = SubResource("RectangleShape2D_fqk1v")
[node name="bubble_to_clone" type="Sprite2D" parent="." unique_id=1907261063]
z_index = 99
position = Vector2(-757, 280.99997)
scale = Vector2(1, 0.88)
texture = ExtResource("16_fqk1v")
script = ExtResource("17_5jdip")
metadata/is_original = true
[connection signal="area_entered" from="fish_parent/fish_area2d" to="fish_parent/fish_area2d" method="_on_area_entered"]
[connection signal="input_event" from="fish_parent/fish_area2d" to="fish_parent/fish_area2d" method="_on_input_event"]
[connection signal="timeout" from="click_timer" to="click_timer" method="_on_timeout"]
[connection signal="timeout" from="spawn_timer" to="spawn_timer" method="_on_timeout"]
[connection signal="area_entered" from="blahaj_area2d" to="blahaj_area2d/blahaj" method="blahaj_collide"]

View File

@@ -0,0 +1,63 @@
[gd_scene format=3 uid="uid://c2tl28kgehoia"]
[ext_resource type="Texture2D" uid="uid://c362isr3mm3oj" path="res://assets/graphics/background.png" id="1_ej4af"]
[ext_resource type="FontFile" uid="uid://bd4iri86plmvs" path="res://font.ttf" id="1_obrqb"]
[ext_resource type="Theme" uid="uid://b0kqa0xq44wmt" path="res://theme.tres" id="2_57ux2"]
[ext_resource type="Script" uid="uid://n4gqvy2ytjst" path="res://assets/scripts/background_scaler.gd" id="2_xmmar"]
[ext_resource type="Script" uid="uid://bqw60tl4be18a" path="res://assets/scripts/play_button.gd" id="3_f2xsc"]
[ext_resource type="Script" uid="uid://qe15irthfjxd" path="res://assets/scripts/credits_button.gd" id="9_tp4c4"]
[sub_resource type="Theme" id="Theme_7vrkn"]
default_font = ExtResource("1_obrqb")
default_font_size = 32
RichTextLabel/colors/default_color = Color(0, 0, 0, 1)
[node name="MainMenu" type="Control" unique_id=1443333066]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="background" type="Sprite2D" parent="." unique_id=1313136200]
position = Vector2(573, 323.5)
scale = Vector2(0.6, 0.6009259)
texture = ExtResource("1_ej4af")
script = ExtResource("2_xmmar")
[node name="shop_label" type="RichTextLabel" parent="." unique_id=111770834]
layout_mode = 0
offset_left = 335.0
offset_top = 171.0
offset_right = 841.0
offset_bottom = 268.0
theme = SubResource("Theme_7vrkn")
theme_override_font_sizes/normal_font_size = 64
text = "Fishy Fingers"
[node name="credits_button" type="Button" parent="." unique_id=2014728260]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.46100003
anchor_bottom = 0.39600003
offset_left = 319.0
offset_top = 427.0
offset_right = 287.92798
offset_bottom = 295.39197
theme = ExtResource("2_57ux2")
text = "Credits"
script = ExtResource("9_tp4c4")
[node name="play_button" type="Button" parent="." unique_id=1330388568]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.46100003
anchor_bottom = 0.39600003
offset_left = 318.0
offset_top = 283.0
offset_right = 286.92798
offset_bottom = 151.39197
theme = ExtResource("2_57ux2")
text = "Play"
script = ExtResource("3_f2xsc")

149
assets/scenes/shop.tscn Normal file
View File

@@ -0,0 +1,149 @@
[gd_scene format=3 uid="uid://cdh481ubod11g"]
[ext_resource type="Script" uid="uid://deoyoa417jjia" path="res://assets/scripts/shop_manager.gd" id="1_6p2lh"]
[ext_resource type="Theme" uid="uid://b0kqa0xq44wmt" path="res://theme.tres" id="1_54clv"]
[ext_resource type="FontFile" uid="uid://bd4iri86plmvs" path="res://font.ttf" id="1_s3tas"]
[ext_resource type="Texture2D" uid="uid://bbhjrteldo3ki" path="res://assets/graphics/toucan.png" id="2_54clv"]
[ext_resource type="Script" uid="uid://cyc55s4f8xujd" path="res://assets/scripts/fish_spawn_buy.gd" id="2_kam1a"]
[ext_resource type="Script" uid="uid://c14tjf3qlxdi" path="res://assets/scripts/sell_cost_buy.gd" id="3_2uom1"]
[ext_resource type="Texture2D" uid="uid://bfy0mfttvevvr" path="res://assets/graphics/blahaj.png" id="3_fxg5x"]
[ext_resource type="Script" uid="uid://dpoooqbw6moto" path="res://assets/scripts/shop_close.gd" id="4_cxlow"]
[ext_resource type="Script" uid="uid://bm7jxybqhhny2" path="res://assets/scripts/toucan_buy.gd" id="4_fxg5x"]
[ext_resource type="Script" uid="uid://xye8ey43chew" path="res://assets/scripts/blahaj_buy.gd" id="7_cxlow"]
[ext_resource type="Texture2D" uid="uid://c362isr3mm3oj" path="res://assets/graphics/background.png" id="11_d6ybq"]
[ext_resource type="Script" uid="uid://n4gqvy2ytjst" path="res://assets/scripts/background_scaler.gd" id="12_nxakl"]
[sub_resource type="Theme" id="Theme_j5wjh"]
default_font = ExtResource("1_s3tas")
default_font_size = 32
RichTextLabel/colors/default_color = Color(0, 0, 0, 1)
[sub_resource type="Theme" id="Theme_2uom1"]
default_font = ExtResource("1_s3tas")
default_font_size = 32
RichTextLabel/colors/default_color = Color(0, 0, 0, 1)
[node name="Shop" type="Control" unique_id=1195647882]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 1.0
offset_top = 2.0
offset_right = 1.0
offset_bottom = 2.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_6p2lh")
[node name="background" type="Sprite2D" parent="." unique_id=1096635644]
position = Vector2(576.00006, 324.00003)
scale = Vector2(0.59999996, 0.60231483)
texture = ExtResource("11_d6ybq")
script = ExtResource("12_nxakl")
[node name="fish_spawn_upgrade" type="Button" parent="." unique_id=1358983973]
layout_mode = 0
offset_left = 878.0
offset_top = 157.0
offset_right = 1094.0
offset_bottom = 336.0
theme = ExtResource("1_54clv")
theme_override_font_sizes/font_size = 24
text = "Fish Spawn Speed
upgrade
(+1 / sec)
Owned: 0
Cost: 750$"
script = ExtResource("2_kam1a")
[node name="sell_cost_upgrade" type="Button" parent="." unique_id=2054873946]
layout_mode = 0
offset_left = 590.0
offset_top = 155.0
offset_right = 819.0
offset_bottom = 334.0
theme = ExtResource("1_54clv")
theme_override_font_sizes/font_size = 24
text = "Sell cost upgrade
(+0.5$)
Owned: 0
Cost: 500$"
script = ExtResource("3_2uom1")
[node name="shop_label" type="RichTextLabel" parent="." unique_id=58579959]
layout_mode = 0
offset_left = 443.0
offset_top = 30.0
offset_right = 634.0
offset_bottom = 120.0
theme = SubResource("Theme_j5wjh")
theme_override_font_sizes/normal_font_size = 64
text = "Shop"
[node name="toucan_label" type="RichTextLabel" parent="." unique_id=1078357010]
layout_mode = 0
offset_left = 67.0
offset_top = 266.0
offset_right = 326.0
offset_bottom = 391.0
theme = SubResource("Theme_j5wjh")
text = "Toucan
Owned: 0
Cost: 250$"
[node name="toucan_button" type="TextureButton" parent="." unique_id=1039683139]
layout_mode = 0
offset_left = 57.0
offset_top = 122.0
offset_right = 207.0
offset_bottom = 272.0
texture_normal = ExtResource("2_54clv")
ignore_texture_size = true
stretch_mode = 0
script = ExtResource("4_fxg5x")
[node name="blahaj_label" type="RichTextLabel" parent="." unique_id=474178222]
layout_mode = 0
offset_left = 305.0
offset_top = 266.0
offset_right = 568.0
offset_bottom = 377.0
theme = SubResource("Theme_j5wjh")
text = "Blahaj
Owned: 0
Cost: 1000$"
[node name="close_button" type="Button" parent="." unique_id=1862390014]
layout_mode = 0
offset_left = 1055.0
offset_top = 35.0
offset_right = 1130.0
offset_bottom = 106.0
theme = SubResource("Theme_j5wjh")
theme_override_font_sizes/font_size = 32
text = "X"
script = ExtResource("4_cxlow")
[node name="blahaj_button" type="TextureButton" parent="." unique_id=1677413315]
layout_mode = 0
offset_left = 324.0
offset_top = 110.0
offset_right = 504.0
offset_bottom = 290.0
texture_normal = ExtResource("3_fxg5x")
ignore_texture_size = true
stretch_mode = 0
script = ExtResource("7_cxlow")
[node name="coins_label" type="RichTextLabel" parent="." unique_id=1439188814]
top_level = true
layout_mode = 0
offset_left = 2.0
offset_top = 18.0
offset_right = 134.3406
offset_bottom = 63.17251
scale = Vector2(1.0200951, 1.1290053)
mouse_filter = 2
theme = SubResource("Theme_2uom1")
text = "Coins: {}"

View File

@@ -0,0 +1,10 @@
extends Sprite2D
func scale_to_window():
var window_size = get_viewport_rect().size
var texture_size = texture.get_size()
scale = window_size / texture_size
position = window_size / 2 # Center it (origin is top-left by default)
func _process(delta: float) -> void:
scale_to_window()

View File

@@ -0,0 +1 @@
uid://n4gqvy2ytjst

45
assets/scripts/blahaj.gd Normal file
View File

@@ -0,0 +1,45 @@
extends Sprite2D
var nearest_fish: Area2D
var last_eat = Time.get_ticks_msec()
func _process(delta: float) -> void:
if get_parent().get_meta("is_original", false):
return
var min_dist: float = INF
nearest_fish = null
for fish in get_node("/root/Main/fish_parent").get_children():
if not is_instance_of(fish, Area2D):
continue
var dist = global_position.distance_to(fish.global_position)
if dist < min_dist:
min_dist = dist
nearest_fish = fish
if not is_instance_valid(nearest_fish):
return
var direction = ((nearest_fish.global_position - global_position) * randf_range(0.9, 1.1)).normalized()
get_parent().position += direction * Globals.BLAHAJ_SPEED * delta
get_parent().rotation = lerp_angle(get_parent().rotation, direction.angle(), 0.01)
if not Time.get_ticks_msec() - last_eat >= 500:
return
last_eat = Time.get_ticks_msec()
for area: Area2D in get_parent().get_overlapping_areas():
if area.is_in_group("fish"):
Globals.coins += (1 + Globals.sell_cost_upgrades)
Globals.fish_per_second += 1
play_sound("res://assets/sfx/splash.mp3")
area.queue_free()
func play_sound(path: String):
var player = AudioStreamPlayer.new()
add_child(player)
player.stream = load(path)
player.play()
player.finished.connect(player.queue_free)

View File

@@ -0,0 +1 @@
uid://doambvkr7546i

View File

@@ -0,0 +1,6 @@
extends TextureButton
func _pressed() -> void:
if Globals.coins >= Globals.BLAHAJ_PRICE * (Globals.blahaj_upgrades + 1):
Globals.coins -= Globals.BLAHAJ_PRICE * (Globals.blahaj_upgrades + 1)
Globals.blahaj_upgrades += 1

View File

@@ -0,0 +1 @@
uid://xye8ey43chew

12
assets/scripts/bubble.gd Normal file
View File

@@ -0,0 +1,12 @@
extends Sprite2D
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if get_meta("is_original", false):
return
self.position.x += randf_range(-0.5, 0.5) * Globals.BUBBLE_SPEED * delta
self.position.y -= Globals.BUBBLE_SPEED * delta
if position.y < 0:
queue_free()

View File

@@ -0,0 +1 @@
uid://c02mfpu30mq5w

View File

@@ -0,0 +1,11 @@
extends Timer
func _on_timeout() -> void:
Globals.last_fish_per_second = Globals.fish_per_second
Globals.fish_per_second = 0
if Globals.all_hit > 0:
Globals.last_hit_percent = min((float(Globals.successful_hit) / float(Globals.all_hit)) * 100, 100.0)
else:
Globals.last_hit_percent = 0
Globals.successful_hit = 0
Globals.all_hit = 0

View File

@@ -0,0 +1 @@
uid://cprehixvgn0k1

View File

@@ -0,0 +1,4 @@
extends Button
func _pressed() -> void:
get_tree().change_scene_to_file("res://assets/scenes/credits.tscn")

View File

@@ -0,0 +1 @@
uid://qe15irthfjxd

View File

@@ -0,0 +1,4 @@
extends Button
func _pressed() -> void:
get_tree().change_scene_to_file("res://assets/scenes/main_menu.tscn")

View File

@@ -0,0 +1 @@
uid://65gtnts6kj5w

View File

@@ -0,0 +1,26 @@
extends Node2D
var changing_scene := false
var anim_start = Time.get_ticks_msec()
func spawn_bubble() -> void:
var new_bubble: Sprite2D = $bubble_to_clone.duplicate(15)
new_bubble.set_meta("is_original", false)
var new_bubble_size = new_bubble.texture.get_size()
new_bubble.position = Vector2(
randf_range(0, DisplayServer.window_get_size().x - new_bubble_size.x),
randf_range(0, DisplayServer.window_get_size().y - new_bubble_size.y)
)
add_child(new_bubble)
func _process(delta: float) -> void:
if Time.get_ticks_msec() - anim_start >= 5000:
get_tree().change_scene_to_file("res://assets/scenes/game.tscn")
func _ready() -> void:
var screen = DisplayServer.window_get_size()
var bubble_size = $bubble_to_clone.texture.get_size()
var cols = ceil(screen.x / bubble_size.x) + 1
var rows = ceil(screen.y / bubble_size.y) + 1
for i in range(cols * rows):
spawn_bubble()

View File

@@ -0,0 +1 @@
uid://bouh46cbivutc

View File

@@ -0,0 +1,143 @@
extends Area2D
@onready var sprite = $fish_button_to_clone # or whatever the sprite node is named
@onready var audio_player = get_node("/root/Main/ClickSoundManager")
var does_move = 1
var speed_scale = 1.0
var new_rotation: float
var is_reeling = false
var reel_speed = 800.0
var line_origin: Vector2
var line: Line2D
var hook_sprite: Sprite2D
var wobble = 0.0
var angle = randi() % 360
var last_bubble_spawn = Time.get_ticks_msec()
func get_size() -> Vector2:
if sprite.texture:
return sprite.texture.get_size() * sprite.scale
return Vector2.ZERO
func play_sound(path: String):
var player = AudioStreamPlayer.new()
add_child(player)
player.stream = load(path)
player.play()
player.finished.connect(player.queue_free)
func spawn_bubble() -> void:
var new_bubble: Sprite2D = $"/root/Main/bubble_to_clone".duplicate(15)
new_bubble.set_meta("is_original", false)
new_bubble.position = Vector2(
global_position.x * randf_range(0.95, 1.05),
global_position.y
)
get_parent().get_parent().get_parent().add_child(new_bubble)
func _physics_process(delta: float) -> void:
if get_meta("is_original", false):
return
var sz = get_size()
if is_reeling:
if Time.get_ticks_msec() - last_bubble_spawn >= 20:
last_bubble_spawn = Time.get_ticks_msec()
spawn_bubble()
global_position.y -= reel_speed * delta
global_position.x = line_origin.x # no offset
if line and is_instance_valid(line):
line.set_point_position(0, line_origin)
line.set_point_position(1, global_position)
if hook_sprite and is_instance_valid(hook_sprite):
hook_sprite.global_position = global_position - Vector2(0, get_size().y / 5)
if global_position.y + get_size().y <= 0:
_on_caught()
return
if does_move == 1:
var mouse = get_global_mouse_position()
var top_left = global_position - sz / 2
var rect = Rect2(top_left, sz)
if rect.has_point(mouse):
speed_scale = 0.6
else:
speed_scale = 1.0
new_rotation = angle - deg_to_rad(135)
if abs(new_rotation - rotation) > 0.01:
rotation = lerp_angle(rotation, new_rotation, 0.2)
else:
rotation = new_rotation
wobble += delta * 15.0
var wobble_angle = angle + sin(wobble) * 0.3
var wobble_dir = Vector2(cos(wobble_angle), sin(wobble_angle))
global_position += wobble_dir * Globals.FISH_SPEED * delta * speed_scale
new_rotation = wobble_angle - deg_to_rad(135)
if abs(new_rotation - rotation) > 0.01:
rotation = lerp_angle(rotation, new_rotation, 0.2)
else:
rotation = new_rotation
var screen_size = get_viewport_rect().size
if global_position.x < 0:
if is_instance_valid(line):
line.queue_free()
if is_instance_valid(hook_sprite):
hook_sprite.queue_free()
queue_free()
elif global_position.x > screen_size.x:
if is_instance_valid(line):
line.queue_free()
if is_instance_valid(hook_sprite):
hook_sprite.queue_free()
queue_free()
if global_position.y < 0:
global_position.y = -global_position.y
self.angle = -self.angle
elif global_position.y > screen_size.y:
global_position.y = 2 * screen_size.y - global_position.y
self.angle = -self.angle
func _on_input_event(_viewport, event, _shape_idx) -> void:
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
_on_clicked()
func _on_clicked() -> void:
if is_reeling:
return
var fish_center = global_position
line_origin = Vector2(fish_center.x, 0)
line = Line2D.new()
line.width = 2.0
line.default_color = Color(0.6, 0.6, 0.6, 1.0)
line.top_level = true
line.points = PackedVector2Array([line_origin, fish_center])
add_child(line)
hook_sprite = Sprite2D.new()
hook_sprite.texture = load("res://assets/graphics/hook.png")
hook_sprite.top_level = true
hook_sprite.global_position = fish_center - Vector2(0, get_size().y / 5)
hook_sprite.scale = Vector2(1.5, 1.5)
add_child(hook_sprite)
is_reeling = true
does_move = 0
rotation = 0
play_sound("res://assets/sfx/splash.mp3")
func _on_caught() -> void:
Globals.coins += (1 + (Globals.sell_cost_upgrades * 0.5))
Globals.fish_per_second += 1
Globals.successful_hit += 1
if line and is_instance_valid(line):
line.queue_free()
if hook_sprite and is_instance_valid(hook_sprite):
hook_sprite.queue_free()
queue_free()

View File

@@ -0,0 +1 @@
uid://qp6v3st8ix3v

View File

View File

@@ -0,0 +1 @@
uid://ckp3u7iahsl3x

View File

@@ -0,0 +1,6 @@
extends Button
func _pressed() -> void:
if Globals.coins >= Globals.SPAWN_SPEED_PRICE * (Globals.spawn_speed_upgrades + 1):
Globals.coins -= Globals.SPAWN_SPEED_PRICE * (Globals.spawn_speed_upgrades + 1)
Globals.spawn_speed_upgrades += 1

View File

@@ -0,0 +1 @@
uid://cyc55s4f8xujd

View File

@@ -0,0 +1,72 @@
extends Node2D
@onready var fish_parent: Node2D = $fish_parent
@onready var coinText: RichTextLabel = $Control/coins_label
@onready var audio_player = $"ClickSoundManager"
var last_bubble = Time.get_ticks_msec()
func _input(event):
if event is InputEventMouseButton and event.pressed:
Globals.all_hit += 1
func play_sound(path: String):
var player = AudioStreamPlayer.new()
add_child(player)
player.stream = load(path)
player.play()
player.finished.connect(player.queue_free)
func spawn_blahaj() -> void:
var new_blahaj: Area2D = $blahaj_area2d.duplicate(15)
new_blahaj.set_meta("is_original", false)
var new_blahaj_size = new_blahaj.get_child(0).texture.get_size() * new_blahaj.get_child(0).scale
new_blahaj.position = Vector2(
randf_range(DisplayServer.window_get_size().x * 0.1, Globals.spawn_area.x - new_blahaj_size.x),
randf_range(DisplayServer.window_get_size().y * 0.1, Globals.spawn_area.y - new_blahaj_size.y)
)
add_child(new_blahaj)
func spawn_toucan() -> void:
var new_toucan: Area2D = $toucan_area2d.duplicate(15)
new_toucan.set_meta("is_original", false)
var new_toucan_size = new_toucan.get_child(0).texture.get_size()
new_toucan.position = Vector2(
randf_range(DisplayServer.window_get_size().x * 0.1, Globals.spawn_area.x - new_toucan_size.x),
-new_toucan_size.y * 2
)
add_child(new_toucan)
func spawn_bubble() -> void:
var new_bubble: Sprite2D = $bubble_to_clone.duplicate(15)
new_bubble.set_meta("is_original", false)
var new_bubble_size = new_bubble.texture.get_size()
new_bubble.position = Vector2(
randf_range(0, DisplayServer.window_get_size().x - new_bubble_size.x),
DisplayServer.window_get_size().y
)
add_child(new_bubble)
func _ready() -> void:
audio_player.play()
Globals.init_button($fish_parent/fish_area2d)
get_viewport().size_changed.connect(_on_window_resized)
var spawn_time: float = (1.0 / (4.0 + Globals.spawn_speed_upgrades))
$spawn_timer.wait_time = spawn_time
for i in Globals.blahaj_upgrades:
spawn_blahaj()
for i in Globals.toucan_upgrades:
spawn_toucan()
func _on_window_resized() -> void:
Globals.spawn_area = DisplayServer.window_get_size()
func _process(_delta: float) -> void:
coinText.text = "Coins: {coins}\nFish per second: {fish_per_second}\nHit rate: {hit_rate}%".format({"coins": Globals.coins, "fish_per_second": round(Globals.last_fish_per_second / 3.0), "hit_rate": round(Globals.last_hit_percent)})
if Time.get_ticks_msec() - last_bubble >= 100:
last_bubble = Time.get_ticks_msec()
spawn_bubble()

View File

@@ -0,0 +1 @@
uid://wwqm6xuj48lg

31
assets/scripts/globals.gd Normal file
View File

@@ -0,0 +1,31 @@
# In Globals
extends Node
var coins: int = 0
var fish_per_second: int = 0
var last_fish_per_second: int = 0
var spawn_area: Vector2
var fish_button_to_clone: Area2D
var successful_hit = 0
var all_hit = 0
var last_hit_percent = 0
var sell_cost_upgrades = 0
var spawn_speed_upgrades = 0
var blahaj_upgrades = 0
var toucan_upgrades = 1
const COD_TYPES := ["blue", "green", "orange", "pink", "purple", "yellow"]
const FISH_SPEED = 100
const BLAHAJ_SPEED = 150
const TOUCAN_SPEED = 250
const BUBBLE_SPEED = 100
const SELL_COST_PRICE = 225
const SPAWN_SPEED_PRICE = 300
const BLAHAJ_PRICE = 400
const TOUCAN_PRICE = 75
func init_button(button: Area2D):
fish_button_to_clone = button
spawn_area = Vector2(DisplayServer.window_get_size())

View File

@@ -0,0 +1 @@
uid://chyoc844old4i

View File

@@ -0,0 +1,4 @@
extends Button
func _pressed() -> void:
get_tree().change_scene_to_file("res://assets/scenes/cutscene.tscn")

View File

@@ -0,0 +1 @@
uid://bqw60tl4be18a

View File

@@ -0,0 +1,6 @@
extends Button
func _pressed() -> void:
if Globals.coins >= Globals.SELL_COST_PRICE * (Globals.sell_cost_upgrades + 1):
Globals.coins -= Globals.SELL_COST_PRICE * (Globals.sell_cost_upgrades + 1)
Globals.sell_cost_upgrades += 1

View File

@@ -0,0 +1 @@
uid://c14tjf3qlxdi

View File

@@ -0,0 +1,4 @@
extends TextureButton
func _pressed() -> void:
get_tree().change_scene_to_file("res://assets/scenes/shop.tscn")

View File

@@ -0,0 +1 @@
uid://24gsro7ny3g

View File

@@ -0,0 +1,4 @@
extends Button
func _pressed() -> void:
get_tree().change_scene_to_file("res://assets/scenes/game.tscn")

View File

@@ -0,0 +1 @@
uid://dpoooqbw6moto

View File

@@ -0,0 +1,8 @@
extends Control
func _process(delta: float) -> void:
$coins_label.text = "Coins: {coins}".format({"coins": Globals.coins})
$toucan_label.text = "Toucan\nOwned: {owned}\nCost: {cost}$".format({"owned": Globals.toucan_upgrades, "cost": Globals.TOUCAN_PRICE * (Globals.toucan_upgrades + 1)})
$blahaj_label.text = "Blahaj\nOwned: {owned}\nCost: {cost}$".format({"owned": Globals.blahaj_upgrades, "cost": Globals.BLAHAJ_PRICE * (Globals.blahaj_upgrades + 1)})
$sell_cost_upgrade.text = "Sell cost upgrade\n(+1$)\nOwned: {owned}\nCost: {cost}$".format({"owned": Globals.sell_cost_upgrades, "cost": Globals.SELL_COST_PRICE * (Globals.sell_cost_upgrades + 1)})
$fish_spawn_upgrade.text = "Fish Spawn Speed upgrade\n(+ 1 fish/s)\nOwned: {owned}\nCost: {cost}$".format({"owned": Globals.spawn_speed_upgrades, "cost": Globals.SPAWN_SPEED_PRICE * (Globals.spawn_speed_upgrades + 1)})

View File

@@ -0,0 +1 @@
uid://deoyoa417jjia

View File

@@ -0,0 +1,29 @@
extends Timer
@onready var fish_button_to_clone = get_node("../fish_parent/fish_area2d")
@onready var fish_parent = get_node("../fish_parent")
func get_sprite_size(sprite: Sprite2D) -> Vector2:
if sprite.texture:
if sprite.region_enabled:
return sprite.region_rect.size * sprite.scale
return sprite.texture.get_size() * sprite.scale
return Vector2.ZERO
func spawn() -> void:
var fish_area: Area2D = fish_button_to_clone.duplicate(15)
fish_area.get_child(0).texture = load("res://assets/graphics/{type}_cod.png".format({"type": Globals.COD_TYPES[randi() % Globals.COD_TYPES.size()]}))
fish_area.set_meta("is_original", false)
fish_area.visible = true
fish_area.get_child(0).visible = true
fish_parent.add_child(fish_area)
var fish_size = get_sprite_size(fish_button_to_clone.get_child(0))
fish_area.position = Vector2(
randf_range(0, Globals.spawn_area.x - fish_size.x),
randf_range(0, Globals.spawn_area.y - fish_size.y)
)
func _on_timeout() -> void:
spawn()

View File

@@ -0,0 +1 @@
uid://c8ys3ls826d21

55
assets/scripts/toucan.gd Normal file
View File

@@ -0,0 +1,55 @@
extends Sprite2D
var nearest_fish: Area2D
var last_eat = Time.get_ticks_msec()
func _process(delta: float) -> void:
if get_parent().get_meta("is_original", false):
return
if not Time.get_ticks_msec() - last_eat >= 700:
return
var min_dist: float = INF
nearest_fish = null
for fish in get_node("/root/Main/fish_parent").get_children():
if not is_instance_of(fish, Area2D):
continue
var dist = global_position.distance_to(fish.global_position)
if fish.global_position.y < (DisplayServer.window_get_size().y * 0.35) and dist < min_dist:
min_dist = dist
nearest_fish = fish
if not is_instance_valid(nearest_fish) or nearest_fish.position.y > (DisplayServer.window_get_size().y * 0.35):
respawn()
return
var direction = ((nearest_fish.global_position - global_position) * randf_range(0.9, 1.1)).normalized()
get_parent().position += direction * Globals.TOUCAN_SPEED * delta
get_parent().rotation = lerp_angle(get_parent().rotation, direction.angle(), 0.025)
for area: Area2D in get_parent().get_overlapping_areas():
if area.is_in_group("fish"):
Globals.coins += (1 + Globals.sell_cost_upgrades)
Globals.fish_per_second += 1
area.queue_free()
respawn()
play_sound("res://assets/sfx/splash.mp3")
last_eat = Time.get_ticks_msec()
func play_sound(path: String):
var player = AudioStreamPlayer.new()
add_child(player)
player.stream = load(path)
player.play()
player.finished.connect(player.queue_free)
func respawn() -> void:
var new_toucan_size = self.texture.get_size()
get_parent().position = Vector2(
randf_range(DisplayServer.window_get_size().x * 0.1, Globals.spawn_area.x - new_toucan_size.x),
-new_toucan_size.y * 2
)

View File

@@ -0,0 +1 @@
uid://bqxust6gkydnx

View File

@@ -0,0 +1,6 @@
extends TextureButton
func _pressed() -> void:
if Globals.coins >= Globals.TOUCAN_PRICE * (Globals.toucan_upgrades + 1):
Globals.coins -= Globals.TOUCAN_PRICE * (Globals.toucan_upgrades + 1)
Globals.toucan_upgrades += 1

View File

@@ -0,0 +1 @@
uid://bm7jxybqhhny2

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://uofd453dcad6"
path="res://.godot/imported/background_music.mp3-e972e4c8e346696b091b717e45558e3f.mp3str"
[deps]
source_file="res://assets/sfx/background_music.mp3"
dest_files=["res://.godot/imported/background_music.mp3-e972e4c8e346696b091b717e45558e3f.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
assets/sfx/splash.mp3 Normal file

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dfv86m7q1f433"
path="res://.godot/imported/splash.mp3-55d8c195a906c5dec5204c8fdcec3980.mp3str"
[deps]
source_file="res://assets/sfx/splash.mp3"
dest_files=["res://.godot/imported/splash.mp3-55d8c195a906c5dec5204c8fdcec3980.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

49
export_presets.cfg Normal file
View File

@@ -0,0 +1,49 @@
[preset.0]
name="Web"
platform="Web"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="export/web/index.html"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
variant/extensions_support=false
variant/thread_support=false
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=false
html/export_icon=true
html/custom_html_shell=""
html/head_include=""
html/canvas_resize_policy=2
html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false
progressive_web_app/enabled=false
progressive_web_app/ensure_cross_origin_isolation_headers=true
progressive_web_app/offline_page=""
progressive_web_app/display=1
progressive_web_app/orientation=0
progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color(0, 0, 0, 1)
threads/emscripten_pool_size=8
threads/godot_pool_size=4

BIN
font.ttf Normal file

Binary file not shown.

36
font.ttf.import Normal file
View File

@@ -0,0 +1,36 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bd4iri86plmvs"
path="res://.godot/imported/font.ttf-7ba3e8c1ec355f88f1af089917a76c36.fontdata"
[deps]
source_file="res://font.ttf"
dest_files=["res://.godot/imported/font.ttf-7ba3e8c1ec355f88f1af089917a76c36.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
modulate_color_glyphs=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

1
icon.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 995 B

43
icon.svg.import Normal file
View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn3enxewmtmft"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

36
project.godot Normal file
View File

@@ -0,0 +1,36 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Fishy Fingers"
run/main_scene="uid://c2tl28kgehoia"
config/features=PackedStringArray("4.6", "GL Compatibility")
config/icon="res://icon.svg"
[autoload]
Globals="*uid://chyoc844old4i"
BackgroundMusic="*uid://id0pabbvhqyf"
[display]
mouse_cursor/custom_image="uid://bmkcbeeqh600a"
[physics]
3d/physics_engine="Jolt Physics"
[rendering]
textures/canvas_textures/default_texture_filter=0
rendering_device/driver.windows="d3d12"
renderer/rendering_method="gl_compatibility"
renderer/rendering_method.mobile="gl_compatibility"

8
theme.tres Normal file
View File

@@ -0,0 +1,8 @@
[gd_resource type="Theme" format=3 uid="uid://b0kqa0xq44wmt"]
[ext_resource type="FontFile" uid="uid://bd4iri86plmvs" path="res://font.ttf" id="1_e1x85"]
[resource]
default_font = ExtResource("1_e1x85")
default_font_size = 32
RichTextLabel/colors/default_color = Color(0, 0, 0, 1)