public class ProcedureMenu : ProcedureLogic { private bool m_StartGame = false; //开始游戏的标志位 private MenuForm m_MenuForm = null; //菜单界面 /// <summary> /// 开始游戏 /// </summary> public void StartGame() { m_StartGame = true; } public override void OnEnter(IFsm<IProcedureManager> procedureOwner) { GameEntry.Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess); //订阅打开UI的回调 m_StartGame = false; //执行打开UI操作 GameEntry.UI.OpenUIForm(UIFormID.MenuForm, this); } public override void OnLeave(IFsm<IProcedureManager> procedureOwner, bool isShutdown) { GameEntry.Event.Unsubscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess); if (m_MenuForm != null && m_MenuForm.RuntimeUIForm != null) { m_MenuForm.RuntimeUIForm.Close(isShutdown); m_MenuForm = null; } } public override void OnUpdate(IFsm<IProcedureManager> procedureOwner) { if (m_StartGame) { procedureOwner.SetData(Constant.ProcedureData.NextSceneId, new VarInt(GameEntry.Config.GetInt("Scene.Main"))); procedureOwner.SetData(Constant.ProcedureData.GameMode, new VarInt((int)GameMode.Survival)); RuntimeProcedure.ChangeProcedure<HotProcedureChangeScene>(procedureOwner); } } //打开UI成功的回调 private void OnOpenUIFormSuccess(object sender, GameEventArgs e) { OpenUIFormSuccessEventArgs args = e as OpenUIFormSuccessEventArgs; UserUIData uiData = args.UserData as UserUIData; if (uiData.UserData != this) return; m_MenuForm = uiData.RuntimeUIForm.HotLogicInstance as MenuForm; } public override void OnDestroy(IFsm<IProcedureManager> procedureManager) { } }
时间: 2024-02-14 07:19:27 浏览: 18
这是一段 C# 代码,它定义了一个名为 ProcedureMenu 的类,该类继承自 ProcedureLogic 类。该类的主要功能是在游戏流程中管理菜单界面,并在需要时启动游戏。
在该类中,定义了一个 bool 类型的 m_StartGame 变量,用于标记游戏是否开始。还定义了一个 MenuForm 类型的 m_MenuForm 变量,用于管理菜单界面。
该类中定义了 StartGame 方法,用于设置 m_StartGame 变量为 true,表示游戏已经开始。该类还重写了 OnEnter、OnLeave 和 OnUpdate 方法,用于在游戏流程中管理菜单界面的打开、关闭和更新操作。
此外,该类还定义了一个 OnOpenUIFormSuccess 方法,用于订阅打开 UI 界面成功的回调,并在回调中获取菜单界面的实例。最后,该类还实现了一个 OnDestroy 方法,用于在销毁该类时执行清理操作。
相关问题
default argument given for parameter 1 of ‘yusur::race::Int64ColumnAttr* yusur::race::Int64ColumnBuilder::build(bool)’ [-fpermissive] 22 | Int64ColumnAttr* Int64ColumnBuilder::build(bool is_scalar = false)
这个错误是由于函数 `yusur::race::Int64ColumnBuilder::build` 的第一个参数 `is_scalar` 在函数声明时已经有了默认参数值,但在函数实现时又重新提供了默认参数值,导致编译器产生冲突。
为了解决这个错误,你可以采取以下几种方法之一:
1. 保持函数声明和实现的一致性:如果你想要在函数声明中指定默认参数值,那么在函数实现时应该省略默认参数值的提供。在你的代码中,移除函数实现中 `is_scalar = false` 的默认参数值。
```cpp
Int64ColumnAttr* Int64ColumnBuilder::build(bool is_scalar) {
// 函数实现代码...
}
```
2. 在函数声明和实现中都提供相同的默认参数值:如果你想要在函数声明和实现中都使用默认参数值,那么确保两者提供的默认参数值相同。
```cpp
// 在函数声明中提供默认参数值
Int64ColumnAttr* Int64ColumnBuilder::build(bool is_scalar = false);
// 在函数实现中提供相同的默认参数值
Int64ColumnAttr* Int64ColumnBuilder::build(bool is_scalar /*= false*/) {
// 函数实现代码...
}
```
请根据你的需求选择其中一种方法,并进行相应的更改来解决这个错误。如果问题仍然存在或有其他问题,请提供更多的代码细节,以便我能够更好地帮助你。
Ui::ShareSourceSelect ui; QList<PrintBase *> m_listScreenPointer; PrintBase* m_pWindowSharePointer{ nullptr }; PrintBase *m_pCurrentShare{ nullptr }; // 共享桌面table QWidget* m_pScreenWgt{ nullptr }; // 共享应用table QWidget* m_pWindowWgt{ nullptr }; QList<QWidget*> m_listClickWgt; CaptureWin* m_pCaptureWin{ nullptr }; DesktopShareWindow* m_pDesktopShareWindow{ nullptr }; CaptureScreenSpace::SourceList m_vecResultEnum; // 当前选择序号 int m_iCurIndex{ CaptureScreenSpace::kFullDesktopScreenId }; //是否已经请求共享双流 std::atomic_bool m_bRequestOpenDual{ false }; //是否已经开启双流 std::atomic_bool m_bOpenDual{ false }; //命令打开共享 bool m_bCmdOpen{ false }; //是否为命令关闭共享 bool m_bCmdClose{ false }; std::set<HWND> m_setHwnd{}; // TODO #ifdef Q_OS_WIN // 进程信息列表 QList<HTHUMBNAIL*> m_listThumbnail{}; #endif // Q_OS_WIN // 记录共享屏幕的位置 QRect m_ShareScreenRect; // 当前所在缩略图页面索引 int m_iCurrentPageNum{ 0 }; // 选择窗口在当前页的索引 int m_iWindowPageNum{ 0 }; // 选择应用在当前页的索引 int m_iScreenPageNum{ 0 }; //配置的抓屏方法 CaptureScreenSpace::CaptureMethod m_emCapMethod{ CaptureScreenSpace::CaptureMethod::SCELIB };
这段代码定义了一个类,其中包含了多个成员变量。其中,一些需要注意的成员变量如下:
- `m_listScreenPointer`:一个指向 `PrintBase` 类型的指针列表。
- `m_pWindowSharePointer`:一个指向 `PrintBase` 类型的指针,初始值为 `nullptr`。
- `m_pCurrentShare`:一个指向 `PrintBase` 类型的指针,初始值为 `nullptr`。
- `m_pScreenWgt`:一个指向 `QWidget` 类型的指针,初始值为 `nullptr`。
- `m_pWindowWgt`:一个指向 `QWidget` 类型的指针,初始值为 `nullptr`。
- `m_listClickWgt`:一个指向 `QWidget` 类型的指针列表。
- `m_pCaptureWin`:一个指向 `CaptureWin` 类型的指针,初始值为 `nullptr`。
- `m_pDesktopShareWindow`:一个指向 `DesktopShareWindow` 类型的指针,初始值为 `nullptr`。
- `m_vecResultEnum`:一个 `CaptureScreenSpace::SourceList` 类型的向量。
- `m_iCurIndex`:一个 `int` 类型的变量,表示当前选择的序号。
- `m_bRequestOpenDual`:一个 `std::atomic_bool` 类型的变量,表示是否已经请求打开双流。
- `m_bOpenDual`:一个 `std::atomic_bool` 类型的变量,表示是否已经打开双流。
- `m_bCmdOpen`:一个 `bool` 类型的变量,表示是否为命令打开共享。
- `m_bCmdClose`:一个 `bool` 类型的变量,表示是否为命令关闭共享。
- `m_setHwnd`:一个 `std::set<HWND>` 类型的集合。
- `m_listThumbnail`:一个 `QList<HTHUMBNAIL*>` 类型的列表,只在 Windows 系统下生效。
- `m_iCurrentPageNum`:一个 `int` 类型的变量,表示当前所在缩略图页面索引。
- `m_iWindowPageNum`:一个 `int` 类型的变量,表示选择窗口在当前页的索引。
- `m_iScreenPageNum`:一个 `int` 类型的变量,表示选择应用在当前页的索引。
- `m_emCapMethod`:一个 `CaptureScreenSpace::CaptureMethod` 类型的变量,表示配置的抓屏方法。
这些成员变量的类型和含义可能需要根据上下文来具体分析。