(client) feat:健康给予,路径优化,结算界面,商店界面 (#60)

Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com>
Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/60
This commit is contained in:
2025-10-10 14:08:23 +08:00
parent 9a797479ff
commit 16b49f3d3a
1900 changed files with 114053 additions and 34157 deletions

View File

@@ -1,7 +1,7 @@
using Data;
using Managers;
using System;
using System.Collections.Generic;
using Data;
using Managers;
using UnityEngine;
namespace Item
@@ -12,6 +12,28 @@ namespace Item
/// </summary>
public class ItemResource
{
/// <summary>
/// 构造函数:通过 ItemDef 对象初始化 ItemResource。
/// </summary>
/// <param name="def">物品的定义对象。</param>
/// <exception cref="ArgumentNullException">如果传入的 ItemDef 为 null则抛出此异常。</exception>
public ItemResource(ItemDef def)
{
// 参数校验:在构造函数中进行参数非空检查至关重要,避免空引用异常。
if (def == null) throw new ArgumentNullException(nameof(def), "创建 ItemResource 时ItemDef 不能为 null。");
// 从 ItemDef 对象中直接赋值 ItemResource 的所有属性。
// 这将创建 ItemResource 的逻辑完全封装在类内部,外部调用方无需关心具体属性的提取过程。
DefName = def.defName;
Name = def.label;
Description = def.description;
Rarity = def.rarity;
MaxStack = def.maxStack;
IsEquippable = def.ssEquippable;
FPS = MathF.Max(0.0001f, def.FPS);
Icon = PackagesImageManager.Instance.GetSprites(def.textures);
SelfItemDef = def;
}
/// <summary>
@@ -55,6 +77,8 @@ namespace Item
/// </summary>
public float FPS { get; protected set; }
public ItemDef SelfItemDef { get; protected set; }
public static ItemResource GetDefault()
{
ItemDef defaultDef = new()
@@ -68,26 +92,5 @@ namespace Item
};
return new ItemResource(defaultDef);
}
/// <summary>
/// 构造函数:通过 ItemDef 对象初始化 ItemResource。
/// </summary>
/// <param name="def">物品的定义对象。</param>
/// <exception cref="ArgumentNullException">如果传入的 ItemDef 为 null则抛出此异常。</exception>
public ItemResource(ItemDef def)
{
// 参数校验:在构造函数中进行参数非空检查至关重要,避免空引用异常。
if (def == null) throw new ArgumentNullException(nameof(def), "创建 ItemResource 时ItemDef 不能为 null。");
// 从 ItemDef 对象中直接赋值 ItemResource 的所有属性。
// 这将创建 ItemResource 的逻辑完全封装在类内部,外部调用方无需关心具体属性的提取过程。
DefName = def.defName;
Name = def.label;
Description = def.description;
Rarity = def.rarity;
MaxStack = def.maxStack;
IsEquippable = def.ssEquippable;
FPS = MathF.Max(0.0001f,def.FPS);
Icon = PackagesImageManager.Instance.GetSprites(def.textures);
}
}
}
}