NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/HeroSelect/HeroSelectManager.cs

67 lines
1.9 KiB
C#

using Code.Scripts.Gameplay.Game;
using Framework;
using Gameplay.Net;
using Gameplay.Story;
using PhxhSDK;
namespace Gameplay.HeroSelect
{
/// <summary>
/// 角色选择管理器
/// </summary>
public sealed class HeroSelectManager : Singlenton<HeroSelectManager>, IInitable
{
/// <summary>
/// 角色形象1id
/// </summary>
public const int HERO_ID_1 = 1;
/// <summary>
/// 角色形象2id
/// </summary>
public const int HERO_ID_2 = 2;
/// <summary>
/// 是否选择过角色
/// </summary>
public bool IsSetHero
{
get
{
uint index = Actor.Instance.Base.GetProp(NLDPB.ActorProp.Avatar);
return 0u != index;
}
}
public void Init()
{
EventManager.Instance.Register(EventManager.EventName.STORY_OPEN_SELECT_HERO, OpenSelectHeroFromStory);
}
public void Release()
{
EventManager.Instance.Unregister(EventManager.EventName.STORY_OPEN_SELECT_HERO, OpenSelectHeroFromStory);
}
/// <summary>
/// 从剧情打开选择角色UI
/// </summary>
public async void OpenSelectHeroFromStory()
{
if (IsSetHero)
return;
if (GameStateManager.Instance.GetCurState() is GameStateStory gameStateStory)
gameStateStory.IsReady = false;
await UI_ChoosePersonController.Open(async () =>
{
if (GameStateManager.Instance.GetCurState() is GameStateStory gameStateStory)
{
// 这里需要重新创建主角模型
await StoryManager.instance.AutoReCreatePlayerModel(gameStateStory.storyConfig);
gameStateStory.IsReady = true;
}
});
}
}
}