Test scene for new actor

This commit is contained in:
Marco 2025-02-23 17:18:48 +01:00
commit 0e15d2acba
10 changed files with 142 additions and 21 deletions

View file

@ -1,4 +1,4 @@
[gd_resource type="Resource" script_class="DebugMapSelectData" load_steps=24 format=3 uid="uid://d1lc8lhq1b05p"]
[gd_resource type="Resource" script_class="DebugMapSelectData" load_steps=27 format=3 uid="uid://d1lc8lhq1b05p"]
[ext_resource type="Script" path="res://Scripts/Resources/DebugMenu/DebugMapSelectData.cs" id="1_6kwth"]
[ext_resource type="Script" path="res://Scripts/Resources/MapStartDataResource.cs" id="1_ov731"]
@ -7,6 +7,7 @@
[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="4_38yta"]
[ext_resource type="Resource" uid="uid://cj5aa7btaw6q0" path="res://Resources/Items/Blue_Keycard.tres" id="5_em757"]
[ext_resource type="Resource" uid="uid://clr1gln7nxa1o" path="res://Resources/Items/Power_Pickup.tres" id="6_sdmg8"]
[ext_resource type="Resource" uid="uid://cs3ihltcn2166" path="res://Resources/Items/IcicleGun.tres" id="7_b3oo5"]
[sub_resource type="Resource" id="Resource_qnbi6"]
script = ExtResource("2_tnajf")
@ -104,6 +105,18 @@ Enabled = true
Path = "res://Scenes/Maps/SimpleScene.tscn"
_name = "Default Scene"
[sub_resource type="Resource" id="Resource_ujm2a"]
script = ExtResource("1_ov731")
EggIndex = 0
StartingEquipment = [ExtResource("7_b3oo5")]
[sub_resource type="Resource" id="Resource_6ijnv"]
script = ExtResource("2_tnajf")
Enabled = true
Path = "res://Scenes/Maps/NewActorTest.tscn"
_name = "New Actor Test"
StartData = SubResource("Resource_ujm2a")
[resource]
script = ExtResource("1_6kwth")
Maps = Array[Object]([SubResource("Resource_qnbi6"), SubResource("Resource_0k62o"), SubResource("Resource_edoov"), SubResource("Resource_47bot"), SubResource("Resource_mgdm6"), SubResource("Resource_v2as6"), SubResource("Resource_pein5"), SubResource("Resource_6wrc7"), SubResource("Resource_x3w7w"), SubResource("Resource_ajht5"), SubResource("Resource_7vmdn")])
Maps = Array[Object]([SubResource("Resource_qnbi6"), SubResource("Resource_0k62o"), SubResource("Resource_edoov"), SubResource("Resource_47bot"), SubResource("Resource_mgdm6"), SubResource("Resource_v2as6"), SubResource("Resource_pein5"), SubResource("Resource_6wrc7"), SubResource("Resource_x3w7w"), SubResource("Resource_ajht5"), SubResource("Resource_7vmdn"), SubResource("Resource_6ijnv")])

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=37 format=3 uid="uid://bqjcwxene73l2"]
[gd_scene load_steps=39 format=3 uid="uid://bqjcwxene73l2"]
[ext_resource type="Script" path="res://Scripts/Components/Actors/Actor.cs" id="1_k5cyk"]
[ext_resource type="Texture2D" uid="uid://hukxr2e63gky" path="res://Sprites/Actors/Robot3.png" id="2_wt8wl"]
@ -9,6 +9,8 @@
[ext_resource type="Script" path="res://Scripts/Components/Actors/EnemyNavigationMovement.cs" id="7_fvl12"]
[ext_resource type="Script" path="res://Scripts/Components/ProximityPlayerDetection.cs" id="8_62r5q"]
[ext_resource type="Script" path="res://Scripts/Components/Actors/ActorResourceProvider.cs" id="9_2ocwk"]
[ext_resource type="PackedScene" uid="uid://cj63k0dmk7tl1" path="res://Scenes/Weapons/enemy_weapon_base.tscn" id="10_ehu1c"]
[ext_resource type="Resource" uid="uid://cdfmedtgp2rcn" path="res://Resources/Weapons/EnemyWeapon.tres" id="11_fvpvx"]
[sub_resource type="AtlasTexture" id="AtlasTexture_spe0p"]
atlas = ExtResource("2_wt8wl")
@ -255,15 +257,16 @@ _animatedSprite = NodePath("../AnimatedSprite2D")
script = ExtResource("6_jlcsg")
Ai = 0
[node name="NavigationMovementProvider" type="Node2D" parent="." node_paths=PackedStringArray("_playerDetection")]
[node name="NavigationMovementProvider" type="Node2D" parent="." node_paths=PackedStringArray("EquippedWeapon", "_playerDetection")]
script = ExtResource("7_fvl12")
_navigationEnabled = true
CollisionMask = 81
EquippedWeapon = NodePath("../EnemyWeapon")
_playerDetection = NodePath("../PlayerDetection")
[node name="PlayerDetection" type="Area2D" parent="."]
visible = false
collision_layer = 16
collision_layer = 0
collision_mask = 2
script = ExtResource("8_62r5q")
@ -282,6 +285,9 @@ debug_path_custom_color = Color(1, 0, 0, 1)
script = ExtResource("9_2ocwk")
ResourceName = "Health"
[node name="EnemyWeapon" parent="." instance=ExtResource("10_ehu1c")]
WeaponData = ExtResource("11_fvpvx")
[connection signal="area_entered" from="PlayerDetection" to="PlayerDetection" method="_on_area_entered"]
[connection signal="area_exited" from="PlayerDetection" to="PlayerDetection" method="_on_area_exited"]
[connection signal="velocity_computed" from="NavigationAgent2D" to="NavigationMovementProvider" method="_on_navigation_agent_2d_velocity_computed"]

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://cj63k0dmk7tl1"]
[ext_resource type="PackedScene" uid="uid://crry0rgk7a8sm" path="res://Scenes/Weapons/BaseWeapon.tscn" id="1_60orr"]
[ext_resource type="Script" path="res://Scripts/Weapon.cs" id="1_1das2"]
[ext_resource type="PackedScene" uid="uid://cuixq5ex0j40h" path="res://Scenes/enemyBullet.tscn" id="2_dyoou"]
[node name="EnemyWeapon" instance=ExtResource("1_60orr")]
[node name="EnemyWeapon" type="Sprite2D" node_paths=PackedStringArray("Muzzle")]
script = ExtResource("1_1das2")
BulletScene = ExtResource("2_dyoou")
Muzzle = NodePath("Muzzle")
[node name="Muzzle" type="Marker2D" parent="."]
[node name="ShootTimer" type="Timer" parent="."]
one_shot = true

