迁移数据表到 Luban,移除 JsonNet、EnumUtility
This commit is contained in:
@@ -1,42 +1,103 @@
|
||||
using System;
|
||||
using SepCore.DataTable;
|
||||
using SepCore.Entity;
|
||||
using SepCore.Definition;
|
||||
using UnityGameFramework.Runtime;
|
||||
|
||||
namespace SepCore.CustomUtility
|
||||
{
|
||||
public static class EntityDataFactory
|
||||
{
|
||||
private static readonly string[] s_EnemyTypeNames =
|
||||
{
|
||||
null,
|
||||
"近战敌人",
|
||||
"远程敌人",
|
||||
"蝙蝠",
|
||||
"骷髅兵",
|
||||
"骷髅巨人",
|
||||
"幽灵",
|
||||
"火焰法师"
|
||||
};
|
||||
|
||||
public static EnemyConfig GetEnemyConfig(EnemyType enemyType)
|
||||
{
|
||||
int index = (int)enemyType;
|
||||
if (index > 0 && index < s_EnemyTypeNames.Length)
|
||||
{
|
||||
string name = s_EnemyTypeNames[index];
|
||||
return GameEntry.Luban.Get<EnemyConfig>(name);
|
||||
}
|
||||
|
||||
Log.Error("Invalid enemy type '{0}'.", enemyType);
|
||||
return null;
|
||||
}
|
||||
|
||||
public static EnemyType GetEnemyType(string enemyName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(enemyName))
|
||||
{
|
||||
Log.Error("Enemy name is invalid.");
|
||||
return EnemyType.None;
|
||||
}
|
||||
|
||||
for (int i = 1; i < s_EnemyTypeNames.Length; i++)
|
||||
{
|
||||
if (s_EnemyTypeNames[i] == enemyName)
|
||||
{
|
||||
return (EnemyType)i;
|
||||
}
|
||||
}
|
||||
|
||||
if (Enum.TryParse<EnemyType>(enemyName, true, out var enemyType))
|
||||
{
|
||||
return enemyType;
|
||||
}
|
||||
|
||||
Log.Error("Can not find EnemyType for enemy name '{0}'.", enemyName);
|
||||
return EnemyType.None;
|
||||
}
|
||||
|
||||
public static EnemyData Create(int entityId, EnemyType enemyType, int level)
|
||||
{
|
||||
var dr = GameEntry.DataTable.GetDataTableRow<DREnemy>((int)enemyType);
|
||||
return new EnemyData(entityId, dr, level);
|
||||
EnemyConfig config = GetEnemyConfig(enemyType);
|
||||
if (config == null)
|
||||
{
|
||||
Log.Error("Can not find EnemyConfig for enemy type '{0}'.", enemyType);
|
||||
return null;
|
||||
}
|
||||
|
||||
return new EnemyData(entityId, config, enemyType, level);
|
||||
}
|
||||
|
||||
public static EnemyData Create(int entityId, EnemyConfig config, EnemyType enemyType, int level)
|
||||
{
|
||||
return new EnemyData(entityId, config, enemyType, level);
|
||||
}
|
||||
|
||||
public static WeaponData Create(int entityId, WeaponType weaponType, int ownerId, CampType ownerCamp)
|
||||
{
|
||||
var dr = GameEntry.DataTable.GetDataTableRow<DRWeapon>((int)weaponType);
|
||||
var config = GameEntry.Luban.Get<WeaponConfig>((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),
|
||||
WeaponType.WeaponHandgun => new WeaponHandgunData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponKnife => new WeaponKnifeData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponSlash => new WeaponSlashData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponLightning => new WeaponLightningData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponLance => new WeaponLanceData(entityId, config, ownerId, ownerCamp),
|
||||
_ => throw new NotImplementedException()
|
||||
};
|
||||
}
|
||||
|
||||
public static WeaponData Create(int entityId, DRWeapon dr, int ownerId, CampType ownerCamp)
|
||||
public static WeaponData Create(int entityId, WeaponConfig config, int ownerId, CampType ownerCamp)
|
||||
{
|
||||
WeaponType type = (WeaponType)dr.Id;
|
||||
WeaponType type = (WeaponType)config.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),
|
||||
WeaponType.WeaponHandgun => new WeaponHandgunData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponKnife => new WeaponKnifeData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponSlash => new WeaponSlashData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponLightning => new WeaponLightningData(entityId, config, ownerId, ownerCamp),
|
||||
WeaponType.WeaponLance => new WeaponLanceData(entityId, config, ownerId, ownerCamp),
|
||||
_ => throw new NotImplementedException()
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user