extends Area2D class_name Fruit const TILE_SIZE = 40 var all_positions : Array[Vector2] = [] const possible_growth_amounts = [1,1,1,3,3,5,10] const growth_sprite_map : Dictionary[int, CompressedTexture2D] = {1: preload("res://Sprites/cherry.png"), 3: preload("res://Sprites/lemon.png"), 5: preload("res://Sprites/apple.png"), 10: preload("res://Sprites/watermelon.png")} var growth_amount : int = 1 @onready var label : Label = $Label @onready var sprite : Sprite2D = $Sprite2D func _ready() -> void: # Determine the level limits var level : Area2D = get_tree().get_first_node_in_group("Level") var x_bounds : Vector2 = level.position.x * Vector2.ONE + Vector2(-TILE_SIZE, TILE_SIZE) * level.scale.x / 2 var y_bounds : Vector2 = level.position.y * Vector2.ONE + Vector2(-TILE_SIZE, TILE_SIZE) * level.scale.y / 2 # Determine the possible x and y coordinates var possible_x : Array = range(x_bounds.x, x_bounds.y + 20, TILE_SIZE) var possible_y : Array = range(y_bounds.x, y_bounds.y + 20, TILE_SIZE) # Add each combination of x and y to the list of positions for x in possible_x: for y in possible_y: all_positions.append(Vector2(x, y)) respawn() func _process(_delta: float) -> void: if !GridManager.current_allowed_spawns.is_empty() and not position in GridManager.current_allowed_spawns: respawn() var obstacles : Array[Node] = get_tree().get_nodes_in_group("BlocksSpawn") for obstacle in obstacles: if obstacle is Area2D and not obstacle == self: if position == obstacle.position: respawn() func respawn() -> void: var possible_positions : Array[Vector2] if GridManager.current_allowed_spawns.is_empty(): possible_positions = all_positions.duplicate() else: possible_positions = GridManager.current_allowed_spawns.duplicate() var obstacles : Array[Node] = get_tree().get_nodes_in_group("BlocksSpawn") for obstacle in obstacles: if obstacle is Area2D: possible_positions.erase(obstacle.position) if possible_positions.is_empty(): queue_free() return var chosen_position = possible_positions.pick_random() position = chosen_position growth_amount = possible_growth_amounts.pick_random() label.text = str(growth_amount) sprite.texture = growth_sprite_map[growth_amount]