From bd197168c39551c3456099ed2a39375a8442483f Mon Sep 17 00:00:00 2001
From: David Luevano Alvarado <david@luevano.xyz>
Date: Tue, 31 May 2022 03:49:28 -0600
Subject: working snake generation and path following, minor refactor

---
 src/Main.tscn                                      |   2 +-
 src/entities/actors/snake/Snake.tscn               |  39 -------------------
 .../actors/snake/body_segment/BodySegment.tscn     |  28 --------------
 .../actors/snake/body_segment/body_segment.gd      |  27 -------------
 src/entities/actors/snake/head/Head.tscn           |  13 -------
 src/entities/actors/snake/head/head.gd             |  34 -----------------
 src/entities/actors/snake/scenes/Body.tscn         |  14 +++++++
 src/entities/actors/snake/scenes/Head.tscn         |  10 +++++
 src/entities/actors/snake/scenes/Snake.tscn        |  21 +++++++++++
 src/entities/actors/snake/scenes/Tail.tscn         |  15 ++++++++
 .../actors/snake/scripts/generic_segment.gd        |   8 ++++
 src/entities/actors/snake/scripts/head.gd          |  30 +++++++++++++++
 src/entities/actors/snake/scripts/snake.gd         |  42 +++++++++++++++++++++
 src/entities/actors/snake/snake.gd                 |  35 -----------------
 src/entities/actors/snake/sprites/1x1.png          | Bin 82 -> 0 bytes
 src/entities/actors/snake/sprites/1x1.png.import   |  35 -----------------
 src/entities/actors/snake/sprites/body.png         | Bin 0 -> 168 bytes
 src/entities/actors/snake/sprites/body.png.import  |  35 +++++++++++++++++
 src/entities/actors/snake/sprites/segment.png      | Bin 168 -> 0 bytes
 .../actors/snake/sprites/segment.png.import        |  35 -----------------
 src/global.gd                                      |   2 +-
 src/project.godot                                  |   2 +-
 22 files changed, 178 insertions(+), 249 deletions(-)
 delete mode 100644 src/entities/actors/snake/Snake.tscn
 delete mode 100644 src/entities/actors/snake/body_segment/BodySegment.tscn
 delete mode 100644 src/entities/actors/snake/body_segment/body_segment.gd
 delete mode 100644 src/entities/actors/snake/head/Head.tscn
 delete mode 100644 src/entities/actors/snake/head/head.gd
 create mode 100644 src/entities/actors/snake/scenes/Body.tscn
 create mode 100644 src/entities/actors/snake/scenes/Head.tscn
 create mode 100644 src/entities/actors/snake/scenes/Snake.tscn
 create mode 100644 src/entities/actors/snake/scenes/Tail.tscn
 create mode 100644 src/entities/actors/snake/scripts/generic_segment.gd
 create mode 100644 src/entities/actors/snake/scripts/head.gd
 create mode 100644 src/entities/actors/snake/scripts/snake.gd
 delete mode 100644 src/entities/actors/snake/snake.gd
 delete mode 100644 src/entities/actors/snake/sprites/1x1.png
 delete mode 100644 src/entities/actors/snake/sprites/1x1.png.import
 create mode 100644 src/entities/actors/snake/sprites/body.png
 create mode 100644 src/entities/actors/snake/sprites/body.png.import
 delete mode 100644 src/entities/actors/snake/sprites/segment.png
 delete mode 100644 src/entities/actors/snake/sprites/segment.png.import

diff --git a/src/Main.tscn b/src/Main.tscn
index d7a8527..3a3eb6b 100644
--- a/src/Main.tscn
+++ b/src/Main.tscn
@@ -1,6 +1,6 @@
 [gd_scene load_steps=2 format=2]
 
-[ext_resource path="res://entities/actors/snake/Snake.tscn" type="PackedScene" id=1]
+[ext_resource path="res://entities/actors/snake/scenes/Snake.tscn" type="PackedScene" id=1]
 
 [node name="Main" type="Node2D"]
 
