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