Files
vampire-like/Assets/GameMain/Scripts/Runtime/Utility/EntityDataFactory.cs
T

41 lines
1.6 KiB
C#

using System;
using SepCore.Entity;
using SepCore.Definition;
using UnityGameFramework.Runtime;
namespace SepCore.CustomUtility
{
public static class EntityDataFactory
{
public static EnemyConfig GetEnemyConfig(EnemyType enemyType)
{
return GameEntry.Luban.Get<EnemyConfig>((int)enemyType);
}
public static EnemyData Create(int entityId, EnemyType enemyType, int level)
{
return new EnemyData(entityId, GetEnemyConfig(enemyType), level);
}
public static WeaponData Create(int entityId, WeaponType weaponType, int ownerId, CampType ownerCamp)
{
var config = GameEntry.Luban.Get<WeaponConfig>((int)weaponType);
return weaponType switch
{
WeaponType.Handgun => new WeaponHandgunData(entityId, config, ownerId, ownerCamp),
WeaponType.Knife => new WeaponKnifeData(entityId, config, ownerId, ownerCamp),
WeaponType.Axe => new WeaponSlashData(entityId, config, ownerId, ownerCamp),
WeaponType.Lightning => new WeaponLightningData(entityId, config, ownerId, ownerCamp),
WeaponType.Lance => new WeaponLanceData(entityId, config, ownerId, ownerCamp),
_ => throw new NotImplementedException($"Unsupported weapon type '{weaponType}'.")
};
}
public static WeaponData Create(int entityId, WeaponConfig config, int ownerId, CampType ownerCamp)
{
WeaponType type = config.WeaponType;
return Create(entityId, type, ownerId, ownerCamp);
}
}
}