Wednesday, 20 August 2025 02:02:40

This commit is contained in:
2025-08-20 02:02:42 -04:00
parent dfbad40739
commit 2eb95b18fd
32 changed files with 242 additions and 167 deletions

View File

@@ -14,7 +14,7 @@ public partial class Worker : RigidBody2D
public Sprite2D _image;
public ProgressBar _healthBar;
public Manager _manager;
public List<Effect> _effects = new();
public List<Action> _Actions = new();
public override void _Ready()
{
_health = 10;
@@ -28,7 +28,7 @@ public partial class Worker : RigidBody2D
_healthMax = _health;
_image = GetNode<Sprite2D>("Sprite2D");
_effects.Add(new BasicAttack(this));
_Actions.Add(new BasicAttack(this));
_healthBar = GetNode<ProgressBar>("HealthBar");
_healthBar.MaxValue = _healthMax;
@@ -117,7 +117,7 @@ public partial class Worker : RigidBody2D
Sleeping = true;
_dead = true;
_health = 0;
TriggerSpecificEffects(Effect.Trigger.Death, _manager);
FireActions(Trigger.On.Death, _manager);
}
}
@@ -149,7 +149,7 @@ public partial class Worker : RigidBody2D
ApplyCentralForce(_force);
_force = Vector2.Zero;
_primed = false;
TriggerSpecificEffects(Effect.Trigger.Launch, _manager);
FireActions(Trigger.On.Launch, _manager);
}
public void Stop()
@@ -158,18 +158,19 @@ public partial class Worker : RigidBody2D
Sleeping = true;
_moving = false;
_rotationalForce = 0f;
TriggerSpecificEffects(Effect.Trigger.Stop, _manager);
FireActions(Trigger.On.Stop, _manager);
}
public void TriggerSpecificEffects(Effect.Trigger TRIGGER, Node TARGET = null)
public void FireActions(Trigger.On TRIGGER, Node TARGET = null)
{
List<Effect> triggeredEffects = _effects.Where(e => e._trigger.IndexOf(TRIGGER) > -1).ToList();
for (int i = 0; i < triggeredEffects.Count; i++)
List<Action> triggeredActions = _Actions.Where(e => e._triggers.IndexOf(TRIGGER) > -1).ToList();
for (int i = 0; i < triggeredActions.Count; i++)
{
triggeredEffects[i].TriggerEffect(TARGET);
triggeredActions[i].Target(TARGET);
triggeredActions[i].Fire();
}
List<Effect> expiredEffects = _effects.Where(e => e._trigger.IndexOf(TRIGGER) > -1).ToList();
_effects.Except(expiredEffects);
List<Action> expiredActions = _Actions.Where(e => e._triggers.IndexOf(TRIGGER) > -1).ToList();
_Actions.Except(expiredActions);
}
// PRIVATE METHODS
@@ -188,14 +189,19 @@ public partial class Worker : RigidBody2D
if (NODE is Worker)
{
_collisionTarget = NODE;
TriggerSpecificEffects(Effect.Trigger.Collision, NODE);
FireActions(Trigger.On.Collision, NODE);
_rotationalForce *= 0.8f;
Vector2 rotatedForce = LinearVelocity.Rotated(((Worker)NODE)._rotationalForce);
ApplyCentralForce(rotatedForce);
_collisionTarget = null;
}
else if (NODE is Tchotchke)
{
Tchotchke tchotchke = (Tchotchke)NODE;
tchotchke.FireActions(Trigger.On.Collision, this);
}
}
}