45 lines
2.0 KiB
C#
45 lines
2.0 KiB
C#
using System;
|
|
using SepCore.DataTable;
|
|
using Entity.EntityData;
|
|
using SepCore.Definition;
|
|
|
|
namespace SepCore.Utility
|
|
{
|
|
public static class EntityDataFactory
|
|
{
|
|
public static EnemyData Create(int entityId, EnemyType enemyType, int level)
|
|
{
|
|
var dr = GameEntry.DataTable.GetDataTableRow<DREnemy>((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<DRWeapon>((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()
|
|
};
|
|
}
|
|
}
|
|
}
|