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; } }); } } }