diff --git a/src/entities/actors/snake/Snake.tscn b/src/entities/actors/snake/Snake.tscn
deleted file mode 100644
index 5548f40..0000000
--- a/src/entities/actors/snake/Snake.tscn
+++ /dev/null
@@ -1,39 +0,0 @@
-[gd_scene load_steps=5 format=2]
-
-[ext_resource path="res://entities/actors/snake/head/Head.tscn" type="PackedScene" id=1]
-[ext_resource path="res://entities/actors/snake/body_segment/BodySegment.tscn" type="PackedScene" id=2]
-[ext_resource path="res://entities/actors/snake/snake.gd" type="Script" id=3]
-
-[sub_resource type="Curve2D" id=1]
-_data = {
-"points": PoolVector2Array(  )
-}
-
-[node name="Snake" type="Node2D"]
-script = ExtResource( 3 )
-BODY_SEGMENT_NP = ExtResource( 2 )
-
-[node name="Head" parent="." instance=ExtResource( 1 )]
-
-[node name="BodySegment" parent="." instance=ExtResource( 2 )]
-position = Vector2( 0, 16 )
-PREV_SEGMENT_NP = NodePath("../Head")
-
-[node name="BodySegment2" parent="." instance=ExtResource( 2 )]
-position = Vector2( 0, 32 )
-PREV_SEGMENT_NP = NodePath("../BodySegment")
-
-[node name="BodySegment3" parent="." instance=ExtResource( 2 )]
-position = Vector2( 0, 48 )
-PREV_SEGMENT_NP = NodePath("../BodySegment2")
-
-[node name="BodySegment4" parent="." instance=ExtResource( 2 )]
-position = Vector2( 0, 64 )
-PREV_SEGMENT_NP = NodePath("../BodySegment3")
-
-[node name="Path" type="Path2D" parent="."]
-curve = SubResource( 1 )
-
-[node name="PathFollow" type="PathFollow2D" parent="Path"]
-loop = false
-lookahead = 1.0
diff --git a/src/entities/actors/snake/body_segment/BodySegment.tscn b/src/entities/actors/snake/body_segment/BodySegment.tscn
deleted file mode 100644
index 4bf02b0..0000000
--- a/src/entities/actors/snake/body_segment/BodySegment.tscn
+++ /dev/null
@@ -1,28 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://entities/actors/snake/sprites/segment.png" type="Texture" id=1]
-[ext_resource path="res://entities/actors/snake/body_segment/body_segment.gd" type="Script" id=2]
-
-[node name="BodySegment" type="Node2D"]
-script = ExtResource( 2 )
-
-[node name="Sprite" type="Sprite" parent="."]
-texture = ExtResource( 1 )
-
-[node name="DirectionLine" type="Line2D" parent="."]
-visible = false
-points = PoolVector2Array( 0, 0, 0, -32 )
-width = 2.0
-default_color = Color( 1, 0, 0, 1 )
-
-[node name="DirectionToPreviousLine" type="Line2D" parent="."]
-visible = false
-points = PoolVector2Array( 0, 0, 0, -32 )
-width = 2.0
-default_color = Color( 0, 0, 1, 1 )
-
-[node name="PrevPivot" type="Node2D" parent="."]
-position = Vector2( 0, -8 )
-
-[node name="NextPivot" type="Node2D" parent="."]
-position = Vector2( 0, 8 )
diff --git a/src/entities/actors/snake/body_segment/body_segment.gd b/src/entities/actors/snake/body_segment/body_segment.gd
deleted file mode 100644
index eabede3..0000000
--- a/src/entities/actors/snake/body_segment/body_segment.gd
+++ /dev/null
@@ -1,27 +0,0 @@
-extends Node2D
-
-export(NodePath) var PREV_SEGMENT_NP: NodePath
-
-onready var prev_segment: Node2D = get_node(PREV_SEGMENT_NP)
-onready var prev_segment_next_pivot: Node2D = prev_segment.get_node("NextPivot")
-onready var _prev_pivot: Node2D = $PrevPivot
-onready var _next_pivot: Node2D = $NextPivot
-
-var rot_speed: float = Global.SNAKE_SEGMENT_ROT_SPEED
-
-var prev_segment_next_pivot_to_center: Vector2
-var _center_to_prev_pivot: Vector2
-var _angle_between_segments: float
-
-
-func _process(delta: float) -> void:
-	prev_segment_next_pivot_to_center = prev_segment_next_pivot.global_position - prev_segment.global_position
-	_center_to_prev_pivot = _prev_pivot.global_position - global_position
-
-	_angle_between_segments = _center_to_prev_pivot.angle_to(prev_segment_next_pivot_to_center)
-	if _angle_between_segments > 0.0:
-		rotate(deg2rad(-rot_speed * delta))
-	else:
-		rotate(deg2rad(rot_speed * delta))
-
-	global_position = prev_segment_next_pivot.global_position - _center_to_prev_pivot
diff --git a/src/entities/actors/snake/head/Head.tscn b/src/entities/actors/snake/head/Head.tscn
deleted file mode 100644
index a77cbef..0000000
--- a/src/entities/actors/snake/head/Head.tscn
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://entities/actors/snake/sprites/head.png" type="Texture" id=1]
-[ext_resource path="res://entities/actors/snake/head/head.gd" type="Script" id=2]
-
-[node name="HeadPoint" type="Node2D"]
-script = ExtResource( 2 )
-
-[node name="Sprite" type="Sprite" parent="."]
-texture = ExtResource( 1 )
-
-[node name="NextPivot" type="Node2D" parent="."]
-position = Vector2( 0, 8 )
diff --git a/src/entities/actors/snake/head/head.gd b/src/entities/actors/snake/head/head.gd
deleted file mode 100644
index 96707b7..0000000
--- a/src/entities/actors/snake/head/head.gd
+++ /dev/null
@@ -1,34 +0,0 @@
-extends Node2D
-
-var speed: float = Global.SNAKE_SPEED
-var rot_speed: float = Global.SNAKE_ROT_SPEED
-var position_update_interval: float = Global.SNAKE_POSITION_UPDATE_INTERVAL
-
-var _direction: Vector2 = Vector2.UP
-var _time_elapsed: float = 0.0
-
-
-func _ready():
-	Event.emit_signal("new_curve_point", global_position)
-
-
-func _process(delta: float) -> void:
-	if Input.is_action_pressed("move_left"):
-		# _direction = _direction.rotated(deg2rad(-ROT_SPEED))
-		rotate(deg2rad(-rot_speed * delta))
-	if Input.is_action_pressed("move_right"):
-		# _direction = _direction.rotated(deg2rad(ROT_SPEED))
-		rotate(deg2rad(rot_speed * delta))
-
-	move_local_x(_direction.x * speed * delta)
-	move_local_y(_direction.y * speed * delta)
-
-	_handle_time_elapsed(delta)
-
-
-# using a timer is not recommended for < 0.01
-func _handle_time_elapsed(delta: float) -> void:
-	if _time_elapsed >= position_update_interval:
-		Event.emit_signal("new_curve_point", global_position)
-		_time_elapsed = 0.0
-	_time_elapsed += delta
diff --git a/src/entities/actors/snake/scenes/Body.tscn b/src/entities/actors/snake/scenes/Body.tscn
new file mode 100644
index 0000000..93020b2
--- /dev/null
+++ b/src/entities/actors/snake/scenes/Body.tscn
@@ -0,0 +1,14 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://entities/actors/snake/sprites/body.png" type="Texture" id=1]
+[ext_resource path="res://entities/actors/snake/scripts/generic_segment.gd" type="Script" id=2]
+
+[node name="BodyPathFollow" type="PathFollow2D"]
+loop = false
+script = ExtResource( 2 )
+
+[node name="Body" type="Node2D" parent="."]
+rotation = 1.5708
+
+[node name="Sprite" type="Sprite" parent="Body"]
+texture = ExtResource( 1 )
diff --git a/src/entities/actors/snake/scenes/Head.tscn b/src/entities/actors/snake/scenes/Head.tscn
new file mode 100644
index 0000000..2dc1666
--- /dev/null
+++ b/src/entities/actors/snake/scenes/Head.tscn
@@ -0,0 +1,10 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://entities/actors/snake/sprites/head.png" type="Texture" id=1]
+[ext_resource path="res://entities/actors/snake/scripts/head.gd" type="Script" id=2]
+
+[node name="HeadPoint" type="Node2D"]
+script = ExtResource( 2 )
+
+[node name="Sprite" type="Sprite" parent="."]
+texture = ExtResource( 1 )
diff --git a/src/entities/actors/snake/scenes/Snake.tscn b/src/entities/actors/snake/scenes/Snake.tscn
new file mode 100644
index 0000000..cb1eb2a
--- /dev/null
+++ b/src/entities/actors/snake/scenes/Snake.tscn
@@ -0,0 +1,21 @@
+[gd_scene load_steps=6 format=2]
+
+[ext_resource path="res://entities/actors/snake/scenes/Head.tscn" type="PackedScene" id=1]
+[ext_resource path="res://entities/actors/snake/scenes/Body.tscn" type="PackedScene" id=2]
+[ext_resource path="res://entities/actors/snake/scripts/snake.gd" type="Script" id=3]
+[ext_resource path="res://entities/actors/snake/scenes/Tail.tscn" type="PackedScene" id=4]
+
+[sub_resource type="Curve2D" id=1]
+_data = {
+"points": PoolVector2Array(  )
+}
+
+[node name="Snake" type="Node2D"]
+script = ExtResource( 3 )
+BODY_SEGMENT_NP = ExtResource( 2 )
+TAIL_SEGMENT_NP = ExtResource( 4 )
+
+[node name="Path" type="Path2D" parent="."]
+curve = SubResource( 1 )
+
+[node name="Head" parent="." instance=ExtResource( 1 )]
diff --git a/src/entities/actors/snake/scenes/Tail.tscn b/src/entities/actors/snake/scenes/Tail.tscn
new file mode 100644
index 0000000..bb30c42
--- /dev/null
+++ b/src/entities/actors/snake/scenes/Tail.tscn
@@ -0,0 +1,15 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://entities/actors/snake/sprites/tail.png" type="Texture" id=1]
+[ext_resource path="res://entities/actors/snake/scripts/generic_segment.gd" type="Script" id=2]
+
+[node name="TailPathFollow" type="PathFollow2D"]
+loop = false
+script = ExtResource( 2 )
+TYPE = "tail"
+
+[node name="Tail" type="Node2D" parent="."]
+rotation = 1.5708
+
+[node name="Sprite" type="Sprite" parent="Tail"]
+texture = ExtResource( 1 )
diff --git a/src/entities/actors/snake/scripts/generic_segment.gd b/src/entities/actors/snake/scripts/generic_segment.gd
new file mode 100644
index 0000000..ec34f43
--- /dev/null
+++ b/src/entities/actors/snake/scripts/generic_segment.gd
@@ -0,0 +1,8 @@
+extends PathFollow2D
+
+export(String, "body", "tail") var TYPE: String = "body"
+var speed: float = Global.SNAKE_SPEED
+
+
+func _process(delta: float) -> void:
+	offset += speed * delta
\ No newline at end of file
diff --git a/src/entities/actors/snake/scripts/head.gd b/src/entities/actors/snake/scripts/head.gd
new file mode 100644
index 0000000..ea28f74
--- /dev/null
+++ b/src/entities/actors/snake/scripts/head.gd
@@ -0,0 +1,30 @@
+extends Node2D
+
+var speed: float = Global.SNAKE_SPEED
+var rot_speed: float = Global.SNAKE_ROT_SPEED
+var position_update_interval: float = Global.SNAKE_POSITION_UPDATE_INTERVAL
+
+var _direction: Vector2 = Vector2.UP
+var _time_elapsed: float = 0.0
+
+
+func _process(delta: float) -> void:
+	if Input.is_action_pressed("move_left"):
+		# _direction = _direction.rotated(deg2rad(-ROT_SPEED))
+		rotate(deg2rad(-rot_speed * delta))
+	if Input.is_action_pressed("move_right"):
+		# _direction = _direction.rotated(deg2rad(ROT_SPEED))
+		rotate(deg2rad(rot_speed * delta))
+
+	move_local_x(_direction.x * speed * delta)
+	move_local_y(_direction.y * speed * delta)
+
+	_handle_time_elapsed(delta)
+
+
+# using a timer is not recommended for < 0.01
+func _handle_time_elapsed(delta: float) -> void:
+	if _time_elapsed >= position_update_interval:
+		Event.emit_signal("new_curve_point", global_position)
+		_time_elapsed = 0.0
+	_time_elapsed += delta
diff --git a/src/entities/actors/snake/scripts/snake.gd b/src/entities/actors/snake/scripts/snake.gd
new file mode 100644
index 0000000..e604011
--- /dev/null
+++ b/src/entities/actors/snake/scripts/snake.gd
@@ -0,0 +1,42 @@
+class_name Snake
+extends Node2D
+
+export(PackedScene) var BODY_SEGMENT_NP: PackedScene
+export(PackedScene) var TAIL_SEGMENT_NP: PackedScene
+
+onready var path: Path2D = $Path
+
+var current_body_segments: int = 0
+var max_body_segments: int = 1
+var body_segment_size: float = 16.0
+
+
+func _ready():
+	Event.connect("new_curve_point", self, "_on_Head_new_curve_point")
+
+
+func _draw() -> void:
+	if path.curve.get_baked_points().size() >= 2:
+		draw_polyline(path.curve.get_baked_points(), Color.aquamarine, 1, true)
+
+
+func add_point_to_curve(coordinates: Vector2) -> void:
+	path.curve.add_point(coordinates)
+	# update call is to draw curve as there are new points
+	update()
+
+	if current_body_segments < max_body_segments:
+		add_snake_segment(BODY_SEGMENT_NP)
+	elif current_body_segments == max_body_segments:
+		add_snake_segment(TAIL_SEGMENT_NP)
+
+
+func add_snake_segment(type: PackedScene) -> void:
+	if path.curve.get_baked_length() >= (current_body_segments + 1.0) * body_segment_size:
+		var _temp_body_segment: PathFollow2D = type.instance()
+		path.add_child(_temp_body_segment)
+		current_body_segments += 1
+
+
+func _on_Head_new_curve_point(coordinates: Vector2) -> void:
+	add_point_to_curve(coordinates)
diff --git a/src/entities/actors/snake/snake.gd b/src/entities/actors/snake/snake.gd
deleted file mode 100644
index fb817da..0000000
--- a/src/entities/actors/snake/snake.gd
+++ /dev/null
@@ -1,35 +0,0 @@
-class_name Snake
-extends Node2D
-
-export(PackedScene) var BODY_SEGMENT_NP: PackedScene
-
-onready var head: Node2D = $Head
-onready var path: Path2D = $Path
-onready var path_follow: PathFollow2D = $Path/PathFollow
-onready var curve: Curve2D = Curve2D.new()
-
-var speed: float = Global.SNAKE_SPEED
-
-
-func _ready():
-	Event.connect("new_curve_point", self, "_on_Head_new_curve_point")
-	path.curve = curve
-
-
-func _process(delta: float) -> void:
-	path_follow.offset = path_follow.offset + speed * delta
-
-
-func _draw() -> void:
-	if path.curve.get_baked_points().size() >= 2:
-		draw_polyline(path.curve.get_baked_points(), Color.aquamarine, 1, true)
-
-
-func add_point_to_curve(coordinates: Vector2) -> void:
-	path.curve.add_point(coordinates)
-	# update call is to draw curve
-	update()
-
-
-func _on_Head_new_curve_point(coordinates: Vector2) -> void:
-	add_point_to_curve(coordinates)
diff --git a/src/entities/actors/snake/sprites/1x1.png b/src/entities/actors/snake/sprites/1x1.png
deleted file mode 100644
index 89d23b0..0000000
Binary files a/src/entities/actors/snake/sprites/1x1.png and /dev/null differ
diff --git a/src/entities/actors/snake/sprites/1x1.png.import b/src/entities/actors/snake/sprites/1x1.png.import
deleted file mode 100644
index f3df488..0000000
--- a/src/entities/actors/snake/sprites/1x1.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/1x1.png-a365c2cbbf23daa7097bc2296bfd3da2.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://entities/actors/snake/sprites/1x1.png"
-dest_files=[ "res://.import/1x1.png-a365c2cbbf23daa7097bc2296bfd3da2.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=false
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=false
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=false
-svg/scale=1.0
diff --git a/src/entities/actors/snake/sprites/body.png b/src/entities/actors/snake/sprites/body.png
new file mode 100644
index 0000000..ebef3b4
Binary files /dev/null and b/src/entities/actors/snake/sprites/body.png differ
diff --git a/src/entities/actors/snake/sprites/body.png.import b/src/entities/actors/snake/sprites/body.png.import
new file mode 100644
index 0000000..31a844f
--- /dev/null
+++ b/src/entities/actors/snake/sprites/body.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/body.png-01afb246ae03e839b63ac17a1e318df3.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://entities/actors/snake/sprites/body.png"
+dest_files=[ "res://.import/body.png-01afb246ae03e839b63ac17a1e318df3.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=false
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0
diff --git a/src/entities/actors/snake/sprites/segment.png b/src/entities/actors/snake/sprites/segment.png
deleted file mode 100644
index ebef3b4..0000000
Binary files a/src/entities/actors/snake/sprites/segment.png and /dev/null differ
diff --git a/src/entities/actors/snake/sprites/segment.png.import b/src/entities/actors/snake/sprites/segment.png.import
deleted file mode 100644
index fb8abf6..0000000
--- a/src/entities/actors/snake/sprites/segment.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/segment.png-63caac6c6161fc5c022cf02c07309ac1.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://entities/actors/snake/sprites/segment.png"
-dest_files=[ "res://.import/segment.png-63caac6c6161fc5c022cf02c07309ac1.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=false
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=false
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=false
-svg/scale=1.0
diff --git a/src/global.gd b/src/global.gd
index 5462b94..e121fd0 100644
--- a/src/global.gd
+++ b/src/global.gd
@@ -1,6 +1,6 @@
 extends Node
 
 var SNAKE_SPEED: float = 50.0
-var SNAKE_ROT_SPEED: float = 100.0
+var SNAKE_ROT_SPEED: float = 200.0
 var SNAKE_SEGMENT_ROT_SPEED: float = 80.0
 var SNAKE_POSITION_UPDATE_INTERVAL: float = 0.01
\ No newline at end of file
diff --git a/src/project.godot b/src/project.godot
index 8e761d4..c23bed6 100644
--- a/src/project.godot
+++ b/src/project.godot
@@ -17,7 +17,7 @@ _global_script_classes=[ {
 "base": "Node2D",
 "class": "Snake",
 "language": "GDScript",
-"path": "res://entities/actors/snake/snake.gd"
+"path": "res://entities/actors/snake/scripts/snake.gd"
 } ]
 _global_script_class_icons={
 "Main": "",
-- 
cgit v1.2.3-70-g09d2