commit 738a94093a02680b05fbcafbaeec558d22aff3e6 Author: csd4ni3l Date: Sat Feb 28 13:55:12 2026 +0100 Godot upload diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..81d9501 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# Godot 4+ specific ignores +.godot/ +/android/ +export diff --git a/OFL.txt b/OFL.txt new file mode 100644 index 0000000..f83e6da --- /dev/null +++ b/OFL.txt @@ -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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..38a9278 --- /dev/null +++ b/README.md @@ -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. diff --git a/assets/graphics/background.png b/assets/graphics/background.png new file mode 100644 index 0000000..352be66 Binary files /dev/null and b/assets/graphics/background.png differ diff --git a/assets/graphics/background.png.import b/assets/graphics/background.png.import new file mode 100644 index 0000000..80ca23e --- /dev/null +++ b/assets/graphics/background.png.import @@ -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 diff --git a/assets/graphics/blahaj.png b/assets/graphics/blahaj.png new file mode 100644 index 0000000..c1aa5f1 Binary files /dev/null and b/assets/graphics/blahaj.png differ diff --git a/assets/graphics/blahaj.png.import b/assets/graphics/blahaj.png.import new file mode 100644 index 0000000..455ade9 --- /dev/null +++ b/assets/graphics/blahaj.png.import @@ -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 diff --git a/assets/graphics/blue_cod.png b/assets/graphics/blue_cod.png new file mode 100644 index 0000000..ee983f5 Binary files /dev/null and b/assets/graphics/blue_cod.png differ diff --git a/assets/graphics/blue_cod.png.import b/assets/graphics/blue_cod.png.import new file mode 100644 index 0000000..b9c733a --- /dev/null +++ b/assets/graphics/blue_cod.png.import @@ -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 diff --git a/assets/graphics/bubble.png b/assets/graphics/bubble.png new file mode 100644 index 0000000..37b0a53 Binary files /dev/null and b/assets/graphics/bubble.png differ diff --git a/assets/graphics/bubble.png.import b/assets/graphics/bubble.png.import new file mode 100644 index 0000000..85bb4af --- /dev/null +++ b/assets/graphics/bubble.png.import @@ -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 diff --git a/assets/graphics/cursor.png b/assets/graphics/cursor.png new file mode 100644 index 0000000..c1408c1 Binary files /dev/null and b/assets/graphics/cursor.png differ diff --git a/assets/graphics/cursor.png.import b/assets/graphics/cursor.png.import new file mode 100644 index 0000000..80d9776 --- /dev/null +++ b/assets/graphics/cursor.png.import @@ -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 diff --git a/assets/graphics/fishing_net.png b/assets/graphics/fishing_net.png new file mode 100644 index 0000000..9cd2bb7 Binary files /dev/null and b/assets/graphics/fishing_net.png differ diff --git a/assets/graphics/fishing_net.png.import b/assets/graphics/fishing_net.png.import new file mode 100644 index 0000000..ce540e7 --- /dev/null +++ b/assets/graphics/fishing_net.png.import @@ -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 diff --git a/assets/graphics/green_cod.png b/assets/graphics/green_cod.png new file mode 100644 index 0000000..d2506bf Binary files /dev/null and b/assets/graphics/green_cod.png differ diff --git a/assets/graphics/green_cod.png.import b/assets/graphics/green_cod.png.import new file mode 100644 index 0000000..cfd2b65 --- /dev/null +++ b/assets/graphics/green_cod.png.import @@ -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 diff --git a/assets/graphics/hook.png b/assets/graphics/hook.png new file mode 100644 index 0000000..6c4e40c Binary files /dev/null and b/assets/graphics/hook.png differ diff --git a/assets/graphics/hook.png.import b/assets/graphics/hook.png.import new file mode 100644 index 0000000..648a184 --- /dev/null +++ b/assets/graphics/hook.png.import @@ -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 diff --git a/assets/graphics/orange_cod.png b/assets/graphics/orange_cod.png new file mode 100644 index 0000000..810f006 Binary files /dev/null and b/assets/graphics/orange_cod.png differ diff --git a/assets/graphics/orange_cod.png.import b/assets/graphics/orange_cod.png.import new file mode 100644 index 0000000..0e212dc --- /dev/null +++ b/assets/graphics/orange_cod.png.import @@ -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 diff --git a/assets/graphics/pink_cod.png b/assets/graphics/pink_cod.png new file mode 100644 index 0000000..0cb4155 Binary files /dev/null and b/assets/graphics/pink_cod.png differ diff --git a/assets/graphics/pink_cod.png.import b/assets/graphics/pink_cod.png.import new file mode 100644 index 0000000..f3d4858 --- /dev/null +++ b/assets/graphics/pink_cod.png.import @@ -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 diff --git a/assets/graphics/purple_cod.png b/assets/graphics/purple_cod.png new file mode 100644 index 0000000..d597977 Binary files /dev/null and b/assets/graphics/purple_cod.png differ diff --git a/assets/graphics/purple_cod.png.import b/assets/graphics/purple_cod.png.import new file mode 100644 index 0000000..e52f6ac --- /dev/null +++ b/assets/graphics/purple_cod.png.import @@ -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 diff --git a/assets/graphics/shop.png b/assets/graphics/shop.png new file mode 100644 index 0000000..d9a702e Binary files /dev/null and b/assets/graphics/shop.png differ diff --git a/assets/graphics/shop.png.import b/assets/graphics/shop.png.import new file mode 100644 index 0000000..5966986 --- /dev/null +++ b/assets/graphics/shop.png.import @@ -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 diff --git a/assets/graphics/special_cod.png b/assets/graphics/special_cod.png new file mode 100644 index 0000000..cb22173 Binary files /dev/null and b/assets/graphics/special_cod.png differ diff --git a/assets/graphics/special_cod.png.import b/assets/graphics/special_cod.png.import new file mode 100644 index 0000000..7a8947a --- /dev/null +++ b/assets/graphics/special_cod.png.import @@ -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 diff --git a/assets/graphics/toucan.png b/assets/graphics/toucan.png new file mode 100644 index 0000000..970f035 Binary files /dev/null and b/assets/graphics/toucan.png differ diff --git a/assets/graphics/toucan.png.import b/assets/graphics/toucan.png.import new file mode 100644 index 0000000..9666ad3 --- /dev/null +++ b/assets/graphics/toucan.png.import @@ -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 diff --git a/assets/graphics/yellow_cod.png b/assets/graphics/yellow_cod.png new file mode 100644 index 0000000..9cf8e28 Binary files /dev/null and b/assets/graphics/yellow_cod.png differ diff --git a/assets/graphics/yellow_cod.png.import b/assets/graphics/yellow_cod.png.import new file mode 100644 index 0000000..5279267 --- /dev/null +++ b/assets/graphics/yellow_cod.png.import @@ -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 diff --git a/assets/scenes/BackgroundMusic.tscn b/assets/scenes/BackgroundMusic.tscn new file mode 100644 index 0000000..2f1c845 --- /dev/null +++ b/assets/scenes/BackgroundMusic.tscn @@ -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 diff --git a/assets/scenes/credits.tscn b/assets/scenes/credits.tscn new file mode 100644 index 0000000..507d342 --- /dev/null +++ b/assets/scenes/credits.tscn @@ -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 +" diff --git a/assets/scenes/cutscene.tscn b/assets/scenes/cutscene.tscn new file mode 100644 index 0000000..92d7644 --- /dev/null +++ b/assets/scenes/cutscene.tscn @@ -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") diff --git a/assets/scenes/game.tscn b/assets/scenes/game.tscn new file mode 100644 index 0000000..2dd9927 --- /dev/null +++ b/assets/scenes/game.tscn @@ -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"] diff --git a/assets/scenes/main_menu.tscn b/assets/scenes/main_menu.tscn new file mode 100644 index 0000000..97cc65e --- /dev/null +++ b/assets/scenes/main_menu.tscn @@ -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") diff --git a/assets/scenes/shop.tscn b/assets/scenes/shop.tscn new file mode 100644 index 0000000..aa0291e --- /dev/null +++ b/assets/scenes/shop.tscn @@ -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: {}" diff --git a/assets/scripts/background_scaler.gd b/assets/scripts/background_scaler.gd new file mode 100644 index 0000000..6790cba --- /dev/null +++ b/assets/scripts/background_scaler.gd @@ -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() diff --git a/assets/scripts/background_scaler.gd.uid b/assets/scripts/background_scaler.gd.uid new file mode 100644 index 0000000..24ef880 --- /dev/null +++ b/assets/scripts/background_scaler.gd.uid @@ -0,0 +1 @@ +uid://n4gqvy2ytjst diff --git a/assets/scripts/blahaj.gd b/assets/scripts/blahaj.gd new file mode 100644 index 0000000..7a4b142 --- /dev/null +++ b/assets/scripts/blahaj.gd @@ -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) diff --git a/assets/scripts/blahaj.gd.uid b/assets/scripts/blahaj.gd.uid new file mode 100644 index 0000000..e558d9a --- /dev/null +++ b/assets/scripts/blahaj.gd.uid @@ -0,0 +1 @@ +uid://doambvkr7546i diff --git a/assets/scripts/blahaj_buy.gd b/assets/scripts/blahaj_buy.gd new file mode 100644 index 0000000..114b163 --- /dev/null +++ b/assets/scripts/blahaj_buy.gd @@ -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 diff --git a/assets/scripts/blahaj_buy.gd.uid b/assets/scripts/blahaj_buy.gd.uid new file mode 100644 index 0000000..5bb3fb2 --- /dev/null +++ b/assets/scripts/blahaj_buy.gd.uid @@ -0,0 +1 @@ +uid://xye8ey43chew diff --git a/assets/scripts/bubble.gd b/assets/scripts/bubble.gd new file mode 100644 index 0000000..239eb42 --- /dev/null +++ b/assets/scripts/bubble.gd @@ -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() diff --git a/assets/scripts/bubble.gd.uid b/assets/scripts/bubble.gd.uid new file mode 100644 index 0000000..08c4b21 --- /dev/null +++ b/assets/scripts/bubble.gd.uid @@ -0,0 +1 @@ +uid://c02mfpu30mq5w diff --git a/assets/scripts/click_timer.gd b/assets/scripts/click_timer.gd new file mode 100644 index 0000000..247ce6a --- /dev/null +++ b/assets/scripts/click_timer.gd @@ -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 diff --git a/assets/scripts/click_timer.gd.uid b/assets/scripts/click_timer.gd.uid new file mode 100644 index 0000000..babe2f5 --- /dev/null +++ b/assets/scripts/click_timer.gd.uid @@ -0,0 +1 @@ +uid://cprehixvgn0k1 diff --git a/assets/scripts/credits_button.gd b/assets/scripts/credits_button.gd new file mode 100644 index 0000000..cda5ae9 --- /dev/null +++ b/assets/scripts/credits_button.gd @@ -0,0 +1,4 @@ +extends Button + +func _pressed() -> void: + get_tree().change_scene_to_file("res://assets/scenes/credits.tscn") diff --git a/assets/scripts/credits_button.gd.uid b/assets/scripts/credits_button.gd.uid new file mode 100644 index 0000000..1c1ce75 --- /dev/null +++ b/assets/scripts/credits_button.gd.uid @@ -0,0 +1 @@ +uid://qe15irthfjxd diff --git a/assets/scripts/credits_close_button.gd b/assets/scripts/credits_close_button.gd new file mode 100644 index 0000000..01712fb --- /dev/null +++ b/assets/scripts/credits_close_button.gd @@ -0,0 +1,4 @@ +extends Button + +func _pressed() -> void: + get_tree().change_scene_to_file("res://assets/scenes/main_menu.tscn") diff --git a/assets/scripts/credits_close_button.gd.uid b/assets/scripts/credits_close_button.gd.uid new file mode 100644 index 0000000..41c80c9 --- /dev/null +++ b/assets/scripts/credits_close_button.gd.uid @@ -0,0 +1 @@ +uid://65gtnts6kj5w diff --git a/assets/scripts/cutscene.gd b/assets/scripts/cutscene.gd new file mode 100644 index 0000000..ae9698c --- /dev/null +++ b/assets/scripts/cutscene.gd @@ -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() diff --git a/assets/scripts/cutscene.gd.uid b/assets/scripts/cutscene.gd.uid new file mode 100644 index 0000000..ac0c58d --- /dev/null +++ b/assets/scripts/cutscene.gd.uid @@ -0,0 +1 @@ +uid://bouh46cbivutc diff --git a/assets/scripts/fish_area_2d.gd b/assets/scripts/fish_area_2d.gd new file mode 100644 index 0000000..f9bc4f9 --- /dev/null +++ b/assets/scripts/fish_area_2d.gd @@ -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() diff --git a/assets/scripts/fish_area_2d.gd.uid b/assets/scripts/fish_area_2d.gd.uid new file mode 100644 index 0000000..ec523ef --- /dev/null +++ b/assets/scripts/fish_area_2d.gd.uid @@ -0,0 +1 @@ +uid://qp6v3st8ix3v diff --git a/assets/scripts/fish_button_to_clone.gd b/assets/scripts/fish_button_to_clone.gd new file mode 100644 index 0000000..e69de29 diff --git a/assets/scripts/fish_button_to_clone.gd.uid b/assets/scripts/fish_button_to_clone.gd.uid new file mode 100644 index 0000000..3b39dfc --- /dev/null +++ b/assets/scripts/fish_button_to_clone.gd.uid @@ -0,0 +1 @@ +uid://ckp3u7iahsl3x diff --git a/assets/scripts/fish_spawn_buy.gd b/assets/scripts/fish_spawn_buy.gd new file mode 100644 index 0000000..42b82ce --- /dev/null +++ b/assets/scripts/fish_spawn_buy.gd @@ -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 diff --git a/assets/scripts/fish_spawn_buy.gd.uid b/assets/scripts/fish_spawn_buy.gd.uid new file mode 100644 index 0000000..11dee93 --- /dev/null +++ b/assets/scripts/fish_spawn_buy.gd.uid @@ -0,0 +1 @@ +uid://cyc55s4f8xujd diff --git a/assets/scripts/game_manager.gd b/assets/scripts/game_manager.gd new file mode 100644 index 0000000..c6d3ca9 --- /dev/null +++ b/assets/scripts/game_manager.gd @@ -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() diff --git a/assets/scripts/game_manager.gd.uid b/assets/scripts/game_manager.gd.uid new file mode 100644 index 0000000..1efe8ae --- /dev/null +++ b/assets/scripts/game_manager.gd.uid @@ -0,0 +1 @@ +uid://wwqm6xuj48lg diff --git a/assets/scripts/globals.gd b/assets/scripts/globals.gd new file mode 100644 index 0000000..5063f4e --- /dev/null +++ b/assets/scripts/globals.gd @@ -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()) diff --git a/assets/scripts/globals.gd.uid b/assets/scripts/globals.gd.uid new file mode 100644 index 0000000..9fd11fe --- /dev/null +++ b/assets/scripts/globals.gd.uid @@ -0,0 +1 @@ +uid://chyoc844old4i diff --git a/assets/scripts/play_button.gd b/assets/scripts/play_button.gd new file mode 100644 index 0000000..772a0f6 --- /dev/null +++ b/assets/scripts/play_button.gd @@ -0,0 +1,4 @@ +extends Button + +func _pressed() -> void: + get_tree().change_scene_to_file("res://assets/scenes/cutscene.tscn") diff --git a/assets/scripts/play_button.gd.uid b/assets/scripts/play_button.gd.uid new file mode 100644 index 0000000..4d40d65 --- /dev/null +++ b/assets/scripts/play_button.gd.uid @@ -0,0 +1 @@ +uid://bqw60tl4be18a diff --git a/assets/scripts/sell_cost_buy.gd b/assets/scripts/sell_cost_buy.gd new file mode 100644 index 0000000..97d4692 --- /dev/null +++ b/assets/scripts/sell_cost_buy.gd @@ -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 diff --git a/assets/scripts/sell_cost_buy.gd.uid b/assets/scripts/sell_cost_buy.gd.uid new file mode 100644 index 0000000..7f80777 --- /dev/null +++ b/assets/scripts/sell_cost_buy.gd.uid @@ -0,0 +1 @@ +uid://c14tjf3qlxdi diff --git a/assets/scripts/shop_clicker.gd b/assets/scripts/shop_clicker.gd new file mode 100644 index 0000000..8178245 --- /dev/null +++ b/assets/scripts/shop_clicker.gd @@ -0,0 +1,4 @@ +extends TextureButton + +func _pressed() -> void: + get_tree().change_scene_to_file("res://assets/scenes/shop.tscn") diff --git a/assets/scripts/shop_clicker.gd.uid b/assets/scripts/shop_clicker.gd.uid new file mode 100644 index 0000000..3602e93 --- /dev/null +++ b/assets/scripts/shop_clicker.gd.uid @@ -0,0 +1 @@ +uid://24gsro7ny3g diff --git a/assets/scripts/shop_close.gd b/assets/scripts/shop_close.gd new file mode 100644 index 0000000..ef8afec --- /dev/null +++ b/assets/scripts/shop_close.gd @@ -0,0 +1,4 @@ +extends Button + +func _pressed() -> void: + get_tree().change_scene_to_file("res://assets/scenes/game.tscn") diff --git a/assets/scripts/shop_close.gd.uid b/assets/scripts/shop_close.gd.uid new file mode 100644 index 0000000..a0e1246 --- /dev/null +++ b/assets/scripts/shop_close.gd.uid @@ -0,0 +1 @@ +uid://dpoooqbw6moto diff --git a/assets/scripts/shop_manager.gd b/assets/scripts/shop_manager.gd new file mode 100644 index 0000000..15f4688 --- /dev/null +++ b/assets/scripts/shop_manager.gd @@ -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)}) diff --git a/assets/scripts/shop_manager.gd.uid b/assets/scripts/shop_manager.gd.uid new file mode 100644 index 0000000..0a51a81 --- /dev/null +++ b/assets/scripts/shop_manager.gd.uid @@ -0,0 +1 @@ +uid://deoyoa417jjia diff --git a/assets/scripts/spawn_timer.gd b/assets/scripts/spawn_timer.gd new file mode 100644 index 0000000..f7c1834 --- /dev/null +++ b/assets/scripts/spawn_timer.gd @@ -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() diff --git a/assets/scripts/spawn_timer.gd.uid b/assets/scripts/spawn_timer.gd.uid new file mode 100644 index 0000000..ff35b6d --- /dev/null +++ b/assets/scripts/spawn_timer.gd.uid @@ -0,0 +1 @@ +uid://c8ys3ls826d21 diff --git a/assets/scripts/toucan.gd b/assets/scripts/toucan.gd new file mode 100644 index 0000000..c23c9f9 --- /dev/null +++ b/assets/scripts/toucan.gd @@ -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 + ) diff --git a/assets/scripts/toucan.gd.uid b/assets/scripts/toucan.gd.uid new file mode 100644 index 0000000..3ccb356 --- /dev/null +++ b/assets/scripts/toucan.gd.uid @@ -0,0 +1 @@ +uid://bqxust6gkydnx diff --git a/assets/scripts/toucan_buy.gd b/assets/scripts/toucan_buy.gd new file mode 100644 index 0000000..0d77822 --- /dev/null +++ b/assets/scripts/toucan_buy.gd @@ -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 diff --git a/assets/scripts/toucan_buy.gd.uid b/assets/scripts/toucan_buy.gd.uid new file mode 100644 index 0000000..1a2465f --- /dev/null +++ b/assets/scripts/toucan_buy.gd.uid @@ -0,0 +1 @@ +uid://bm7jxybqhhny2 diff --git a/assets/sfx/background_music.mp3 b/assets/sfx/background_music.mp3 new file mode 100644 index 0000000..4cb4690 Binary files /dev/null and b/assets/sfx/background_music.mp3 differ diff --git a/assets/sfx/background_music.mp3.import b/assets/sfx/background_music.mp3.import new file mode 100644 index 0000000..0b2a396 --- /dev/null +++ b/assets/sfx/background_music.mp3.import @@ -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 diff --git a/assets/sfx/splash.mp3 b/assets/sfx/splash.mp3 new file mode 100644 index 0000000..0989bdd Binary files /dev/null and b/assets/sfx/splash.mp3 differ diff --git a/assets/sfx/splash.mp3.import b/assets/sfx/splash.mp3.import new file mode 100644 index 0000000..647cdc2 --- /dev/null +++ b/assets/sfx/splash.mp3.import @@ -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 diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..34aa458 --- /dev/null +++ b/export_presets.cfg @@ -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 diff --git a/font.ttf b/font.ttf new file mode 100644 index 0000000..42ac920 Binary files /dev/null and b/font.ttf differ diff --git a/font.ttf.import b/font.ttf.import new file mode 100644 index 0000000..e2397cb --- /dev/null +++ b/font.ttf.import @@ -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={} diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..f611fd3 --- /dev/null +++ b/icon.svg.import @@ -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 diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..9190aac --- /dev/null +++ b/project.godot @@ -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" diff --git a/theme.tres b/theme.tres new file mode 100644 index 0000000..dbb9ea7 --- /dev/null +++ b/theme.tres @@ -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)