Files
cryptonhym-thunder/Code/Factories/EffectFactory.cs

25 lines
986 B
C#

using System;
using System.Runtime.InteropServices.ComTypes;
using CryptonymThunder.Code.Resources;
using CryptonymThunder.Code.Resources.Effects;
using GameCore.Combat.Effects;
using GameCore.Combat.Interfaces;
namespace CryptonymThunder.Code.Factories;
public class EffectFactory
{
public IEffect Create(EffectResource resource)
{
return resource switch
{
FireProjectileEffectResource fire =>
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")
};
}
}