mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-20 02:37: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,100 +1,17 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Managers;
|
||||
using UI;
|
||||
using UnityEngine;
|
||||
using Map;
|
||||
|
||||
namespace Test
|
||||
{
|
||||
public class TestInit : MonoBehaviour
|
||||
{
|
||||
public SkillTreeUI skillTreePageUI;
|
||||
|
||||
private Task _currentMapGenerationTask = Task.CompletedTask; // 初始化为已完成任务
|
||||
private readonly object _mapGenerationLock = new object();
|
||||
public Map.Landform landform;
|
||||
|
||||
private void Start()
|
||||
private void Awake()
|
||||
{
|
||||
Reload();
|
||||
landform = Program.Instance.FocusedDimension?.landform;
|
||||
}
|
||||
|
||||
public async void Reload() // Make Reload async to await the previous task
|
||||
{
|
||||
// 在清理之前,等待任何正在进行的地图生成任务完成
|
||||
// 注意:这会使 Reload() 异步,并且在等待期间 UI 可能会被阻塞,
|
||||
// 或者如果你不await,后续代码可能在任务完成前执行。
|
||||
Task oldMapTask;
|
||||
lock (_mapGenerationLock)
|
||||
{
|
||||
oldMapTask = _currentMapGenerationTask;
|
||||
}
|
||||
|
||||
if (!oldMapTask.IsCompleted)
|
||||
{
|
||||
Debug.Log("TestInit: 等待之前的地图生成任务完成,然后再进行清理和新生成...");
|
||||
try
|
||||
{
|
||||
await oldMapTask; // 等待之前的任务完成
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogWarning($"TestInit: 之前的地图生成任务在等待时失败: {ex.Message}");
|
||||
// 可以选择忽略或者重新抛出
|
||||
}
|
||||
}
|
||||
|
||||
landform?.Clear();
|
||||
|
||||
// --- 清理和初始化阶段 ---
|
||||
DefineManager.Instance.Clear();
|
||||
PackagesImageManager.Instance.Clear();
|
||||
TileManager.Instance.Clear();
|
||||
|
||||
DefineManager.Instance.Init();
|
||||
PackagesImageManager.Instance.Init();
|
||||
TileManager.Instance.Init();
|
||||
// --- 清理和初始化阶段结束 ---
|
||||
|
||||
// 启动新的地图生成任务
|
||||
StartNewMapGeneration(); // 这是一个非 async 的包装方法
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 启动新的地图生成任务,并更新 _currentMapGenerationTask。
|
||||
/// </summary>
|
||||
private void StartNewMapGeneration()
|
||||
{
|
||||
lock (_mapGenerationLock)
|
||||
{
|
||||
_currentMapGenerationTask = InitializeMapGenerationAsync();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步初始化并应用所有地图生成器。
|
||||
/// </summary>
|
||||
private async Task InitializeMapGenerationAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 异步应用地图生成器,并且按顺序等待它们完成
|
||||
await TileManager.Instance.ApplyMapGenerator("DefaultMapGenerator");
|
||||
// await TileManager.Instance.ApplyMapGenerator("WaterMapGenerator");
|
||||
await TileManager.Instance.ApplyMapGenerator("TreeGenerator");
|
||||
|
||||
Debug.Log("TestInit: 所有地图生成器已成功应用并完成。");
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
Debug.LogWarning("TestInit: 地图生成任务被取消。");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError($"TestInit: 在地图生成过程中发生未处理的错误: {ex.Message}");
|
||||
}
|
||||
_ = DefineManager.Instance.Init();
|
||||
// PackagesImageManager.Instance.Init();
|
||||
// ItemResourceManager.Instance.Init();
|
||||
_ = AffiliationManager.Instance.Init();
|
||||
Debug.Log(AffiliationManager.Instance.GetRelation("monster", "monster"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user