Tuesday, 19 August 2025 01:37:27
This commit is contained in:
@@ -12,6 +12,7 @@ public partial class Worker : RigidBody2D
|
||||
public Vector2 _force = Vector2.Zero;
|
||||
public Node _collisionTarget;
|
||||
public Sprite2D _image;
|
||||
public ProgressBar _healthBar;
|
||||
public Manager _manager;
|
||||
public List<Effect> _effects = new();
|
||||
public override void _Ready()
|
||||
@@ -26,6 +27,12 @@ public partial class Worker : RigidBody2D
|
||||
|
||||
_healthMax = _health;
|
||||
_image = GetNode<Sprite2D>("Sprite2D");
|
||||
|
||||
_effects.Add(new BasicAttack(this));
|
||||
|
||||
_healthBar = GetNode<ProgressBar>("HealthBar");
|
||||
_healthBar.MaxValue = _healthMax;
|
||||
_healthBar.Value = _health;
|
||||
}
|
||||
|
||||
public override void _Process(double DELTA_)
|
||||
@@ -104,11 +111,13 @@ public partial class Worker : RigidBody2D
|
||||
// process on knockout
|
||||
}
|
||||
_health += CHANGE;
|
||||
_healthBar.Value = _health;
|
||||
if (_health <= 0)
|
||||
{
|
||||
Sleeping = true;
|
||||
_dead = true;
|
||||
_health = 0;
|
||||
TriggerSpecificEffects(Effect.Trigger.Death);
|
||||
TriggerSpecificEffects(Effect.Trigger.Death, _manager);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +149,7 @@ public partial class Worker : RigidBody2D
|
||||
ApplyCentralForce(_force);
|
||||
_force = Vector2.Zero;
|
||||
_primed = false;
|
||||
TriggerSpecificEffects(Effect.Trigger.Launch);
|
||||
TriggerSpecificEffects(Effect.Trigger.Launch, _manager);
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
@@ -149,16 +158,18 @@ public partial class Worker : RigidBody2D
|
||||
Sleeping = true;
|
||||
_moving = false;
|
||||
_rotationalForce = 0f;
|
||||
TriggerSpecificEffects(Effect.Trigger.Stop);
|
||||
TriggerSpecificEffects(Effect.Trigger.Stop, _manager);
|
||||
}
|
||||
|
||||
public void TriggerSpecificEffects(Effect.Trigger TRIGGER)
|
||||
public void TriggerSpecificEffects(Effect.Trigger TRIGGER, Node TARGET = null)
|
||||
{
|
||||
List<Effect> triggeredEffects = _effects.Where(e => e._trigger.IndexOf(TRIGGER) > -1).ToList();
|
||||
for (int i = 0; i < triggeredEffects.Count; i++)
|
||||
{
|
||||
triggeredEffects[i].TriggerEffect();
|
||||
triggeredEffects[i].TriggerEffect(TARGET);
|
||||
}
|
||||
List<Effect> expiredEffects = _effects.Where(e => e._trigger.IndexOf(TRIGGER) > -1).ToList();
|
||||
_effects.Except(expiredEffects);
|
||||
}
|
||||
|
||||
// PRIVATE METHODS
|
||||
@@ -177,7 +188,7 @@ public partial class Worker : RigidBody2D
|
||||
if (NODE is Worker)
|
||||
{
|
||||
_collisionTarget = NODE;
|
||||
TriggerSpecificEffects(Effect.Trigger.Stop);
|
||||
TriggerSpecificEffects(Effect.Trigger.Collision, NODE);
|
||||
|
||||
_rotationalForce *= 0.8f;
|
||||
Vector2 rotatedForce = LinearVelocity.Rotated(((Worker)NODE)._rotationalForce);
|
||||
|
||||
Reference in New Issue
Block a user