26 lines
1.0 KiB
C#
26 lines
1.0 KiB
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),
|
|
HealEffectResource heal => new HealEffect(heal.Amount),
|
|
_ => throw new ArgumentOutOfRangeException(nameof(resource),
|
|
$"Effect type {resource.GetType().Name} not recognized")
|
|
};
|
|
}
|
|
} |