From bdce796775cd26e8ac27dbb0776f6965454010d3 Mon Sep 17 00:00:00 2001
From: Sam Keddy <skeddy13@yahoo.com>
Date: Fri, 16 Feb 2024 16:49:38 -0500
Subject: [PATCH] fish moves slower when hungry, food has unique value

---
 fish.gd | 37 ++++++++++++++++++++-----------------
 food.gd |  2 ++
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/fish.gd b/fish.gd
index 9824a67..9ca6a52 100644
--- a/fish.gd
+++ b/fish.gd
@@ -1,13 +1,17 @@
 extends RigidBody2D
 
-@export var speed = 100
+var maxSpeed = 100
+var speed = maxSpeed
 
 enum {IDLE, SWIM, FOOD}
 var state = IDLE
 
 var boredom = 0
+var boredomThreshold = 800
 var tired = 0
+var tiredThreshold = 2000
 var hunger = 5000
+var hungerThreshold = 5000
 var direction = Vector2.ZERO
 
 var velocity = Vector2.ZERO
@@ -47,25 +51,29 @@ func _process(delta):
 
 func idle(): 
 	boredom = boredom + rng.randi_range(0,5)
-	if (boredom > 800):
+	if (boredom > boredomThreshold):
 		state = SWIM
 		boredom = 0
 	pass
 
 func swim():
 	
-	if (hunger>5000 && FoodGroup.get_children().size() > 0): 
+	if (hunger>hungerThreshold/2 && FoodGroup.get_children().size() > 0): 
 		state = FOOD
 		return food()
 	
-	if (tired == 0): direction = Vector2(rng.randi_range(-1,1), rng.randi_range(-1,1))
+	if (tired == 0): 
+		direction = Vector2(rng.randi_range(-1,1), rng.randi_range(-1,1))
+		if (hunger > hungerThreshold/2): speed = maxSpeed / 5
+		else: speed = maxSpeed
 	
-	apply_impulse(Vector2(direction.x/2,direction.y/5), Vector2(0.5,0.5))
+	apply_impulse(Vector2(direction.x/100*speed,direction.y/500*speed), Vector2(0.5,0.5))
 	
 	tired = tired + rng.randi_range(0,5)
-	if (tired > 2000):
+	if (tired > tiredThreshold):
 		state = IDLE
 		tired = 0
+		if (hunger > hungerThreshold/2): tired = tiredThreshold/2
 	pass
 	
 func food():
@@ -85,13 +93,6 @@ func food():
 	direction = mouthCol.get_global_position().direction_to(closest_food.get_global_position())	
 	apply_impulse(Vector2(direction.x/2,direction.y/3), Vector2(0.5,0.5))
 
-
-#func _on_body_entered(body):
-#	if body.name == "Food":
-#		print("entered body")
-#		hunger = 0
-#		body.queue_free()
-
 var fishSprites = ['black-bass','carp','gargle','horse-mackerel','loach','pond-smelt','rainbow-trout','red-snapper','sockeye-salmon','yellow-tang']
 
 func _input(event):
@@ -99,8 +100,10 @@ func _input(event):
 		var randomFishSprite = rng.randi_range(0,fishSprites.size()-1)
 		sprite.texture = load("res://art/fish/"+fishSprites[randomFishSprite]+".png")
 
-func _on_fish_mouth_body_shape_entered(body_rid, body, body_shape_index, local_shape_index):
-	if body.name == "Food":
+func _on_fish_mouth_body_shape_entered(body_rid, collidedObject, body_shape_index, local_shape_index):
+	if collidedObject.name == "Food":
 		print("got good")
-		#hunger = 0
-		body.queue_free()
+		hunger = hunger - collidedObject.value
+		if (hunger < 0): hunger = 0
+		print("healed fish hunger",collidedObject.value, "now", hunger)
+		collidedObject.queue_free()
diff --git a/food.gd b/food.gd
index 50eba60..50855e2 100644
--- a/food.gd
+++ b/food.gd
@@ -1,5 +1,7 @@
 extends RigidBody2D
 
+@export var value = 3000
+
 func _process(delta):
 	if (self.position.y > 270):
 		queue_free()