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((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((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); } } }