Add event publishing for inventory and combat interactions

This commit is contained in:
2025-10-29 02:12:39 +01:00
parent bf15fad9ce
commit d6a31b12e3
14 changed files with 96 additions and 5 deletions

View File

@@ -0,0 +1,11 @@
using GameCore.ECS;
using GameCore.Events.Interfaces;
namespace GameCore.Events;
public readonly struct EntityDamagedEvent(Entity target, float newHealth, float damageTaken) : IEvent
{
public readonly Entity Target = target;
public readonly float NewHealth = newHealth;
public readonly float DamageTaken = damageTaken;
}

View File

@@ -0,0 +1,13 @@
using GameCore.ECS;
using GameCore.Events.Interfaces;
using GameCore.Math;
namespace GameCore.Events;
public readonly struct HitscanImpactEvent(Entity owner, Vector3 from, Vector3 to, HitResult hit) : IEvent
{
public readonly Entity Owner = owner;
public readonly Vector3 From = from;
public readonly Vector3 To = to;
public readonly HitResult Hit = hit;
}

View File

@@ -0,0 +1,10 @@
using GameCore.ECS;
using GameCore.Events.Interfaces;
namespace GameCore.Events;
public readonly struct InstantItemUsedEvent(Entity picker, string itemId) : IEvent
{
public readonly Entity Picker = picker;
public readonly string ItemId = itemId;
}

View File

@@ -0,0 +1,11 @@
using GameCore.ECS;
using GameCore.Events.Interfaces;
namespace GameCore.Events;
public readonly struct InventoryItemChangedEvent(Entity owner, string itemId, int newQuantity) : IEvent
{
public readonly Entity Owner = owner;
public readonly string ItemId = itemId;
public readonly int NewQuantity = newQuantity;
}

View File

@@ -0,0 +1,10 @@
using GameCore.ECS;
using GameCore.Events.Interfaces;
namespace GameCore.Events;
public readonly struct ProjectileImpactEvent(Entity projectile, HitResult hit) : IEvent
{
public readonly Entity ProjectileEntity = projectile;
public readonly HitResult Hit = hit;
}

View File

@@ -0,0 +1,10 @@
using GameCore.ECS;
using GameCore.Events.Interfaces;
namespace GameCore.Events;
public readonly struct WeaponEquippedEvent(Entity owner, string newWeaponItemId) : IEvent
{
public readonly Entity Owner = owner;
public readonly string NewWeaponItemId = newWeaponItemId;
}