Files
2026-05-19 10:46:26 +07:00

69 lines
2.2 KiB
C#

using System;
using BrewMonster.Scripts;
using Cysharp.Threading.Tasks;
using ModelRenderer.Scripts.GameData;
using UnityEngine;
namespace BrewMonster
{
public class ElementDataManProvider : IAutoInitialize
{
private static ElementDataManProvider _instance;
private elementdataman _elementDataMan;
/// <summary>
/// True after <see cref="elementdataman.load_data"/> succeeds. Bootstrap scripts can poll this before <see cref="CECPlayer.InitStaticRes"/> / <see cref="CECPlayer.SetPlayerModel"/>.
/// </summary>
public static bool IsDataLoaded { get; private set; }
public static elementdataman GetElementDataMan()
{
return _instance._elementDataMan;
}
public async void Initialize()
{
await InitializeInternal();
}
public async UniTask InitializeInternal()
{
_elementDataMan = new();
_instance = this;
IsDataLoaded = false;
try
{
while (!AddressableManager.Instance.IsInitialized())
{
await UniTask.DelayFrame(1);
}
var result = await _elementDataMan.load_data();
//TODO: this is for testing. move it to other place
itemdataman.load_data("",false);
if (result == -1)
{
BMLogger.LogError("ElementDataManProvider: Failed to load element data");
}
else
{
IsDataLoaded = true;
BMLogger.Log("ElementDataManProvider: Successfully loaded element data");
// Build suite equip tab now that data is loaded
// 数据加载完成后构建套装装备表
BrewMonster.Network.EC_Game.BuildSuiteEquipTab();
}
}
catch (Exception ex)
{
BMLogger.LogError($"ElementDataManProvider: Failed to load element data: {ex} - {ex.StackTrace}");
}
}
public void Dispose()
{
IsDataLoaded = false;
_elementDataMan = null;
_instance = null;
}
}
}