Files
Gen_Hack-and-Slash-Roguelit…/Client/Assets/Scripts/Item/WeaponResource.cs

52 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Base;
using Data;
using Entity;
using Prefab;
using System;
using System.Collections.Generic;
using Managers;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Item
{
public class WeaponResource : ItemResource
{
public Attributes Attributes { get; private set; }
public BulletDef Bullet { get; private set; }
public WeaponType Type { get; private set; }
public IReadOnlyList<Sprite> AttackAnimation { get; private set; }
public float AttackAnimationTime { get; private set; }
public float AttackCooldown => 1f / Attributes.attackSpeed;
public float AttackDetectionTime { get; private set; }
public bool UseEntityAttackAnimation { get; private set; }
/// <summary>
/// 构造函数:通过 WeaponDef 对象初始化 WeaponResource。
/// </summary>
/// <param name="def">武器的定义对象。</param>
/// <exception cref="ArgumentNullException">如果传入的 WeaponDef 为 null则抛出此异常。</exception>
public WeaponResource(WeaponDef def)
: base(def) // 调用基类 ItemResource 的构造函数,直接传入 WeaponDef。
{
// 参数校验:确保 WeaponDef 对象不为空,避免空引用异常。
if (def == null)
{
throw new ArgumentNullException(nameof(def), "创建 WeaponResource 时WeaponDef 不能为 null。");
}
Bullet = def.bullet;
// 初始化武器的属性。Attributes 对象通过 WeaponDef 中的属性数据进行构建。
Attributes = new Attributes(def.attributes);
// 初始化武器类型,直接从 WeaponDef 定义中获取。
Type = def.type;
AttackAnimation = PackagesImageManager.Instance.GetSprites(def.attackAnimation);
AttackAnimationTime = AttackAnimation.Count / FPS;
AttackDetectionTime = def.attackDetectionTime;
UseEntityAttackAnimation = def.useEntityAttackAnimation;
}
}
}