mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-20 06:57:12 +08:00
(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:
@@ -1,10 +1,75 @@
|
||||
using System;
|
||||
using Entity;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks; // 引入 Task
|
||||
using Data;
|
||||
using Utils;
|
||||
|
||||
namespace Managers
|
||||
{
|
||||
public class HediffManager:Utils.Singleton<HediffManager>
|
||||
public class HediffManager : Singleton<HediffManager>, ILaunchManager
|
||||
{
|
||||
public Hediff[] BaseHediffs= Array.Empty<Hediff>();
|
||||
private HediffDef[] _baseHediffsCache;
|
||||
|
||||
private bool _needUpdate = true;
|
||||
|
||||
public HediffDef[] BaseHediffs
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_needUpdate || _baseHediffsCache == null)
|
||||
{
|
||||
// 注意:这里仍然假设 SkillTreeManager.Instance 总是可用,遵循不检查单例的原则。
|
||||
var skill = SkillTreeManager.Instance.UnlockedSkillTreesList;
|
||||
var result = new List<HediffDef>();
|
||||
foreach (var skillTree in skill.Where(skillTree => skillTree.unlockedHediffs != null))
|
||||
result.AddRange(skillTree.unlockedHediffs);
|
||||
|
||||
_baseHediffsCache = result.ToArray();
|
||||
_needUpdate = false; // 缓存更新后,重置标志
|
||||
}
|
||||
|
||||
return _baseHediffsCache;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 指示管理器是否已完成初始化。
|
||||
/// </summary>
|
||||
public bool Completed { get; set; } // 接口变更:Loaded 变为 Completed
|
||||
|
||||
public string StepDescription => "计算基础健康状态";
|
||||
|
||||
/// <summary>
|
||||
/// 初始化健康状态管理器。
|
||||
/// </summary>
|
||||
/// <returns>一个表示异步操作完成的 Task。</returns>
|
||||
public async Task Init() // 接口变更:方法签名变为 async Task
|
||||
{
|
||||
// 注意:这里仍然假设 SkillTreeManager.Instance 总是可用,遵循不检查单例的原则。
|
||||
SkillTreeManager.Instance.OnSkillTreeLocked += NeedUpdate;
|
||||
SkillTreeManager.Instance.OnSkillTreeUnlocked += NeedUpdate;
|
||||
|
||||
Completed = true; // 接口变更:设置 Completed 为 true
|
||||
// 由于 Init 方法内部没有真正的异步操作,不需要显式 await Task.CompletedTask;
|
||||
// 编译器会为同步的 async Task 方法自动生成一个已完成的 Task。
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清理健康状态管理器,取消事件订阅。
|
||||
/// </summary>
|
||||
public void Clear()
|
||||
{
|
||||
// 注意:这里仍然假设 SkillTreeManager.Instance 总是可用,遵循不检查单例的原则。
|
||||
SkillTreeManager.Instance.OnSkillTreeLocked -= NeedUpdate;
|
||||
SkillTreeManager.Instance.OnSkillTreeUnlocked -= NeedUpdate;
|
||||
_baseHediffsCache = null; // 清理缓存
|
||||
_needUpdate = true; // 确保下次访问 BaseHediffs 时重新计算
|
||||
Completed = false; // 清理后将 Completed 置为 false
|
||||
}
|
||||
|
||||
public void NeedUpdate(SkillTreeDef treeDef)
|
||||
{
|
||||
_needUpdate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user