From a5a3fa2acf244b50c028b8cb215e5d03dfc775e9 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Thu, 5 Feb 2026 20:50:01 +0300 Subject: [PATCH] Added cultist state and state machine --- game/characters/enemies/abstract_cultist.tscn | 11 +++++++++++ .../enemies/state_machine/cultist_state.gd | 5 +++++ .../enemies/state_machine/cultist_state.gd.uid | 1 + .../enemies/state_machine/cultist_state.tscn | 7 +++++++ .../enemies/state_machine/cultist_state_machine.gd | 13 +++++++++++++ .../state_machine/cultist_state_machine.gd.uid | 1 + .../state_machine/cultist_state_machine.tscn | 7 +++++++ game/characters/enemies/state_machine/idle_state.gd | 1 + .../enemies/state_machine/idle_state.gd.uid | 1 + 9 files changed, 47 insertions(+) create mode 100644 game/characters/enemies/state_machine/cultist_state.gd create mode 100644 game/characters/enemies/state_machine/cultist_state.gd.uid create mode 100644 game/characters/enemies/state_machine/cultist_state.tscn create mode 100644 game/characters/enemies/state_machine/cultist_state_machine.gd create mode 100644 game/characters/enemies/state_machine/cultist_state_machine.gd.uid create mode 100644 game/characters/enemies/state_machine/cultist_state_machine.tscn create mode 100644 game/characters/enemies/state_machine/idle_state.gd create mode 100644 game/characters/enemies/state_machine/idle_state.gd.uid diff --git a/game/characters/enemies/abstract_cultist.tscn b/game/characters/enemies/abstract_cultist.tscn index 3e42d9b..0a96860 100644 --- a/game/characters/enemies/abstract_cultist.tscn +++ b/game/characters/enemies/abstract_cultist.tscn @@ -3,6 +3,9 @@ [ext_resource type="Script" uid="uid://but5aeh7y1s0f" path="res://game/characters/enemies/abstract_cultist.gd" id="1_2wrno"] [ext_resource type="PackedScene" uid="uid://dtxiercm8dsfm" path="res://game/characters/enemies/cultist_sprite.tscn" id="2_tjvyk"] [ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="3_tjvyk"] +[ext_resource type="PackedScene" uid="uid://bg7k6ovbk1xgm" path="res://game/characters/enemies/state_machine/cultist_state_machine.tscn" id="4_yu28k"] +[ext_resource type="PackedScene" uid="uid://bq1v55jv4c6qe" path="res://game/characters/enemies/state_machine/cultist_state.tscn" id="5_tu2pi"] +[ext_resource type="Script" uid="uid://cdw73paln1rg8" path="res://game/characters/enemies/state_machine/idle_state.gd" id="6_e5j7k"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_mocsw"] radius = 4.0 @@ -77,6 +80,14 @@ collision_mask = 0 position = Vector2(0, 2) shape = SubResource("CapsuleShape2D_tjvyk") +[node name="CultistStateMachine" parent="." unique_id=633169960 node_paths=PackedStringArray("cultist", "initial_state") instance=ExtResource("4_yu28k")] +cultist = NodePath("..") +initial_state = NodePath("IdleState") + +[node name="IdleState" parent="CultistStateMachine" unique_id=739226464 node_paths=PackedStringArray("cultist") instance=ExtResource("5_tu2pi")] +script = ExtResource("6_e5j7k") +cultist = NodePath("../..") + [connection signal="animation_finished" from="CultistSprite" to="." method="_on_animation_finished"] [connection signal="animation_looped" from="CultistSprite" to="." method="_on_animation_looped"] [connection signal="body_entered" from="PlayerTouchArea" to="." method="_on_player_touch_area_entered"] diff --git a/game/characters/enemies/state_machine/cultist_state.gd b/game/characters/enemies/state_machine/cultist_state.gd new file mode 100644 index 0000000..52684f2 --- /dev/null +++ b/game/characters/enemies/state_machine/cultist_state.gd @@ -0,0 +1,5 @@ +class_name CultistState +extends AbstractState + + +@export var cultist: AbstractCultist diff --git a/game/characters/enemies/state_machine/cultist_state.gd.uid b/game/characters/enemies/state_machine/cultist_state.gd.uid new file mode 100644 index 0000000..c4e5e76 --- /dev/null +++ b/game/characters/enemies/state_machine/cultist_state.gd.uid @@ -0,0 +1 @@ +uid://c2et1lt2xgk45 diff --git a/game/characters/enemies/state_machine/cultist_state.tscn b/game/characters/enemies/state_machine/cultist_state.tscn new file mode 100644 index 0000000..3f2a0b9 --- /dev/null +++ b/game/characters/enemies/state_machine/cultist_state.tscn @@ -0,0 +1,7 @@ +[gd_scene format=3 uid="uid://bq1v55jv4c6qe"] + +[ext_resource type="PackedScene" uid="uid://c7adrbfobmvl8" path="res://game/state_machine/abstract_state.tscn" id="1_qehp8"] +[ext_resource type="Script" uid="uid://c2et1lt2xgk45" path="res://game/characters/enemies/state_machine/cultist_state.gd" id="2_3mu4s"] + +[node name="CultistState" unique_id=739226464 instance=ExtResource("1_qehp8")] +script = ExtResource("2_3mu4s") diff --git a/game/characters/enemies/state_machine/cultist_state_machine.gd b/game/characters/enemies/state_machine/cultist_state_machine.gd new file mode 100644 index 0000000..84e9d57 --- /dev/null +++ b/game/characters/enemies/state_machine/cultist_state_machine.gd @@ -0,0 +1,13 @@ +class_name CultistStateMachine +extends StateMachine + + +@export var cultist: AbstractCultist + + +func _ready() -> void: + if not cultist.is_node_ready(): + await cultist.ready + + super._ready() + diff --git a/game/characters/enemies/state_machine/cultist_state_machine.gd.uid b/game/characters/enemies/state_machine/cultist_state_machine.gd.uid new file mode 100644 index 0000000..522a2e7 --- /dev/null +++ b/game/characters/enemies/state_machine/cultist_state_machine.gd.uid @@ -0,0 +1 @@ +uid://dhaq52d5t5eq0 diff --git a/game/characters/enemies/state_machine/cultist_state_machine.tscn b/game/characters/enemies/state_machine/cultist_state_machine.tscn new file mode 100644 index 0000000..5380a48 --- /dev/null +++ b/game/characters/enemies/state_machine/cultist_state_machine.tscn @@ -0,0 +1,7 @@ +[gd_scene format=3 uid="uid://bg7k6ovbk1xgm"] + +[ext_resource type="PackedScene" uid="uid://3ll3i1fgktg2" path="res://game/state_machine/state_machine.tscn" id="1_xnlud"] +[ext_resource type="Script" uid="uid://dhaq52d5t5eq0" path="res://game/characters/enemies/state_machine/cultist_state_machine.gd" id="2_avauf"] + +[node name="CultistStateMachine" unique_id=633169960 instance=ExtResource("1_xnlud")] +script = ExtResource("2_avauf") diff --git a/game/characters/enemies/state_machine/idle_state.gd b/game/characters/enemies/state_machine/idle_state.gd new file mode 100644 index 0000000..42c0f3e --- /dev/null +++ b/game/characters/enemies/state_machine/idle_state.gd @@ -0,0 +1 @@ +extends CultistState diff --git a/game/characters/enemies/state_machine/idle_state.gd.uid b/game/characters/enemies/state_machine/idle_state.gd.uid new file mode 100644 index 0000000..48d4bc1 --- /dev/null +++ b/game/characters/enemies/state_machine/idle_state.gd.uid @@ -0,0 +1 @@ +uid://cdw73paln1rg8