#pragma once #include "Network/Public/IGameServer.h" #include "Network/Public/IGameServerConsole.h" #include "Core/Public/IGameServiceProvider.h" #include "Core/Public/ITextLookupService.h" // ServerDialog dialog class ServerDialog : public CDialogEx, public IGameServerConsole { DECLARE_DYNAMIC(ServerDialog) public: ~ServerDialog(); ServerDialog(IGameServiceProvider* container, CWnd* parent = nullptr); void CreateColumns(); void RefreshPlayers(); static void STDMETHODCALLTYPE TimerCallback(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime); void CloseDialog() override; void ShowDialog() override; EventListenerResult HandlePlayerConnected(const GameServerEvent& event); EventListenerResult HandlePlayerDisconnected(const GameServerEvent& event); EventListenerResult HandleChatMessage(const GameServerEvent& event); EventListenerResult HandleWorldLoaded(const GameServerEvent& event); // MFC methods BOOL OnInitDialog() override; void PostNcDestroy() override; void OnOK() override; void OnCancel() override; // Dialog Data #ifdef AFX_DESIGN_TIME enum { IDD = IDD_SERVER }; #endif private: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support DECLARE_MESSAGE_MAP() CEdit ConsoleEditBox; CListCtrl PlayersListCtrl; CButton ButtonBan; CButton ButtonKick; afx_msg void OnBnClickedKick(); afx_msg void OnBnClickedBan(); afx_msg void OnItemChanged(NMHDR* pNMHDR, LRESULT* pResult); UUID m_playerConnectedEventHandle{}; UUID m_playerDisconnectedEventHandle{}; UUID m_playerChatMessageHandle{}; UUID m_worldLoadedHandle{}; IGameServiceProvider* m_serviceProvider{}; const int NumColumns = 5; };