extends Node2D @export var segements_holder : Node2D var segements : Array[snake_segment] @export var SNAKE_SPEED : float = 0.2 @export var max_snake_speed : float = 1 @export var snake_line : Line2D @export var player : Node2D var food : float = 8 @export var max_food = 8 @export var food_drain = 0.1 @export var food_gain = 0.2 var pit_apples : int = 0 var burn_apples : float = 0 var score : int = 0 # Called when the node enters the scene tree for the first time. func _ready() -> void: Router.activate_seg.connect(activate_segment) Router.eat_apple.connect(rec_apple) Router.pickup_apple.connect(pickupApple) Router.burn_apple.connect(burnApple) food = max_food #segements = get_children() as Array[snake_segment] segements.assign(segements_holder.get_children()) for i in segements.size(): if i == 0: segements[i].is_head = true else: segements[i].next_segment = segements[i-1] if i < segements.size()-1: segements[i].door.prev_seg = segements[i+1] segements[i].snake_speed = SNAKE_SPEED segements[i].seg_id = i #segements[i].z_index = 100-i activate_segment(0) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: redraw_line() if(Input.is_action_just_pressed("test_add_segment")): add_segment() burn_apples -= 0.3 * delta if burn_apples <= 0: burn_apples = 0 else: food += food_gain * delta if food > max_food: food = max_food food -= food_drain * delta if food <= 0: Router.die.emit() if SNAKE_SPEED > max_snake_speed: SNAKE_SPEED = max_snake_speed pass func activate_segment(act_segment : int): Router.current_seg = segements[act_segment] Router.cur_id = act_segment player.call_deferred("reparent",Router.current_seg) #player.reparent(Router.current_seg) #for i in segements.size(): #if act_segment == i: #segements[i].become_real() # #else: #segements[i].become_fake() func redraw_line(): snake_line.clear_points() for segment in segements: snake_line.add_point(segment.global_position) func add_segment(): var new_segement : Node2D = load("res://prefabs/snake_segment.tscn").instantiate() new_segement.global_position = segements[-1].global_position new_segement.next_segment = segements[-1] new_segement.door_disabled = true segements.append(new_segement) segements_holder.add_child(new_segement) pass func rec_apple(): #food += 1 pit_apples += 1 SNAKE_SPEED += 0.03 score += 5 add_segment() for seg in segements: seg.snake_speed = SNAKE_SPEED func pickupApple(): pit_apples -= 1 func burnApple(): burn_apples += 1 score += 5