Update flower entity to spawn snails based on game state.
- Added Snail entity with states for eating and sleeping. - Modified Flowers script to handle snail spawning logic.
This commit is contained in:
parent
9988ee23de
commit
908f834181
8 changed files with 143 additions and 2 deletions
|
|
@ -1,9 +1,10 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://bme541qdw7nai"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bme541qdw7nai"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/scripts/flowers.gd" id="1_72iub"]
|
||||
[ext_resource type="PackedScene" uid="uid://rnykx61eqxyk" path="res://scenes/decor/flower_1.tscn" id="1_biusc"]
|
||||
[ext_resource type="PackedScene" uid="uid://b7quc1hxenh5p" path="res://scenes/decor/flower_2.tscn" id="2_k5hnf"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhf4dessaw5p5" path="res://resources/particles/twirl_01.png" id="3_xruiv"]
|
||||
[ext_resource type="PackedScene" uid="uid://bnwvtlsvxjmel" path="res://entities/Snail.tscn" id="5_5uu7l"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_1tovu"]
|
||||
radius = 142.316
|
||||
|
|
@ -123,3 +124,5 @@ libraries = {
|
|||
"": SubResource("AnimationLibrary_qs4pr")
|
||||
}
|
||||
autoplay = "Highlight"
|
||||
|
||||
[node name="Snail" parent="." instance=ExtResource("5_5uu7l")]
|
||||
|
|
|
|||
24
entities/Snail.tscn
Normal file
24
entities/Snail.tscn
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://bnwvtlsvxjmel"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/scripts/snail.gd" id="1_lkvd1"]
|
||||
[ext_resource type="Script" path="res://entities/scripts/finite_state_machine.gd" id="1_tejvt"]
|
||||
[ext_resource type="Script" path="res://entities/snail/states/snail_sleeping.gd" id="3_wnrnl"]
|
||||
[ext_resource type="Script" path="res://entities/snail/states/snail_eating.gd" id="4_1abwi"]
|
||||
|
||||
[node name="Snail" type="Sprite2D"]
|
||||
script = ExtResource("1_lkvd1")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
|
||||
[node name="Polygon2D" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(-8, -8, 4, -11, 10, 5, -7, 9, -25, 8, -22, 0, -11, 0)
|
||||
|
||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("initial_state")]
|
||||
script = ExtResource("1_tejvt")
|
||||
initial_state = NodePath("Sleeping")
|
||||
|
||||
[node name="Sleeping" type="Node" parent="StateMachine"]
|
||||
script = ExtResource("3_wnrnl")
|
||||
|
||||
[node name="Eating" type="Node" parent="StateMachine"]
|
||||
script = ExtResource("4_1abwi")
|
||||
|
|
@ -3,8 +3,40 @@ class_name Flowers
|
|||
|
||||
@onready var outline = $AreaHighlight
|
||||
|
||||
@export var health : int = 100
|
||||
|
||||
var spawn_snails : bool = false
|
||||
|
||||
@onready var spawn_area = $FlowerCollectionArea/CollisionShape2D
|
||||
@onready var snail = $Snail
|
||||
|
||||
func _ready():
|
||||
hide_outline()
|
||||
|
||||
## Check if this level is spawning snails or not
|
||||
if GameState.spawn_snails:
|
||||
Log.pr("Going to be spawning snails!")
|
||||
spawn_snails = true
|
||||
|
||||
Log.pr(get_random_snail_spawn())
|
||||
snail.global_position = get_random_snail_spawn()
|
||||
|
||||
|
||||
func show_outline():
|
||||
outline.visible = true
|
||||
|
||||
func hide_outline():
|
||||
outline.visible = false
|
||||
outline.visible = false
|
||||
|
||||
|
||||
func get_random_snail_spawn():
|
||||
var circle_radius = spawn_area.shape.radius
|
||||
var random_angle = randf_range(0, TAU)
|
||||
|
||||
var x = circle_radius * cos(random_angle)
|
||||
var y = circle_radius * sin(random_angle)
|
||||
|
||||
var circle_center = spawn_area.global_position
|
||||
var random_point = circle_center + Vector2(x, y)
|
||||
|
||||
return random_point
|
||||
4
entities/scripts/snail.gd
Normal file
4
entities/scripts/snail.gd
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
extends Sprite2D
|
||||
class_name Snail
|
||||
|
||||
var eating : bool = false
|
||||
18
entities/snail/states/snail_eating.gd
Normal file
18
entities/snail/states/snail_eating.gd
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
extends State
|
||||
class_name SnailEating
|
||||
|
||||
@onready var snail = get_parent().get_parent() as Snail # I think this is bad but I dont care it works
|
||||
|
||||
func enter(_msg := {}):
|
||||
Log.pr("I am a snail...")
|
||||
snail.eating = true
|
||||
|
||||
func exit():
|
||||
snail.eating = false
|
||||
|
||||
func update(_delta : float):
|
||||
pass
|
||||
|
||||
func physics_update(_delta : float) -> void:
|
||||
pass
|
||||
|
||||
17
entities/snail/states/snail_sleeping.gd
Normal file
17
entities/snail/states/snail_sleeping.gd
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
extends State
|
||||
class_name SnailSleeping
|
||||
|
||||
@onready var snail = get_parent().get_parent() as Snail # I think this is bad but I dont care it works
|
||||
|
||||
func enter(_msg := {}):
|
||||
Log.pr("I am a snail asleep...")
|
||||
|
||||
func exit():
|
||||
pass
|
||||
|
||||
func update(_delta : float):
|
||||
pass
|
||||
|
||||
func physics_update(_delta : float) -> void:
|
||||
pass
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue