Wednesday, 20 August 2025 02:02:40
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user