Files
fishy-fingers/assets/scripts/game_manager.gd
2026-02-28 13:55:12 +01:00

73 lines
2.5 KiB
GDScript

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()