using System; using System.Collections.Generic; using SepCore.Definition; using UnityGameFramework.Runtime; namespace SepCore.Entity { [Serializable] public class WeaponData : AccessoryObjectData { public WeaponConfig Config { get; } public WeaponData(int entityId, WeaponConfig weaponConfig, int ownerId, CampType ownerCamp) : base(weaponConfig.Prefab, entityId, ownerId, ownerCamp) { Config = weaponConfig; } public WeaponType WeaponType => Config.WeaponType; public string LogicType => Config.LogicType; public int Attack => Config.Attack; public DamageType DamageType => Config.DamageType; public string Title => Config.WeaponType.ToString(); public string Sprite => Config.Sprite; public Rarity Rarity => Config.Rarity; public int Price => Config.Price; public float Cooldown => Config.Cooldown; public float AttackRange => Config.AttackRange; public int AttackSoundId => Config.AttackSoundId; public IReadOnlyDictionary Parameters => Config.Parameters; public IReadOnlyList Modifiers => Config.StatModifierConfigs; public float GetParamFloat(ParamType paramType) { if (Config.Parameters.TryGetValue(paramType, out float val)) { return val; } Log.Error("Weapon parameter '{0}' not found for weapon '{1}'.", paramType, Config.WeaponType); return 0f; } } }