summaryrefslogtreecommitdiff
path: root/src/game.gd
diff options
context:
space:
mode:
authorDavid Luevano Alvarado <david@luevano.xyz>2022-06-04 10:27:35 -0600
committerDavid Luevano Alvarado <david@luevano.xyz>2022-06-04 10:27:35 -0600
commit9a2bcf02c2623c8f3e8f5e74e70b3c0333790484 (patch)
tree42c7398d15c6b888b7d9d00ecb4e8fc5107501c7 /src/game.gd
parente6beb7d4d3450c68ca5ebfae040f42dd82db1b31 (diff)
refactor nodes to work with native scene changer, add functioning main menu
Diffstat (limited to 'src/game.gd')
-rw-r--r--src/game.gd37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/game.gd b/src/game.gd
new file mode 100644
index 0000000..218d975
--- /dev/null
+++ b/src/game.gd
@@ -0,0 +1,37 @@
+extends Node2D
+
+onready var _snake: Node2D = $Snake
+
+
+func _ready() -> void:
+ Event.connect("game_over", self, "_on_game_over")
+ Event.connect("game_restart", self, "_on_game_restart")
+ Event.connect("snake_segment_body_entered", self, "_on_snake_segment_body_entered")
+
+
+func _input(event: InputEvent) -> void:
+ if event.is_action_pressed("restart"):
+ Event.emit_signal("game_restart")
+
+
+func _on_snake_segment_body_entered(body: Node) -> void:
+ if body is KinematicBody2D:
+ Event.emit_signal("game_over")
+
+
+func _snake_set_process(on_off: bool) -> void:
+ _snake.propagate_call("set_process", [on_off])
+ _snake.propagate_call("set_process_internal", [on_off])
+ _snake.propagate_call("set_physics_process", [on_off])
+ _snake.propagate_call("set_physics_process_internal", [on_off])
+ _snake.propagate_call("set_process_input", [on_off])
+
+
+func _on_game_over() -> void:
+ print("game_over")
+ _snake_set_process(false)
+
+
+func _on_game_restart() -> void:
+ print("game_restart")
+ get_tree().change_scene_to(Global.GAME_NODE) \ No newline at end of file