- SelectRoleForm 五层归位:UseCase 改为构造注入 IProcedureMenu(新增 Runtime/ProcedureInterface),RawData 暴露原始 StatModifier[] 而非展示串,Controller 复用 ItemDescUtility 拼装属性文本,并修复 OpenUIAsync(object) 合法 RawData 分支缺少 return 的误报路径 - StatModifier 去展示职责:删除 _statTypeNames / ToString,富文本格式化下沉到 Presentation 层的 ItemDescUtility.Describe(StatModifier),CreatePropDescription 改用统一入口 - 事件目录按 UIForm 归档:Base/Event/UI/Menu/* 拆解到 SelectRoleForm/ MenuForm/ DialogForm/ DisplayItemInfoForm/ Combat/ 等各自子目录,MenuSelectRoleReturnEventArgs 改名 SelectRoleReturnEventArgs,语义归属本 UI 模块 - IUIFormController → IUIController 改名,联动 UIControllerBase / UIRouterComponent / Editor - 同步更新 docs/UI-5层架构设计规范.md 中相关示例与 MenuForm.prefab、ProcedureMenu 引用
61 lines
1.9 KiB
C#
61 lines
1.9 KiB
C#
using Cysharp.Threading.Tasks;
|
|
using SepCore.Definition;
|
|
using SepCore.UI;
|
|
using UnityEngine;
|
|
using UnityGameFramework.Runtime;
|
|
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
|
|
|
|
namespace SepCore.Procedure
|
|
{
|
|
public class ProcedureMenu : ProcedureBase, IProcedureMenu
|
|
{
|
|
public override bool UseNativeDialog => false;
|
|
|
|
private bool _startGame = false;
|
|
|
|
private int _selectedRoleId = 0;
|
|
|
|
public void ConfirmSelectRole(int roleId)
|
|
{
|
|
_selectedRoleId = roleId;
|
|
_startGame = true;
|
|
}
|
|
|
|
#region FSM
|
|
|
|
protected override void OnEnter(ProcedureOwner procedureOwner)
|
|
{
|
|
base.OnEnter(procedureOwner);
|
|
|
|
GameEntry.UIRouter.OpenUIAsync(UIFormType.MenuForm);
|
|
|
|
var useCase = new SelectRoleUseCase(this);
|
|
GameEntry.UIRouter.BindUIUseCase(UIFormType.SelectRoleForm, useCase);
|
|
|
|
QualitySettings.vSyncCount = 0;
|
|
Application.targetFrameRate = 120;
|
|
}
|
|
|
|
protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
|
|
{
|
|
base.OnLeave(procedureOwner, isShutdown);
|
|
GameEntry.UIRouter.CloseUIAsync(UIFormType.MenuForm).Forget();
|
|
GameEntry.UIRouter.CloseUIAsync(UIFormType.SelectRoleForm).Forget();
|
|
}
|
|
|
|
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
|
|
{
|
|
base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
|
|
|
|
if (_startGame)
|
|
{
|
|
procedureOwner.SetData<VarInt32>("NextSceneId", (int)SceneId.Game);
|
|
procedureOwner.SetData<VarInt32>("SelectedRoleId", _selectedRoleId);
|
|
ChangeState<ProcedureChangeScene>(procedureOwner);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|