using Code.Scripts.Gameplay.Game;
using Framework;
using Gameplay.Net;
using Gameplay.Story;
using PhxhSDK;
namespace Gameplay.HeroSelect
{
///
/// 角色选择管理器
///
public sealed class HeroSelectManager : Singlenton, IInitable
{
///
/// 角色形象1id
///
public const int HERO_ID_1 = 1;
///
/// 角色形象2id
///
public const int HERO_ID_2 = 2;
///
/// 是否选择过角色
///
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);
}
///
/// 从剧情打开选择角色UI
///
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;
}
});
}
}
}