diff --git a/Assets/GameMain/Scripts/Runtime/PropItem.cs b/Assets/GameMain/Scripts/Base/Definition/DataStruct/PropItem.cs
similarity index 61%
rename from Assets/GameMain/Scripts/Runtime/PropItem.cs
rename to Assets/GameMain/Scripts/Base/Definition/DataStruct/PropItem.cs
index 9fd0716..35aefb1 100644
--- a/Assets/GameMain/Scripts/Runtime/PropItem.cs
+++ b/Assets/GameMain/Scripts/Base/Definition/DataStruct/PropItem.cs
@@ -1,6 +1,3 @@
-using Components;
-using Entity;
-using Entity.EntityData;
using SepCore.DataTable;
namespace SepCore.Definition
@@ -12,7 +9,7 @@ namespace SepCore.Definition
public string IconAssetName { get; private set; }
public ItemRarity Rarity { get; private set; }
public StatModifier[] Modifiers => _modifiers;
-
+
public PropItem(DRProp prop)
{
if (prop == null) return;
@@ -35,23 +32,5 @@ namespace SepCore.Definition
Rarity = rarity;
IconAssetName = iconAssetName;
}
-
- public void OnAttach(StatComponent statComponent)
- {
- if (_modifiers == null || statComponent == null) return;
- foreach (var modifier in _modifiers)
- {
- statComponent.AddModifier(modifier);
- }
- }
-
- public void OnDetach(StatComponent statComponent)
- {
- if (_modifiers == null || statComponent == null) return;
- foreach (var modifier in _modifiers)
- {
- statComponent.RemoveModifier(modifier);
- }
- }
}
}
diff --git a/Assets/GameMain/Scripts/Runtime/PropItem.cs.meta b/Assets/GameMain/Scripts/Base/Definition/DataStruct/PropItem.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/PropItem.cs.meta
rename to Assets/GameMain/Scripts/Base/Definition/DataStruct/PropItem.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Entity.meta b/Assets/GameMain/Scripts/Base/Entity.meta
new file mode 100644
index 0000000..d0fe80b
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Entity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cedb6e3c4b92edf4bbbe5fb34bb043ba
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData.meta
diff --git a/Assets/GameMain/Scripts/Base/Entity/EntityData/AccessoryObjectData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/AccessoryObjectData.cs
new file mode 100644
index 0000000..e1d80fb
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/AccessoryObjectData.cs
@@ -0,0 +1,31 @@
+using System;
+using SepCore.Definition;
+using UnityEngine;
+
+namespace Entity.EntityData
+{
+ [Serializable]
+ public abstract class AccessoryObjectData : EntityDataBase
+ {
+ [SerializeField] private int _ownerId = 0;
+
+ [SerializeField] private CampType _ownerCamp = CampType.Unknown;
+
+ public AccessoryObjectData(int entityId, int typeId, int ownerId, CampType ownerCamp)
+ : base(entityId, typeId)
+ {
+ _ownerId = ownerId;
+ _ownerCamp = ownerCamp;
+ }
+
+ ///
+ /// 拥有者编号。
+ ///
+ public int OwnerId => _ownerId;
+
+ ///
+ /// 拥有者阵营。
+ ///
+ public CampType OwnerCamp => _ownerCamp;
+ }
+}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/AccessoryObjectData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/AccessoryObjectData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/AccessoryObjectData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/AccessoryObjectData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/CoinData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/CoinData.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/CoinData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/CoinData.cs
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/CoinData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/CoinData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/CoinData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/CoinData.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Entity/EntityData/EffectData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/EffectData.cs
new file mode 100644
index 0000000..f423ca1
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/EffectData.cs
@@ -0,0 +1,20 @@
+using System;
+using UnityEngine;
+
+namespace Entity.EntityData
+{
+ [Serializable]
+ public class EffectData : EntityDataBase
+ {
+ [SerializeField]
+ private float _keepTime = 0f;
+
+ public EffectData(int entityId, int typeId)
+ : base(entityId, typeId)
+ {
+ _keepTime = 3f;
+ }
+
+ public float KeepTime => _keepTime;
+ }
+}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EffectData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/EffectData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/EffectData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/EffectData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyData.cs
similarity index 67%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyData.cs
index 6920f43..ff4b69a 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyData.cs
@@ -3,31 +3,20 @@ using System.Collections.Generic;
using SepCore.DataTable;
using SepCore.Definition;
using UnityEngine;
-using UnityGameFramework.Runtime;
namespace Entity.EntityData
{
[Serializable]
public class EnemyData : TargetableObjectData
{
- [SerializeField] private DREnemy _drEnemy;
+ private DREnemy _drEnemy;
- public EnemyData(int entityId, EnemyType enemyType, int level) : base(
- entityId, (int)enemyType, CampType.Enemy)
+ public EnemyData(int entityId, DREnemy drEnemy, int level) : base(
+ entityId, drEnemy.Id, CampType.Enemy)
{
- DREnemy enemyRow = GameEntry.DataTable.GetDataTableRow((int)enemyType);
-
- if (enemyRow == null)
- {
- throw new Exception($"Enemy data table row is missing, EnemyType='{enemyType}'.");
- }
- else
- {
- _drEnemy = enemyRow;
- }
-
+ _drEnemy = drEnemy;
int effectiveLevel = Mathf.Max(1, level);
- MaxHealthBase = enemyRow.MaxHealth + enemyRow.HpAddPerLevel * (effectiveLevel - 1);
+ MaxHealthBase = _drEnemy.MaxHealth + _drEnemy.HpAddPerLevel * (effectiveLevel - 1);
}
public EnemyType EnemyType => (EnemyType)_drEnemy.Id;
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyProjectileData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyProjectileData.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyProjectileData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyProjectileData.cs
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyProjectileData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyProjectileData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Enemy/EnemyProjectileData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Enemy/EnemyProjectileData.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Entity/EntityData/EntityDataBase.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/EntityDataBase.cs
new file mode 100644
index 0000000..4587877
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/EntityDataBase.cs
@@ -0,0 +1,51 @@
+using System;
+using UnityEngine;
+
+namespace Entity.EntityData
+{
+ [Serializable]
+ public abstract class EntityDataBase
+ {
+ [SerializeField] private int _id = 0;
+
+ [SerializeField] private int _typeId = 0;
+
+ [SerializeField] private Vector3 _position = Vector3.zero;
+
+ [SerializeField] private Quaternion _rotation = Quaternion.identity;
+
+ public EntityDataBase(int entityId, int typeId)
+ {
+ _id = entityId;
+ _typeId = typeId;
+ }
+
+ ///
+ /// 实体编号。
+ ///
+ public int Id => _id;
+
+ ///
+ /// 实体类型编号。
+ ///
+ public int TypeId => _typeId;
+
+ ///
+ /// 实体位置。
+ ///
+ public Vector3 Position
+ {
+ get => _position;
+ set => _position = value;
+ }
+
+ ///
+ /// 实体朝向。
+ ///
+ public Quaternion Rotation
+ {
+ get => _rotation;
+ set => _rotation = value;
+ }
+ }
+}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EntityDataBase.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/EntityDataBase.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/EntityDataBase.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/EntityDataBase.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/ExpData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/ExpData.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/ExpData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/ExpData.cs
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/ExpData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/ExpData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/ExpData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/ExpData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/PlayerData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/PlayerData.cs
similarity index 93%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/PlayerData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/PlayerData.cs
index d114df4..c5f4fed 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/PlayerData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/PlayerData.cs
@@ -1,5 +1,4 @@
using System;
-using SepCore.DataTable;
using SepCore.Definition;
namespace Entity.EntityData
@@ -16,4 +15,4 @@ namespace Entity.EntityData
public override int MaxHealthBase { get; }
}
-}
\ No newline at end of file
+}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/PlayerData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/PlayerData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/PlayerData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/PlayerData.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Entity/EntityData/TargetableObjectData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/TargetableObjectData.cs
new file mode 100644
index 0000000..74ca3f7
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/TargetableObjectData.cs
@@ -0,0 +1,27 @@
+using System;
+using SepCore.Definition;
+
+namespace Entity.EntityData
+{
+ [Serializable]
+ public abstract class TargetableObjectData : EntityDataBase
+ {
+ private CampType _camp;
+
+ public TargetableObjectData(int entityId, int typeId, CampType camp)
+ : base(entityId, typeId)
+ {
+ _camp = camp;
+ }
+
+ ///
+ /// 角色阵营。
+ ///
+ public CampType Camp => _camp;
+
+ ///
+ /// 最大生命。
+ ///
+ public abstract int MaxHealthBase { get; }
+ }
+}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/TargetableObjectData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/TargetableObjectData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/TargetableObjectData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/TargetableObjectData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponData.cs
similarity index 84%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponData.cs
index 8a5e400..81d3585 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponData.cs
@@ -13,17 +13,11 @@ namespace Entity.EntityData
private int _entityTypeId = 0;
- public WeaponData(int entityId, WeaponType weaponType, int ownerId, CampType ownerCamp)
- : base(entityId, (int)weaponType, ownerId, ownerCamp)
+ public WeaponData(int entityId, DRWeapon drWeapon, int ownerId, CampType ownerCamp)
+ : base(entityId, drWeapon.Id, ownerId, ownerCamp)
{
- _drWeapon = GameEntry.DataTable.GetDataTableRow((int)weaponType);
-
- if (_drWeapon == null)
- {
- throw new Exception($"Weapon data table row is missing, WeaponType='{weaponType}'.");
- }
-
- _entityTypeId = _drWeapon.EntityTypeId;
+ _drWeapon = drWeapon;
+ _entityTypeId = drWeapon.EntityTypeId;
}
public WeaponType WeaponType => (WeaponType)_drWeapon.Id;
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponHandgunData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponHandgunData.cs
similarity index 66%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponHandgunData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponHandgunData.cs
index 9f83cb9..9b2cd85 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponHandgunData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponHandgunData.cs
@@ -1,4 +1,5 @@
using System;
+using SepCore.DataTable;
using SepCore.Definition;
namespace Entity.EntityData
@@ -12,8 +13,8 @@ namespace Entity.EntityData
{
public WeaponHandgunParamsData ParamsData { get; }
- public WeaponHandgunData(int entityId, int ownerId, CampType ownerCamp)
- : base(entityId, WeaponType.WeaponHandgun, ownerId, ownerCamp)
+ public WeaponHandgunData(int entityId, DRWeapon drWeapon, int ownerId, CampType ownerCamp)
+ : base(entityId, drWeapon, ownerId, ownerCamp)
{
ParamsData = ParseParams();
}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponHandgunData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponHandgunData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponHandgunData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponHandgunData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponKnifeData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponKnifeData.cs
similarity index 68%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponKnifeData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponKnifeData.cs
index 582f0f3..c8a7930 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponKnifeData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponKnifeData.cs
@@ -1,4 +1,5 @@
using System;
+using SepCore.DataTable;
using SepCore.Definition;
namespace Entity.EntityData
@@ -13,8 +14,8 @@ namespace Entity.EntityData
{
public WeaponKnifeParamsData ParamsData { get; }
- public WeaponKnifeData(int entityId, int ownerId, CampType ownerCamp) : base(entityId, WeaponType.WeaponKnife,
- ownerId, ownerCamp)
+ public WeaponKnifeData(int entityId, DRWeapon drWeapon, int ownerId, CampType ownerCamp)
+ : base(entityId, drWeapon, ownerId, ownerCamp)
{
ParamsData = ParseParams();
}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponKnifeData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponKnifeData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponKnifeData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponKnifeData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLanceData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLanceData.cs
similarity index 91%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLanceData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLanceData.cs
index 937a5cf..5ede889 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLanceData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLanceData.cs
@@ -1,4 +1,5 @@
using System;
+using SepCore.DataTable;
using SepCore.Definition;
namespace Entity.EntityData
@@ -62,8 +63,8 @@ namespace Entity.EntityData
{
public WeaponLanceParamsData ParamsData { get; }
- public WeaponLanceData(int entityId, int ownerId, CampType ownerCamp)
- : base(entityId, WeaponType.WeaponLance, ownerId, ownerCamp)
+ public WeaponLanceData(int entityId, DRWeapon drWeapon, int ownerId, CampType ownerCamp)
+ : base(entityId, drWeapon, ownerId, ownerCamp)
{
ParamsData = ParseParams();
}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLanceData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLanceData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLanceData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLanceData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLightningData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLightningData.cs
similarity index 71%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLightningData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLightningData.cs
index 4052f94..3cbc499 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLightningData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLightningData.cs
@@ -1,4 +1,5 @@
using System;
+using SepCore.DataTable;
using SepCore.Definition;
namespace Entity.EntityData
@@ -14,8 +15,8 @@ namespace Entity.EntityData
{
public WeaponLightningParamsData ParamsData { get; }
- public WeaponLightningData(int entityId, int ownerId, CampType ownerCamp)
- : base(entityId, WeaponType.WeaponLightning, ownerId, ownerCamp)
+ public WeaponLightningData(int entityId, DRWeapon drWeapon, int ownerId, CampType ownerCamp)
+ : base(entityId, drWeapon, ownerId, ownerCamp)
{
ParamsData = ParseParams();
}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLightningData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLightningData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponLightningData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponLightningData.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponSlashData.cs b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponSlashData.cs
similarity index 68%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponSlashData.cs
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponSlashData.cs
index 128e0fd..e699303 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponSlashData.cs
+++ b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponSlashData.cs
@@ -1,4 +1,5 @@
using System;
+using SepCore.DataTable;
using SepCore.Definition;
namespace Entity.EntityData
@@ -13,8 +14,8 @@ namespace Entity.EntityData
{
public WeaponSlashParamsData ParamsData { get; }
- public WeaponSlashData(int entityId, int ownerId, CampType ownerCamp)
- : base(entityId, WeaponType.WeaponSlash, ownerId, ownerCamp)
+ public WeaponSlashData(int entityId, DRWeapon drWeapon, int ownerId, CampType ownerCamp)
+ : base(entityId, drWeapon, ownerId, ownerCamp)
{
ParamsData = ParseParams();
}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponSlashData.cs.meta b/Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponSlashData.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/Entity/EntityData/Weapon/WeaponSlashData.cs.meta
rename to Assets/GameMain/Scripts/Base/Entity/EntityData/Weapon/WeaponSlashData.cs.meta
diff --git a/Assets/GameMain/Scripts/Editor/GameFrameworkConfigs.cs b/Assets/GameMain/Scripts/Editor/GameFrameworkConfigs.cs
index b6ec084..12f265a 100644
--- a/Assets/GameMain/Scripts/Editor/GameFrameworkConfigs.cs
+++ b/Assets/GameMain/Scripts/Editor/GameFrameworkConfigs.cs
@@ -1,5 +1,4 @@
-using GameFramework;
-using System.IO;
+using System.IO;
using UnityEngine;
using UnityGameFramework.Editor;
using UnityGameFramework.Editor.ResourceTools;
@@ -8,16 +7,20 @@ namespace SepCore.Editor
{
public static class GameFrameworkConfigs
{
- [BuildSettingsConfigPath]
- public static string BuildSettingsConfig = Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "GameMain/Configs/BuildSettings.xml"));
+ [BuildSettingsConfigPath] public static string BuildSettingsConfig =
+ GameFramework.Utility.Path.GetRegularPath(Path.Combine(Application.dataPath,
+ "GameMain/Configs/BuildSettings.xml"));
- [ResourceCollectionConfigPath]
- public static string ResourceCollectionConfig = Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "GameMain/Configs/ResourceCollection.xml"));
+ [ResourceCollectionConfigPath] public static string ResourceCollectionConfig =
+ GameFramework.Utility.Path.GetRegularPath(Path.Combine(Application.dataPath,
+ "GameMain/Configs/ResourceCollection.xml"));
- [ResourceEditorConfigPath]
- public static string ResourceEditorConfig = Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "GameMain/Configs/ResourceEditor.xml"));
+ [ResourceEditorConfigPath] public static string ResourceEditorConfig =
+ GameFramework.Utility.Path.GetRegularPath(Path.Combine(Application.dataPath,
+ "GameMain/Configs/ResourceEditor.xml"));
- [ResourceBuilderConfigPath]
- public static string ResourceBuilderConfig = Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "GameMain/Configs/ResourceBuilder.xml"));
+ [ResourceBuilderConfigPath] public static string ResourceBuilderConfig =
+ GameFramework.Utility.Path.GetRegularPath(Path.Combine(Application.dataPath,
+ "GameMain/Configs/ResourceBuilder.xml"));
}
}
diff --git a/Assets/GameMain/Scripts/Editor/VampireLikeBuildEventHandler.cs b/Assets/GameMain/Scripts/Editor/VampireLikeBuildEventHandler.cs
index e92e7ef..0a771fe 100644
--- a/Assets/GameMain/Scripts/Editor/VampireLikeBuildEventHandler.cs
+++ b/Assets/GameMain/Scripts/Editor/VampireLikeBuildEventHandler.cs
@@ -10,17 +10,19 @@ namespace SepCore.Editor
{
public bool ContinueOnFailure
{
- get
- {
- return false;
- }
+ get { return false; }
}
- public void OnPreprocessAllPlatforms(string productName, string companyName, string gameIdentifier, string gameFrameworkVersion, string unityVersion, string applicableGameVersion, int internalResourceVersion,
- Platform platforms, AssetBundleCompressionType assetBundleCompression, string compressionHelperTypeName, bool additionalCompressionSelected, bool forceRebuildAssetBundleSelected, string buildEventHandlerTypeName, string outputDirectory, BuildAssetBundleOptions buildAssetBundleOptions,
- string workingPath, bool outputPackageSelected, string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected, string outputPackedPath, string buildReportPath)
+ public void OnPreprocessAllPlatforms(string productName, string companyName, string gameIdentifier,
+ string gameFrameworkVersion, string unityVersion, string applicableGameVersion, int internalResourceVersion,
+ Platform platforms, AssetBundleCompressionType assetBundleCompression, string compressionHelperTypeName,
+ bool additionalCompressionSelected, bool forceRebuildAssetBundleSelected, string buildEventHandlerTypeName,
+ string outputDirectory, BuildAssetBundleOptions buildAssetBundleOptions,
+ string workingPath, bool outputPackageSelected, string outputPackagePath, bool outputFullSelected,
+ string outputFullPath, bool outputPackedSelected, string outputPackedPath, string buildReportPath)
{
- string streamingAssetsPath = Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "StreamingAssets"));
+ string streamingAssetsPath =
+ GameFramework.Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "StreamingAssets"));
string[] fileNames = Directory.GetFiles(streamingAssetsPath, "*", SearchOption.AllDirectories);
foreach (string fileName in fileNames)
{
@@ -32,28 +34,39 @@ namespace SepCore.Editor
File.Delete(fileName);
}
- Utility.Path.RemoveEmptyDirectory(streamingAssetsPath);
+ GameFramework.Utility.Path.RemoveEmptyDirectory(streamingAssetsPath);
}
- public void OnPostprocessAllPlatforms(string productName, string companyName, string gameIdentifier, string gameFrameworkVersion, string unityVersion, string applicableGameVersion, int internalResourceVersion,
- Platform platforms, AssetBundleCompressionType assetBundleCompression, string compressionHelperTypeName, bool additionalCompressionSelected, bool forceRebuildAssetBundleSelected, string buildEventHandlerTypeName, string outputDirectory, BuildAssetBundleOptions buildAssetBundleOptions,
- string workingPath, bool outputPackageSelected, string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected, string outputPackedPath, string buildReportPath)
+ public void OnPostprocessAllPlatforms(string productName, string companyName, string gameIdentifier,
+ string gameFrameworkVersion, string unityVersion, string applicableGameVersion, int internalResourceVersion,
+ Platform platforms, AssetBundleCompressionType assetBundleCompression, string compressionHelperTypeName,
+ bool additionalCompressionSelected, bool forceRebuildAssetBundleSelected, string buildEventHandlerTypeName,
+ string outputDirectory, BuildAssetBundleOptions buildAssetBundleOptions,
+ string workingPath, bool outputPackageSelected, string outputPackagePath, bool outputFullSelected,
+ string outputFullPath, bool outputPackedSelected, string outputPackedPath, string buildReportPath)
{
}
- public void OnPreprocessPlatform(Platform platform, string workingPath, bool outputPackageSelected, string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected, string outputPackedPath)
+ public void OnPreprocessPlatform(Platform platform, string workingPath, bool outputPackageSelected,
+ string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected,
+ string outputPackedPath)
{
}
- public void OnBuildAssetBundlesComplete(Platform platform, string workingPath, bool outputPackageSelected, string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected, string outputPackedPath, AssetBundleManifest assetBundleManifest)
+ public void OnBuildAssetBundlesComplete(Platform platform, string workingPath, bool outputPackageSelected,
+ string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected,
+ string outputPackedPath, AssetBundleManifest assetBundleManifest)
{
}
- public void OnOutputUpdatableVersionListData(Platform platform, string versionListPath, int versionListLength, int versionListHashCode, int versionListCompressedLength, int versionListCompressedHashCode)
+ public void OnOutputUpdatableVersionListData(Platform platform, string versionListPath, int versionListLength,
+ int versionListHashCode, int versionListCompressedLength, int versionListCompressedHashCode)
{
}
- public void OnPostprocessPlatform(Platform platform, string workingPath, bool outputPackageSelected, string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected, string outputPackedPath, bool isSuccess)
+ public void OnPostprocessPlatform(Platform platform, string workingPath, bool outputPackageSelected,
+ string outputPackagePath, bool outputFullSelected, string outputFullPath, bool outputPackedSelected,
+ string outputPackedPath, bool isSuccess)
{
if (!outputPackageSelected)
{
@@ -65,11 +78,13 @@ namespace SepCore.Editor
return;
}
- string streamingAssetsPath = Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "StreamingAssets"));
+ string streamingAssetsPath =
+ GameFramework.Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "StreamingAssets"));
string[] fileNames = Directory.GetFiles(outputPackagePath, "*", SearchOption.AllDirectories);
foreach (string fileName in fileNames)
{
- string destFileName = Utility.Path.GetRegularPath(Path.Combine(streamingAssetsPath, fileName.Substring(outputPackagePath.Length)));
+ string destFileName = GameFramework.Utility.Path.GetRegularPath(Path.Combine(streamingAssetsPath,
+ fileName.Substring(outputPackagePath.Length)));
FileInfo destFileInfo = new FileInfo(destFileName);
if (!destFileInfo.Directory.Exists)
{
diff --git a/Assets/GameMain/Scripts/Runtime/AsyncTaskHelper.cs b/Assets/GameMain/Scripts/Runtime/BuiltinComponent/AsyncTaskHelper.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/AsyncTaskHelper.cs
rename to Assets/GameMain/Scripts/Runtime/BuiltinComponent/AsyncTaskHelper.cs
diff --git a/Assets/GameMain/Scripts/Runtime/AsyncTaskHelper.cs.meta b/Assets/GameMain/Scripts/Runtime/BuiltinComponent/AsyncTaskHelper.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/AsyncTaskHelper.cs.meta
rename to Assets/GameMain/Scripts/Runtime/BuiltinComponent/AsyncTaskHelper.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/Components/BackpackComponent.cs b/Assets/GameMain/Scripts/Runtime/Components/BackpackComponent.cs
index 2a5a27c..5c92798 100644
--- a/Assets/GameMain/Scripts/Runtime/Components/BackpackComponent.cs
+++ b/Assets/GameMain/Scripts/Runtime/Components/BackpackComponent.cs
@@ -81,14 +81,21 @@ namespace Components
public bool AttachProp(PropItem prop)
{
_props.Add(prop);
- prop.OnAttach(_statComponent);
+ foreach (var modifier in prop.Modifiers)
+ {
+ _statComponent.AddModifier(modifier);
+ }
+
return true;
}
public bool DetachProp(PropItem prop)
{
_props.Remove(prop);
- prop.OnDetach(_statComponent);
+ foreach (var modifier in prop.Modifiers)
+ {
+ _statComponent.RemoveModifier(modifier);
+ }
return true;
}
diff --git a/Assets/GameMain/Scripts/Runtime/CustomComponent/EnemyManager/EnemyManagerComponent.cs b/Assets/GameMain/Scripts/Runtime/CustomComponent/EnemyManager/EnemyManagerComponent.cs
index 449b03a..0756987 100644
--- a/Assets/GameMain/Scripts/Runtime/CustomComponent/EnemyManager/EnemyManagerComponent.cs
+++ b/Assets/GameMain/Scripts/Runtime/CustomComponent/EnemyManager/EnemyManagerComponent.cs
@@ -4,6 +4,7 @@ using SepCore.Definition;
using Entity;
using Entity.EntityData;
using GameFramework.Event;
+using SepCore.Utility;
using UnityEngine;
using UnityGameFramework.Runtime;
using Random = UnityEngine.Random;
@@ -124,7 +125,7 @@ namespace CustomComponent
_nextSpawnTimes = null;
ClearEnemies();
-
+
_currentEnemyCount = 0;
}
@@ -136,10 +137,8 @@ namespace CustomComponent
if (_currentEnemyCount >= _spawnEnemyMaxCount) return;
int entityPoolId = _currentSpawnEnemyId % _spawnEnemyMaxCount;
- var enemyData = new EnemyData(entityPoolId, enemyType, _currentLevel)
- {
- Position = GetRandomPosition()
- };
+ var enemyData = EntityDataFactory.Create(entityPoolId, enemyType, _currentLevel);
+ enemyData.Position = GetRandomPosition();
_entity.ShowEnemy(enemyData);
_currentSpawnEnemyId++;
}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/AccessoryObjectData.cs b/Assets/GameMain/Scripts/Runtime/Entity/EntityData/AccessoryObjectData.cs
deleted file mode 100644
index 75143d3..0000000
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/AccessoryObjectData.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using System;
-using SepCore.Definition;
-using StarForce;
-using UnityEngine;
-
-namespace Entity.EntityData
-{
- [Serializable]
- public abstract class AccessoryObjectData : EntityDataBase
- {
- [SerializeField]
- private int m_OwnerId = 0;
-
- [SerializeField]
- private CampType m_OwnerCamp = CampType.Unknown;
-
- public AccessoryObjectData(int entityId, int typeId, int ownerId, CampType ownerCamp)
- : base(entityId, typeId)
- {
- m_OwnerId = ownerId;
- m_OwnerCamp = ownerCamp;
- }
-
- ///
- /// 拥有者编号。
- ///
- public int OwnerId
- {
- get
- {
- return m_OwnerId;
- }
- }
-
- ///
- /// 拥有者阵营。
- ///
- public CampType OwnerCamp
- {
- get
- {
- return m_OwnerCamp;
- }
- }
- }
-}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EffectData.cs b/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EffectData.cs
deleted file mode 100644
index 7c1a7b9..0000000
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EffectData.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using System;
-using UnityEngine;
-
-namespace Entity.EntityData
-{
- [Serializable]
- public class EffectData : EntityDataBase
- {
- [SerializeField]
- private float m_KeepTime = 0f;
-
- public EffectData(int entityId, int typeId)
- : base(entityId, typeId)
- {
- m_KeepTime = 3f;
- }
-
- public float KeepTime
- {
- get
- {
- return m_KeepTime;
- }
- }
- }
-}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EntityDataBase.cs b/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EntityDataBase.cs
deleted file mode 100644
index 530e936..0000000
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/EntityDataBase.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using System;
-using UnityEngine;
-
-namespace Entity.EntityData
-{
- [Serializable]
- public abstract class EntityDataBase
- {
- [SerializeField]
- private int m_Id = 0;
-
- [SerializeField]
- private int m_TypeId = 0;
-
- [SerializeField]
- private Vector3 m_Position = Vector3.zero;
-
- [SerializeField]
- private Quaternion m_Rotation = Quaternion.identity;
-
- public EntityDataBase(int entityId, int typeId)
- {
- m_Id = entityId;
- m_TypeId = typeId;
- }
-
- ///
- /// 实体编号。
- ///
- public int Id => m_Id;
-
- ///
- /// 实体类型编号。
- ///
- public int TypeId => m_TypeId;
-
- ///
- /// 实体位置。
- ///
- public Vector3 Position
- {
- get => m_Position;
- set => m_Position = value;
- }
-
- ///
- /// 实体朝向。
- ///
- public Quaternion Rotation
- {
- get => m_Rotation;
- set => m_Rotation = value;
- }
- }
-}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/TargetableObjectData.cs b/Assets/GameMain/Scripts/Runtime/Entity/EntityData/TargetableObjectData.cs
deleted file mode 100644
index 071d3fb..0000000
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityData/TargetableObjectData.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-//------------------------------------------------------------
-// Game Framework
-// Copyright © 2013-2021 Jiang Yin. All rights reserved.
-// Homepage: https://gameframework.cn/
-// Feedback: mailto:ellan@gameframework.cn
-//------------------------------------------------------------
-
-using System;
-using SepCore.Definition;
-using StarForce;
-using UnityEngine;
-
-namespace Entity.EntityData
-{
- [Serializable]
- public abstract class TargetableObjectData : EntityDataBase
- {
- [SerializeField]
- private CampType _camp = CampType.Unknown;
-
- public TargetableObjectData(int entityId, int typeId, CampType camp)
- : base(entityId, typeId)
- {
- _camp = camp;
- }
-
- ///
- /// 角色阵营。
- ///
- public CampType Camp => _camp;
-
- ///
- /// 最大生命。
- ///
- public abstract int MaxHealthBase
- {
- get;
- }
- }
-}
diff --git a/Assets/GameMain/Scripts/Runtime/Entity/EntityLogic/Player.cs b/Assets/GameMain/Scripts/Runtime/Entity/EntityLogic/Player.cs
index abd3132..d4071cf 100644
--- a/Assets/GameMain/Scripts/Runtime/Entity/EntityLogic/Player.cs
+++ b/Assets/GameMain/Scripts/Runtime/Entity/EntityLogic/Player.cs
@@ -7,6 +7,7 @@ using Entity.EntityData;
using GameFramework.Event;
using UnityGameFramework.Runtime;
using Entity.Weapon;
+using SepCore.Utility;
namespace Entity
{
@@ -140,7 +141,8 @@ namespace Entity
// BackpackComponent
Coin = role.Coin;
_backpackComponent.OnInit(this, role.WeaponCapacity);
- GameEntry.Entity.ShowWeapon(new WeaponKnifeData(GameEntry.Entity.GenerateSerialId(), Id, _playerData.Camp));
+ GameEntry.Entity.ShowWeapon(EntityDataFactory.Create(GameEntry.Entity.GenerateSerialId(),
+ WeaponType.WeaponKnife, Id, _playerData.Camp));
// StatComponent
foreach (var modifier in role.InitialProperties)
diff --git a/Assets/GameMain/Scripts/Runtime/UIBase/Main/Shop/ShopUseCase.cs b/Assets/GameMain/Scripts/Runtime/UIBase/Main/Shop/ShopUseCase.cs
index 000f786..31dc16f 100644
--- a/Assets/GameMain/Scripts/Runtime/UIBase/Main/Shop/ShopUseCase.cs
+++ b/Assets/GameMain/Scripts/Runtime/UIBase/Main/Shop/ShopUseCase.cs
@@ -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;
diff --git a/Assets/GameMain/Scripts/Runtime/Utility/EntityDataFactory.cs b/Assets/GameMain/Scripts/Runtime/Utility/EntityDataFactory.cs
new file mode 100644
index 0000000..c9cc68b
--- /dev/null
+++ b/Assets/GameMain/Scripts/Runtime/Utility/EntityDataFactory.cs
@@ -0,0 +1,44 @@
+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((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()
+ };
+ }
+ }
+}
diff --git a/Assets/GameMain/Scripts/Runtime/Utility/EntityDataFactory.cs.meta b/Assets/GameMain/Scripts/Runtime/Utility/EntityDataFactory.cs.meta
new file mode 100644
index 0000000..a4e4a78
--- /dev/null
+++ b/Assets/GameMain/Scripts/Runtime/Utility/EntityDataFactory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d562d735e382c1e4388ff5f7d3b57bd8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/数据表/Entity/Enemy.xlsx b/数据表/Entity/Enemy.xlsx
index f50e4c5..5047bb3 100644
Binary files a/数据表/Entity/Enemy.xlsx and b/数据表/Entity/Enemy.xlsx differ
diff --git a/数据表/Entity/Weapon.xlsx b/数据表/Entity/Weapon.xlsx
index 28a267a..d2c93ce 100644
Binary files a/数据表/Entity/Weapon.xlsx and b/数据表/Entity/Weapon.xlsx differ