using System; using SepCore.DataTable; using SepCore.Entity; using SepCore.Definition; namespace SepCore.CustomUtility { public static class EntityDataFactory { public static EnemyData Create(int entityId, EnemyType enemyType, int level) { var dr = GameEntry.DataTable.GetDataTableRow((int)enemyType); return new EnemyData(entityId, dr, level); } public static WeaponData Create(int entityId, WeaponType weaponType, int ownerId, CampType ownerCamp) { var dr = GameEntry.DataTable.GetDataTableRow((int)weaponType); return weaponType switch { WeaponType.WeaponHandgun => new WeaponHandgunData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponKnife => new WeaponKnifeData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponSlash => new WeaponSlashData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponLightning => new WeaponLightningData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponLance => new WeaponLanceData(entityId, dr, ownerId, ownerCamp), _ => throw new NotImplementedException() }; } public static WeaponData Create(int entityId, DRWeapon dr, int ownerId, CampType ownerCamp) { WeaponType type = (WeaponType)dr.Id; return type switch { WeaponType.WeaponHandgun => new WeaponHandgunData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponKnife => new WeaponKnifeData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponSlash => new WeaponSlashData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponLightning => new WeaponLightningData(entityId, dr, ownerId, ownerCamp), WeaponType.WeaponLance => new WeaponLanceData(entityId, dr, ownerId, ownerCamp), _ => throw new NotImplementedException() }; } } }