View file

@ -11,7 +11,6 @@ collision_layer = 128
collision_mask = 71
script = ExtResource("1_s0j1e")
Speed = 200.0
Owner = 2
metadata/_edit_group_ = true
[node name="Sprite2D" type="Sprite2D" parent="."]

View file

@ -142,7 +142,7 @@ ActivationType = 0
Targets = Array[NodePath]([NodePath("../Rumia")])
WaitForCompletion = true
[sub_resource type="Resource" id="Resource_oorlt"]
[sub_resource type="Resource" id="Resource_c0pje"]
resource_local_to_scene = true
script = ExtResource("49_0si7g")
Target = NodePath(".")
@ -678,7 +678,7 @@ Events = Array[Object]([SubResource("Resource_068l7"), SubResource("Resource_l3n
[node name="BossBattleStartScript" parent="." instance=ExtResource("43_kf3qc")]
position = Vector2(-1487, -396)
Events = Array[Object]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_oorlt")])
Events = Array[Object]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_c0pje")])
[node name="Enemy8" parent="." instance=ExtResource("47_u1ve6")]
position = Vector2(-1117, 184)

View file

@ -25,7 +25,6 @@ public partial class AnimationHandler : ActorModule
public override void Update(double delta)
{
var direction = _parent.FacingDirection; //GetSnappedDirection();
if (_parent.Velocity.Length() > 0)
@ -47,7 +46,7 @@ public partial class AnimationHandler : ActorModule
}
private string DirectionToString(Vector2 direction)
protected virtual string DirectionToString(Vector2 direction)
{
var angle = Mathf.RadToDeg(direction.Angle());
angle = Mathf.PosMod(angle, 360);

View file

@ -27,6 +27,8 @@ public partial class EnemyNavigationMovement : MovementHandler
[Export(PropertyHint.Layers2DPhysics)]
public uint CollisionMask { get; set; }
[Export] public Weapon EquippedWeapon;
public bool NavigationEnabled
{
@ -71,7 +73,7 @@ public partial class EnemyNavigationMovement : MovementHandler
private void AlarmManagerOnAlarmEnabled(Vector2 location)
{
if (NavigationEnabled && location.DistanceTo(this.GlobalPosition) <= AlarmReactRange)
if (NavigationEnabled && location.DistanceTo(_parent.GlobalPosition) <= AlarmReactRange)
{
GD.Print($"Enemy {Name} alerted");
_actorAi.State = EnemyState.Alert;
@ -83,8 +85,7 @@ public partial class EnemyNavigationMovement : MovementHandler
{
if (_actorAi.Ai is not AiState.Enabled)
return;
switch (_actorAi.State)
{
case EnemyState.Idle:
@ -115,15 +116,14 @@ public partial class EnemyNavigationMovement : MovementHandler
var nextPathPosition = _navigationAgent.GetNextPathPosition();
var newVelocity = currentAgentPosition.DirectionTo(nextPathPosition) * _parent.MovementSpeed;
// Navigation is over, can do other things like shooting
if (_navigationAgent.IsNavigationFinished())
{
// Shoot player
if (IsPlayerInSight)
{
//Shoot();
Shoot();
}
// TODO: If player totally left the max range it should stop shooting and go back to idle
@ -146,7 +146,7 @@ public partial class EnemyNavigationMovement : MovementHandler
{
if (IsPlayerInSight)
{
//Shoot();
Shoot();
}
}
@ -154,6 +154,19 @@ public partial class EnemyNavigationMovement : MovementHandler
}
}
private void Shoot()
{
if (EquippedWeapon == null || !_lastPlayerPosition.HasValue) return;
var direction = (_lastPlayerPosition.Value - _parent.GlobalPosition).Normalized();
// Shoot at the player's last known position
EquippedWeapon.ShootDirection = direction;
FacingDirection = direction;
EquippedWeapon.Shoot();
}
public void _on_navigation_agent_2d_velocity_computed(Vector2 safeVelocity)
{
_parent.Velocity = safeVelocity;

View file

@ -0,0 +1,8 @@
using Godot;
namespace Cirno.Scripts.Components.FSM;
public partial class State : Node2D
{
}

View file

@ -16,6 +16,4 @@ public partial class CameraTargetEvent : CameraTargetPlayerEvent
GameManager.Instance.CameraTargetObject(parent.GetNode<Node2D>(Target), Offset);
_isComplete = true;
}
}