迁移 EntityData 到 Base 中

- 新增 EntityDataFactory 工厂类,提供创建 EntityData 的统一入口
- 移出 EntityData 及派生类对 GameEntry 的依赖并移入 SepCore.Base 程序集中
This commit is contained in:
SepComet
2026-06-03 15:12:55 +08:00
parent 91f70dd783
commit 5de3fdc795
52 changed files with 284 additions and 315 deletions
@@ -7,6 +7,7 @@ using Entity;
using Entity.EntityData;
using CustomUtility;
using GameFramework.DataTable;
using SepCore.Utility;
using UnityEngine;
using UnityGameFramework.Runtime;
using Random = UnityEngine.Random;
@@ -352,14 +353,10 @@ namespace SepCore.UI
return null;
}
DRWeapon drWeapon = _weaponDataTable != null ? _weaponDataTable.GetDataRow(goods.GoodsTypeId) : null;
if (drWeapon == null)
{
Log.Warning($"ShopFormUseCase::ApplyGoodsPurchase: Missing DRWeapon, id = {goods.GoodsTypeId}");
return null;
}
DRWeapon drWeapon = _weaponDataTable.GetDataRow(goods.GoodsTypeId);
var weaponData = CreateWeaponData(goods.GoodsTypeId);
var weaponData = EntityDataFactory.Create(GameEntry.Entity.GenerateSerialId(), drWeapon, Player.Id,
CampType.Player);
if (weaponData == null)
{
Log.Warning(
@@ -380,30 +377,6 @@ namespace SepCore.UI
return null;
}
private WeaponData CreateWeaponData(int weaponTypeId)
{
int entityId = GameEntry.Entity.GenerateSerialId();
int ownerId = Player.Id;
CampType ownerCamp = CampType.Player;
WeaponType weaponType = (WeaponType)weaponTypeId;
switch (weaponType)
{
case WeaponType.WeaponKnife:
return new WeaponKnifeData(entityId, ownerId, ownerCamp);
case WeaponType.WeaponHandgun:
return new WeaponHandgunData(entityId, ownerId, ownerCamp);
case WeaponType.WeaponSlash:
return new WeaponSlashData(entityId, ownerId, ownerCamp);
case WeaponType.WeaponLightning:
return new WeaponLightningData(entityId, ownerId, ownerCamp);
case WeaponType.WeaponLance:
return new WeaponLanceData(entityId, ownerId, ownerCamp);
default:
return null;
}
}
public bool TryRecycleWeapon(int argsIndex, int argsPrice)
{
Player player = Player;