Add MeleeEffect and related services for combat interactions

This commit is contained in:
2025-10-30 03:24:44 +01:00
parent bb31c9a39c
commit f65277e6b4
9 changed files with 145 additions and 5 deletions

View File

@@ -0,0 +1,29 @@
using GameCore.Combat.Interfaces;
using GameCore.Input;
namespace GameCore.Combat.Effects;
public class MeleeEffect(float range, float radius) : IEffect
{
public void Execute(EffectContext context)
{
var input = context.World.GetComponent<InputStateComponent>(context.Owner);
var weapon = context.World.GetComponent<WeaponComponent>(context.Owner);
if (input == null || weapon == null) return;
var checkPosition = input.MuzzlePosition + input.MuzzleDirection * range;
var hits = context.World.WorldQuery.OverlapSphere(checkPosition, radius, context.Owner);
foreach (var hitEntity in hits)
{
var hitContext = new EffectContext
{
World = context.World,
Owner = context.Owner,
Target = hitEntity
};
foreach (var effect in weapon.OnHitEffects) effect.Execute(hitContext);
}
}
}