Basic ending

This commit is contained in:
2023-09-13 11:12:51 -07:00
parent 7599d3a665
commit 915a6ed72c
20 changed files with 413 additions and 46 deletions

View File

@@ -1,8 +1,9 @@
[gd_scene load_steps=16 format=3 uid="uid://brbshysbgd47q"]
[gd_scene load_steps=18 format=3 uid="uid://brbshysbgd47q"]
[ext_resource type="Script" path="res://Enemies/Scripts/GodCircuit.cs" id="1_gyfww"]
[ext_resource type="Texture2D" uid="uid://b41ur7kyd8vdl" path="res://Levels/Models/Stage10/god circuit stage 1_image.png" id="2_2fhjk"]
[ext_resource type="Shader" path="res://Levels/Scenes/Door.gdshader" id="3_05w5o"]
[ext_resource type="AudioStream" uid="uid://cat08h84wm5gm" path="res://Audio/SFX/ominous.wav" id="3_yengs"]
[ext_resource type="AudioStream" uid="uid://crto2nljfvqnm" path="res://Audio/SFX/midboss hurt.wav" id="4_kc3iq"]
[ext_resource type="Script" path="res://Enemies/Attacks/GodCircuitAttacks/GodCircuitAttacks.cs" id="5_hp00m"]
[ext_resource type="PackedScene" uid="uid://uwia12i7yykb" path="res://Enemies/Attacks/GodCircuitAttacks/LaserAttack.tscn" id="6_frlsw"]
@@ -47,6 +48,18 @@ tracks/2/keys = {
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AudioStreamPlayer:stream")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("4_kc3iq")]
}
[sub_resource type="Animation" id="Animation_47f75"]
length = 0.001
@@ -86,9 +99,98 @@ tracks/2/keys = {
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AudioStreamPlayer:stream")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("3_yengs")]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:transparency")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_qiplh"]
resource_name = "OnDeath"
length = 6.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("StaticBody3D/god circuit stage 1/Cube:layers")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [1, 0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:layers")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 1]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AudioStreamPlayer:playing")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AudioStreamPlayer:stream")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("3_yengs")]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:transparency")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.1, 6.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_qiwcq"]
_data = {
"OnDeath": SubResource("Animation_qiplh"),
"OnHit": SubResource("Animation_n85p2"),
"RESET": SubResource("Animation_47f75")
}
@@ -136,10 +238,11 @@ shadow_mesh = SubResource("ArrayMesh_f3cka")
render_priority = 0
shader = ExtResource("3_05w5o")
[node name="God Circuit" type="Node3D" node_paths=PackedStringArray("_animationPlayer")]
[node name="God Circuit" type="Node3D" node_paths=PackedStringArray("_animationPlayer", "_attackTimer")]
transform = Transform3D(1, 0, 0, 0, 0.877012, 0.480468, 0, -0.480468, 0.877012, 0, 1.29734, 0)
script = ExtResource("1_gyfww")
_animationPlayer = NodePath("AnimationPlayer")
_attackTimer = NodePath("StaticBody3D/Timer")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
@@ -183,7 +286,7 @@ mesh = SubResource("ArrayMesh_vv6dc")
skeleton = NodePath("")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("4_kc3iq")
stream = ExtResource("3_yengs")
[connection signal="body_entered" from="StaticBody3D" to="." method="OnHit"]
[connection signal="timeout" from="StaticBody3D/Timer" to="StaticBody3D/Timer" method="OnTimeout"]

View File

@@ -1192,7 +1192,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0840461, 0.475385, 0.143401
shape = SubResource("BoxShape3D_1nq5h")
[node name="MeleeEnemy" type="Node3D" parent="CollisionShape3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0840461, -0.612543, -0.143401)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0840461, -0.0397255, -0.143401)
[node name="Icosphere001" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(0.850843, 0, 0, 0, 0.850843, 0, 0, 0, 0.850843, 0.0805536, 0.468312, 0.158035)

View File

@@ -4,10 +4,18 @@ public partial class GodCircuit : Node3D
{
[Export]
private AnimationPlayer _animationPlayer;
[Export]
private Timer _attackTimer;
[Signal]
public delegate void OnEnemyBossHitEventHandler(long damage);
[Signal]
public delegate void OnGameEndingEventHandler();
[Signal]
public delegate void DestroyRemainingOrbsEventHandler();
private void OnHit(Node3D node)
{
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
@@ -17,14 +25,22 @@ public partial class GodCircuit : Node3D
}
else
{
GD.Print("Hit");
_animationPlayer.Play("OnHit");
var hpComponent = GetNode<HealthPoints>("HP Component");
hpComponent.TakeDamage(800000);
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
if (hpComponent.CurrentHP > 0)
{
GD.Print("Hit");
_animationPlayer.Play("OnHit");
hpComponent.TakeDamage(800000);
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
if (hpComponent.CurrentHP <= 0)
QueueFree();
if (hpComponent.CurrentHP <= 0)
{
_attackTimer.Stop();
EmitSignal(SignalName.DestroyRemainingOrbs);
_animationPlayer.Play("OnDeath");
_animationPlayer.AnimationFinished += OnGameFinished;
}
}
}
}
@@ -38,4 +54,10 @@ public partial class GodCircuit : Node3D
if (hpComponent.CurrentHP <= 0)
hpComponent.CurrentHP = 1;
}
private void OnGameFinished(StringName animationName)
{
QueueFree();
EmitSignal(SignalName.OnGameEnding);
}
}