diff --git a/Cirno.sln.DotSettings.user b/Cirno.sln.DotSettings.user
index 8bea53eb..fb58ed39 100644
--- a/Cirno.sln.DotSettings.user
+++ b/Cirno.sln.DotSettings.user
@@ -5,6 +5,7 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
diff --git a/Resources/BossPhases/Rumia_Lasers.tres b/Resources/BossPhases/Rumia_Lasers.tres
index 3389d9a1..26e9282e 100644
--- a/Resources/BossPhases/Rumia_Lasers.tres
+++ b/Resources/BossPhases/Rumia_Lasers.tres
@@ -1,21 +1,23 @@
-[gd_resource type="Resource" script_class="BossPhase" load_steps=13 format=3 uid="uid://hy1alw04fbds"]
+[gd_resource type="Resource" script_class="BossPhase" load_steps=16 format=3 uid="uid://hy1alw04fbds"]
[ext_resource type="Script" path="res://Scripts/Resources/BossPhase.cs" id="1_kkx86"]
[ext_resource type="PackedScene" uid="uid://djro6xmsq7kqk" path="res://Scenes/Weapons/Bullets/enemyBullet_mid_blue_laser.tscn" id="1_nfjet"]
+[ext_resource type="Script" path="res://Scripts/Resources/Modifiers/DelayedSpeedModifier.cs" id="2_1bi0q"]
[ext_resource type="Script" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="2_peiit"]
[ext_resource type="Script" path="res://Scripts/AttackPatterns/LaserPattern.cs" id="2_tctyt"]
-[ext_resource type="Script" path="res://Scripts/Resources/TimeModifier.cs" id="2_v7sed"]
+[ext_resource type="Script" path="res://Scripts/Resources/Modifiers/DelayedPlayerFacingModifier.cs" id="3_7fbut"]
[ext_resource type="PackedScene" uid="uid://dbcj1u77spk6p" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_yellow_small.tscn" id="4_7kssw"]
+[ext_resource type="Script" path="res://Scripts/Resources/Modifiers/DelayedRotationModifier.cs" id="6_vwx23"]
-[sub_resource type="Resource" id="Resource_e62ka"]
-script = ExtResource("2_v7sed")
+[sub_resource type="Resource" id="Resource_3a5dw"]
+script = ExtResource("2_1bi0q")
TimeInSeconds = 0.8
ModifierType = 0
Value = 0.0
Continuous = false
-[sub_resource type="Resource" id="Resource_vkf1u"]
-script = ExtResource("2_v7sed")
+[sub_resource type="Resource" id="Resource_rtncg"]
+script = ExtResource("3_7fbut")
TimeInSeconds = 0.9
ModifierType = 2
Value = 0.0
@@ -39,12 +41,12 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Object]([SubResource("Resource_e62ka"), SubResource("Resource_vkf1u")])
+_timeModifiers = Array[Object]([SubResource("Resource_3a5dw"), SubResource("Resource_rtncg")])
_targetPlayer = false
WaitForCompletion = true
-[sub_resource type="Resource" id="Resource_bs25y"]
-script = ExtResource("2_v7sed")
+[sub_resource type="Resource" id="Resource_54787"]
+script = ExtResource("6_vwx23")
TimeInSeconds = 2.0
ModifierType = 1
Value = -90.0
@@ -63,10 +65,17 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Object]([SubResource("Resource_bs25y")])
+_timeModifiers = Array[Object]([SubResource("Resource_54787")])
_targetPlayer = false
WaitForCompletion = true
+[sub_resource type="Resource" id="Resource_1yaaf"]
+script = ExtResource("6_vwx23")
+TimeInSeconds = 2.0
+ModifierType = 1
+Value = 90.0
+Continuous = false
+
[sub_resource type="Resource" id="Resource_reykq"]
script = ExtResource("2_peiit")
BulletScene = ExtResource("4_7kssw")
@@ -80,7 +89,7 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Object]([SubResource("Resource_bs25y")])
+_timeModifiers = Array[Object]([SubResource("Resource_1yaaf")])
_targetPlayer = false
WaitForCompletion = false
diff --git a/Resources/BossPhases/Rumia_NS2.tres b/Resources/BossPhases/Rumia_NS2.tres
index 46ae3545..7759a331 100644
--- a/Resources/BossPhases/Rumia_NS2.tres
+++ b/Resources/BossPhases/Rumia_NS2.tres
@@ -1,17 +1,19 @@
-[gd_resource type="Resource" script_class="BossPhase" load_steps=30 format=3 uid="uid://ddb5dqocmk6x7"]
+[gd_resource type="Resource" script_class="BossPhase" load_steps=32 format=3 uid="uid://ddb5dqocmk6x7"]
[ext_resource type="PackedScene" uid="uid://dh81snen2f6bf" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_blue_small.tscn" id="1_as8n2"]
[ext_resource type="Script" path="res://Scripts/Resources/BossPhase.cs" id="1_fdlxv"]
-[ext_resource type="Script" path="res://Scripts/Resources/TimeModifier.cs" id="2_kghxb"]
+[ext_resource type="Script" path="res://Scripts/Resources/Modifiers/DelayedRotationModifier.cs" id="2_onj13"]
[ext_resource type="Script" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="2_wkmhk"]
[ext_resource type="PackedScene" uid="uid://ctrk5qrb7n3fm" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_green_small.tscn" id="4_tek7n"]
[ext_resource type="PackedScene" uid="uid://chowj81jsdvcx" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_red_small.tscn" id="5_n4xqo"]
[ext_resource type="Script" path="res://Scripts/Resources/SimpleMovementPattern.cs" id="6_bw7cj"]
[ext_resource type="PackedScene" uid="uid://dohakkayqj4w2" path="res://Scenes/Weapons/Bullets/enemyBullet_green.tscn" id="7_gsnyb"]
[ext_resource type="Script" path="res://Scripts/Resources/SpeedModifier.cs" id="8_6ya1v"]
+[ext_resource type="Script" path="res://Scripts/Resources/Modifiers/DelayedPlayerFacingModifier.cs" id="9_mfo5a"]
+[ext_resource type="Script" path="res://Scripts/Resources/Modifiers/DelayedSpeedModifier.cs" id="10_nuha6"]
-[sub_resource type="Resource" id="Resource_17kqi"]
-script = ExtResource("2_kghxb")
+[sub_resource type="Resource" id="Resource_cj86d"]
+script = ExtResource("2_onj13")
TimeInSeconds = 1.0
ModifierType = 1
Value = 90.0
@@ -30,12 +32,12 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Resource]([SubResource("Resource_17kqi")])
+_timeModifiers = Array[Resource]([SubResource("Resource_cj86d")])
_targetPlayer = false
WaitForCompletion = false
-[sub_resource type="Resource" id="Resource_sk6w4"]
-script = ExtResource("2_kghxb")
+[sub_resource type="Resource" id="Resource_pbgtt"]
+script = ExtResource("2_onj13")
TimeInSeconds = 1.0
ModifierType = 1
Value = -90.0
@@ -54,7 +56,7 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Resource]([SubResource("Resource_sk6w4")])
+_timeModifiers = Array[Resource]([SubResource("Resource_pbgtt")])
_targetPlayer = false
WaitForCompletion = true
@@ -71,7 +73,7 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Resource]([SubResource("Resource_17kqi")])
+_timeModifiers = Array[Resource]([SubResource("Resource_cj86d")])
_targetPlayer = false
WaitForCompletion = false
@@ -88,7 +90,7 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Resource]([SubResource("Resource_sk6w4")])
+_timeModifiers = Array[Resource]([SubResource("Resource_pbgtt")])
_targetPlayer = false
WaitForCompletion = true
@@ -105,7 +107,7 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Resource]([SubResource("Resource_17kqi")])
+_timeModifiers = Array[Resource]([SubResource("Resource_cj86d")])
_targetPlayer = false
WaitForCompletion = false
@@ -122,7 +124,7 @@ spread = 360.0
owner = 2
_damageType = 0
_bulletDamage = 1.0
-_timeModifiers = Array[Resource]([SubResource("Resource_sk6w4")])
+_timeModifiers = Array[Resource]([SubResource("Resource_pbgtt")])
_targetPlayer = false
WaitForCompletion = true
@@ -142,15 +144,15 @@ Invert = true
MinimumSpeed = 10.0
ScalingFactor = 10.0
-[sub_resource type="Resource" id="Resource_hutbf"]
-script = ExtResource("2_kghxb")
+[sub_resource type="Resource" id="Resource_ln27r"]
+script = ExtResource("9_mfo5a")
TimeInSeconds = 0.5
ModifierType = 2
Value = 0.0
Continuous = false
-[sub_resource type="Resource" id="Resource_krtsy"]
-script = ExtResource("2_kghxb")
+[sub_resource type="Resource" id="Resource_nal31"]
+script = ExtResource("10_nuha6")
TimeInSeconds = 0.8
ModifierType = 0
Value = 50.0
@@ -170,8 +172,8 @@ owner = 2
_damageType = 0
_bulletDamage = 1.0
_modifier = SubResource("Resource_80ngy")
-_timeModifiers = Array[Resource]([SubResource("Resource_hutbf"), SubResource("Resource_krtsy")])
-_targetPlayer = false
+_timeModifiers = Array[Resource]([SubResource("Resource_ln27r"), SubResource("Resource_nal31")])
+_targetPlayer = true
WaitForCompletion = true
[sub_resource type="Resource" id="Resource_l05f2"]
@@ -196,7 +198,7 @@ owner = 2
_damageType = 0
_bulletDamage = 1.0
_modifier = SubResource("Resource_80ngy")
-_timeModifiers = Array[Resource]([SubResource("Resource_hutbf"), SubResource("Resource_krtsy")])
+_timeModifiers = Array[Resource]([SubResource("Resource_ln27r"), SubResource("Resource_nal31")])
_targetPlayer = false
WaitForCompletion = true
@@ -222,7 +224,7 @@ owner = 2
_damageType = 0
_bulletDamage = 1.0
_modifier = SubResource("Resource_80ngy")
-_timeModifiers = Array[Resource]([SubResource("Resource_hutbf"), SubResource("Resource_krtsy")])
+_timeModifiers = Array[Resource]([SubResource("Resource_ln27r"), SubResource("Resource_nal31")])
_targetPlayer = false
WaitForCompletion = true
@@ -248,7 +250,7 @@ owner = 2
_damageType = 0
_bulletDamage = 1.0
_modifier = SubResource("Resource_80ngy")
-_timeModifiers = Array[Resource]([SubResource("Resource_hutbf"), SubResource("Resource_krtsy")])
+_timeModifiers = Array[Resource]([SubResource("Resource_ln27r"), SubResource("Resource_nal31")])
_targetPlayer = false
WaitForCompletion = true
diff --git a/Scenes/Actors/Rumia.tscn b/Scenes/Actors/Rumia.tscn
index ff5517c0..9bf46d87 100644
--- a/Scenes/Actors/Rumia.tscn
+++ b/Scenes/Actors/Rumia.tscn
@@ -30,7 +30,7 @@ collision_layer = 16
collision_mask = 9
script = ExtResource("1_na4uq")
BossName = "Rumia"
-Phases = Array[Resource]([ExtResource("2_1rhf6"), ExtResource("3_j7lbl"), ExtResource("2_eyxw4"), ExtResource("2_p8j4e")])
+Phases = Array[Resource]([ExtResource("2_eyxw4"), ExtResource("2_1rhf6"), ExtResource("3_j7lbl"), ExtResource("2_p8j4e")])
BossHudPrefab = ExtResource("4_ehp8q")
_bossPortraitTexture = ExtResource("4_at5iq")
Health = 200.0
diff --git a/Scripts/AttackPatterns/SpiralPattern.cs b/Scripts/AttackPatterns/SpiralPattern.cs
index 37465bca..d396a821 100644
--- a/Scripts/AttackPatterns/SpiralPattern.cs
+++ b/Scripts/AttackPatterns/SpiralPattern.cs
@@ -98,7 +98,7 @@ public partial class SpiralPattern : AttackPattern
BulletScene = BulletScene,
RotationOffset = angleOffset,
Modifier = _modifier,
- TimeModifiers = _timeModifiers.Select(x => x.MakeClone()).ToList()
+ TimeModifiers = _timeModifiers.ToList()// _timeModifiers.Select(x => x.MakeClone()).ToList()
// TimeModifiers = _timeModifiers?.Where(mod => mod != null).ToList() ?? new List()
};
}
diff --git a/Scripts/Bullet.cs b/Scripts/Bullet.cs
index 780275f4..1366944a 100644
--- a/Scripts/Bullet.cs
+++ b/Scripts/Bullet.cs
@@ -25,7 +25,7 @@ public partial class Bullet : Area2D
public BulletInfo BulletInfo => _bulletInfo;
- private List _modifiers = new();
+ private List _modifiers = new();
private GameManager _gameManager;
@@ -35,52 +35,57 @@ public partial class Bullet : Area2D
_gameManager = gameManager;
- _modifiers = _bulletInfo.TimeModifiers;
-
+ // Need to clone them here
+ // _modifiers = _bulletInfo.TimeModifiers.Select(x => x.MakeClone()).ToList();
+
+
// var clonedModifiers = _bulletInfo.TimeModifiers.Select(x => x.MakeClone());
// _modifiers = clonedModifiers.ToList();
-
-
+
+
// Ugly hack to make instances unique
- //_modifiers = _bulletInfo.TimeModifiers.Select(x => x.Wrap()).ToList();
+ _modifiers = _bulletInfo.TimeModifiers.Select(x => x.Wrap()).ToList();
}
- private void ApplyTimeModifiers()
+ private void ApplyTimeModifiers(double delta)
{
foreach (var modifier in _modifiers)
{
- if (modifier.Applied)
+ if (_elapsedTime >= modifier.TimeModifier.TimeInSeconds)
{
- continue;
- }
- if (_elapsedTime >= modifier.TimeInSeconds)
- {
- GD.Print("Applied time modifier");
- switch (modifier.ModifierType)
- {
- case TimeModifierType.SpeedChange:
- //_bulletInfo.Speed += modifier.Value;
- Speed = modifier.Value;
- break;
- case TimeModifierType.RotationChange:
- RotateBullet(modifier.Value);
- //Rotation += Mathf.DegToRad(modifier.Value);
- break;
- case TimeModifierType.FacePlayer:
- FacePlayer();
- break;
- }
-
- if (!modifier.Continuous)
+ if (!modifier.Applied)
{
modifier.Applied = true;
+ modifier.TimeModifier.Start(this);
}
+
+ modifier.TimeModifier.Update(this, delta);
+
+ // switch (modifier.ModifierType)
+ // {
+ // case TimeModifierType.SpeedChange:
+ // //_bulletInfo.Speed += modifier.Value;
+ // Speed = modifier.Value;
+ // break;
+ // case TimeModifierType.RotationChange:
+ // RotateBullet(modifier.Value);
+ // //Rotation += Mathf.DegToRad(modifier.Value);
+ // break;
+ // case TimeModifierType.FacePlayer:
+ // FacePlayer();
+ // break;
+ // }
+
+ // if (!modifier.Continuous)
+ // {
+ // modifier.Applied = true;
+ // }
}
}
}
- protected virtual void RotateBullet(float degrees)
+ public virtual void RotateBullet(float degrees)
{
float radians = Mathf.DegToRad(degrees);
_direction = _direction.Rotated(radians).Normalized(); // Rotate direction
@@ -88,7 +93,7 @@ public partial class Bullet : Area2D
//Rotation = radians;
}
- private void FacePlayer()
+ public void FacePlayer()
{
if (_gameManager.Player != null)
{
@@ -123,14 +128,16 @@ public partial class Bullet : Area2D
public override void _Process(double delta)
{
_elapsedTime += delta;
- if (_bulletInfo != null)
- {
- ApplyTimeModifiers();
- }
+
}
public override void _PhysicsProcess(double delta)
{
+ if (_bulletInfo != null)
+ {
+ ApplyTimeModifiers(delta);
+ }
+
this.Position += ((float)(Speed * delta) * _direction);
}
diff --git a/Scripts/Resources/BulletResource.cs b/Scripts/Resources/BulletResource.cs
index a5908091..7be19747 100644
--- a/Scripts/Resources/BulletResource.cs
+++ b/Scripts/Resources/BulletResource.cs
@@ -39,7 +39,7 @@ public partial class BulletResource : Resource
Modifier = Modifier,
LifeTime = LifeTime,
DestructionParticlesScene = DestructionParticlesScene,
- TimeModifiers = TimeModifiers.Select(x => x.MakeClone()).ToList()
+ TimeModifiers = TimeModifiers.Select(x => x).ToList()
// TimeModifiers = TimeModifiers?.Where(mod => mod is TimeModifier).Cast().Select(m => new ModifierWrapper()
// {
// TimeModifier = m,
diff --git a/Scripts/Resources/Modifiers/DelayedPlayerFacingModifier.cs b/Scripts/Resources/Modifiers/DelayedPlayerFacingModifier.cs
new file mode 100644
index 00000000..e2e85e7a
--- /dev/null
+++ b/Scripts/Resources/Modifiers/DelayedPlayerFacingModifier.cs
@@ -0,0 +1,12 @@
+using Godot;
+
+namespace Cirno.Scripts.Resources.Modifiers;
+
+[GlobalClass]
+public partial class DelayedPlayerFacingModifier : TimeModifier
+{
+ public override void Start(Bullet bullet)
+ {
+ bullet.FacePlayer();
+ }
+}
\ No newline at end of file
diff --git a/Scripts/Resources/Modifiers/DelayedRotationModifier.cs b/Scripts/Resources/Modifiers/DelayedRotationModifier.cs
new file mode 100644
index 00000000..6cc53973
--- /dev/null
+++ b/Scripts/Resources/Modifiers/DelayedRotationModifier.cs
@@ -0,0 +1,12 @@
+using Godot;
+
+namespace Cirno.Scripts.Resources.Modifiers;
+
+[GlobalClass]
+public partial class DelayedRotationModifier : TimeModifier
+{
+ public override void Start(Bullet bullet)
+ {
+ bullet.RotateBullet(this.Value);
+ }
+}
\ No newline at end of file
diff --git a/Scripts/Resources/Modifiers/DelayedSpeedModifier.cs b/Scripts/Resources/Modifiers/DelayedSpeedModifier.cs
index 9e3105fc..58203474 100644
--- a/Scripts/Resources/Modifiers/DelayedSpeedModifier.cs
+++ b/Scripts/Resources/Modifiers/DelayedSpeedModifier.cs
@@ -1,9 +1,13 @@
-using Godot;
+using Cirno.Scripts.Actors;
+using Godot;
namespace Cirno.Scripts.Resources.Modifiers;
[GlobalClass]
public partial class DelayedSpeedModifier : TimeModifier
{
-
+ public override void Start(Bullet bullet)
+ {
+ bullet.Speed = this.Value;
+ }
}
\ No newline at end of file
diff --git a/Scripts/Resources/TimeModifier.cs b/Scripts/Resources/TimeModifier.cs
index b0cee99e..b3fb4646 100644
--- a/Scripts/Resources/TimeModifier.cs
+++ b/Scripts/Resources/TimeModifier.cs
@@ -1,4 +1,5 @@
-using Godot;
+using Cirno.Scripts.Actors;
+using Godot;
namespace Cirno.Scripts.Resources;
@@ -24,6 +25,16 @@ public partial class TimeModifier : Resource
{
return this.MemberwiseClone() as TimeModifier;
}
+
+ public virtual void Start(Bullet bullet)
+ {
+
+ }
+
+ public virtual void Update(Bullet bullet, double delta)
+ {
+
+ }
}
public class ModifierWrapper
diff --git a/Scripts/Weapons/LaserBullet.cs b/Scripts/Weapons/LaserBullet.cs
index fad05778..3469878a 100644
--- a/Scripts/Weapons/LaserBullet.cs
+++ b/Scripts/Weapons/LaserBullet.cs
@@ -63,7 +63,7 @@ public partial class LaserBullet : Bullet
_lethalTimer.Start();
}
- protected override void RotateBullet(float degrees)
+ public override void RotateBullet(float degrees)
{
base.RotateBullet(degrees);