Set up framework for more advance pickup behaviours.

This commit is contained in:
Henry Faber 2026-07-02 15:44:23 +01:00
parent a0df0be862
commit 935b61bd3b
16 changed files with 485 additions and 20 deletions

View file

@ -5,7 +5,7 @@ class_name Player extends Area2D
@onready var movement_component: MovementComponent = %MovementComponent
@onready var shoot_component: ShootComponent = %ShootComponent
@onready var weapon_component: WeaponComponent = %WeaponComponent
@onready var powerup_spawner := _find_powerup_spawner()
@onready var powerup_spawner: PowerUpSpawner = _find_powerup_spawner()
# Get the viewport size for positioning
@onready var screensize = get_viewport().content_scale_size
@ -63,7 +63,8 @@ func _on_help_box_area_entered(area: Area2D) -> void:
return
var weapon_shot: WeaponShot = area.get_meta("weapon_shot")
weapon_component.collect_weapon(weapon_shot)
powerup_spawner.pickup_collected()
if powerup_spawner != null:
powerup_spawner.pickup_collected()
area.queue_free()

View file

@ -100,6 +100,9 @@ size = Vector2(6, 5.75)
[node name="Player" type="Area2D" unique_id=652131079]
script = ExtResource("1_ur7pv")
can_shoot = null
is_shooting = null
muzzle_flash = null
[node name="Ship" type="Sprite2D" parent="." unique_id=1155866924]
unique_name_in_owner = true

View file

@ -8,10 +8,21 @@
[ext_resource type="Resource" uid="uid://ds53sryglmf27" path="res://resources/player_weapon_resources/spread.tres" id="6_mwa7c"]
[ext_resource type="Resource" uid="uid://bhc6aja38vyr" path="res://resources/player_weapon_resources/vanguard.tres" id="7_vphcr"]
[ext_resource type="Resource" uid="uid://c41aoyka7nfr8" path="res://resources/player_weapon_resources/vanguard+.tres" id="8_g67dp"]
[ext_resource type="Resource" uid="uid://pickup_std_powerup" path="res://resources/pickups/std_powerup.tres" id="9_std"]
[ext_resource type="Resource" uid="uid://pickup_rare_powerup" path="res://resources/pickups/rare_powerup.tres" id="10_rare"]
[ext_resource type="Resource" uid="uid://pickup_drift_sine" path="res://resources/pickups/drift_sine_wave.tres" id="11_sine"]
[ext_resource type="Resource" uid="uid://pickup_drift_leaf" path="res://resources/pickups/drift_leaf_fall.tres" id="12_leaf"]
[ext_resource type="Resource" uid="uid://pickup_drift_diagonal" path="res://resources/pickups/drift_diagonal.tres" id="13_diag"]
[node name="PowerUpSpawner" type="Node2D" unique_id=1191463626]
script = ExtResource("2_9m3n7")
pickup_scene = ExtResource("1_xk8p2")
pickup_behaviors = Array[ExtResource("3_07x44")](
[ExtResource("9_std"), ExtResource("10_rare")]
)
drift_behaviors = Array[ExtResource("3_07x44")](
[ExtResource("11_sine"), ExtResource("12_leaf"), ExtResource("13_diag")]
)
all_weapon_shots = Array[ExtResource("3_07x44")](
[ExtResource("4_0eev3"), ExtResource("5_qqjui"), ExtResource("6_mwa7c"), ExtResource("7_vphcr"), ExtResource("8_g67dp")]
)

View file

@ -1,9 +1,16 @@
[gd_scene format=3 uid="uid://dsqfuv86suu17"]
[ext_resource type="Script" uid="uid://pickup_controller_uid" path="res://scripts/pickups/pickup_behavior_controller.gd" id="1_ctrl"]
[ext_resource type="Resource" uid="uid://pickup_behavior_uid" path="res://resources/pickups/std_powerup.tres" id="2_std"]
[ext_resource type="Resource" uid="uid://pickup_drift_uid" path="res://resources/pickups/drift_sine_wave.tres" id="3_drift"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_mmgg1"]
size = Vector2(14, 14)
[node name="PowerUpPickup" type="Area2D" unique_id=478708932]
script = ExtResource("1_ctrl")
behavior = ExtResource("2_std")
drift_behavior = ExtResource("3_drift")
collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=347643413]