Add new resources and presenters for item pickups and effects

This commit is contained in:
2025-10-29 00:13:36 +01:00
parent 329a942de7
commit 87169b17ae
19 changed files with 151 additions and 8 deletions

View File

@@ -4,6 +4,7 @@ using System.Linq;
using CryptonymThunder.Code.Resources;
using GameCore.Attributes;
using GameCore.Combat;
using GameCore.Combat.Interfaces;
using GameCore.ECS.Interfaces;
using GameCore.Input;
using GameCore.Inventory;
@@ -62,12 +63,17 @@ public class ComponentFactory
if (resource.WeaponData == null) return null;
var weaponData = resource.WeaponData;
var fireCosts = weaponData.FireCosts
.Select(_effectFactory.Create)
.OfType<ICostEffect>()
.ToList();
var onFireEffects = weaponData.OnFireEffects.Select(_effectFactory.Create).ToList();
var onHitEffects = weaponData.OnHitEffects.Select(_effectFactory.Create).ToList();
return new WeaponComponent
{
FireRate = resource.WeaponData.FireRate,
FireCosts = fireCosts,
OnFireEffects = onFireEffects,
OnHitEffects = onHitEffects,
};
@@ -83,11 +89,16 @@ public class ComponentFactory
private PickupComponent CreatePickupComponent(PickupComponentResource resource)
{
var onAcquireEffects = resource.OnAcquireEffects
.Select(_effectFactory.Create)
.ToList();
return new PickupComponent
{
ItemId = resource.ItemId,
Quantity = resource.Quantity,
IsInstantUse = resource.IsInstantUse
IsInstantUse = resource.IsInstantUse,
OnAcquireEffects = onAcquireEffects,
};
}
}

View File

@@ -17,6 +17,7 @@ public class EffectFactory
new BulkProjectileEffect(fire.ProjectileArchetypeId, fire.Count, fire.SpreadAngle, fire.ProjectileSpeed),
DamageEffectResource damage => new DamageEffect(damage.Amount),
HitscanEffectResource hitscan => new HitscanEffect(hitscan.Range),
ConsumeAmmoCostResource consumeAmmo => new ConsumeAmmoCost(consumeAmmo.AmmoId, consumeAmmo.Amount),
_ => throw new ArgumentOutOfRangeException(nameof(resource),
$"Effect type {resource.GetType().Name} not recognized")
};