41 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|