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

67 lines
1.9 KiB
C#
Raw Normal View History

2025-04-02 14:37:16 +08:00
using Code.Scripts.Gameplay.Game;
using Framework;
2025-03-27 15:46:09 +08:00
using Gameplay.Net;
2025-04-02 14:37:16 +08:00
using Gameplay.Story;
2025-03-27 15:46:09 +08:00
using PhxhSDK;
namespace Gameplay.HeroSelect
{
/// <summary>
/// 角色选择管理器
/// </summary>
2025-04-02 14:37:16 +08:00
public sealed class HeroSelectManager : Singlenton<HeroSelectManager>, IInitable
2025-03-27 15:46:09 +08:00
{
/// <summary>
/// 角色形象1id
/// </summary>
public const int HERO_ID_1 = 1;
/// <summary>
/// 角色形象2id
/// </summary>
2025-04-02 15:54:28 +08:00
public const int HERO_ID_2 = 2;
2025-03-27 15:46:09 +08:00
/// <summary>
/// 是否选择过角色
/// </summary>
2025-04-02 16:27:14 +08:00
public bool IsSetHero
2025-03-27 15:46:09 +08:00
{
get
{
2025-03-27 16:05:17 +08:00
uint index = Actor.Instance.Base.GetProp(NLDPB.ActorProp.Avatar);
2025-04-03 15:02:30 +08:00
return 0u != index;
2025-03-27 15:46:09 +08:00
}
}
2025-04-02 14:37:16 +08:00
public void Init()
{
EventManager.Instance.Register(EventManager.EventName.STORY_OPEN_SELECT_HERO, OpenSelectHeroFromStory);
2025-04-02 14:37:16 +08:00
}
public void Release()
{
EventManager.Instance.Unregister(EventManager.EventName.STORY_OPEN_SELECT_HERO, OpenSelectHeroFromStory);
2025-04-02 14:37:16 +08:00
}
/// <summary>
/// 从剧情打开选择角色UI
/// </summary>
public async void OpenSelectHeroFromStory()
2025-04-02 14:37:16 +08:00
{
2025-04-03 15:02:30 +08:00
if (IsSetHero)
return;
2025-04-02 14:37:16 +08:00
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;
}
});
}
2025-03-27 15:46:09 +08:00
}
}