mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-26 03:33:38 +00:00
102 lines
3.5 KiB
C++
102 lines
3.5 KiB
C++
#pragma once
|
|
#include <cstdint>
|
|
|
|
#include "../Media/xuiscene_ingame_player_options.h"
|
|
|
|
class CScene_InGamePlayerOptions : public CXuiSceneImpl {
|
|
private:
|
|
enum EControls {
|
|
// Checkboxes
|
|
eControl_BuildAndMine,
|
|
eControl_UseDoorsAndSwitches,
|
|
eControl_UseContainers,
|
|
eControl_AttackPlayers,
|
|
eControl_AttackAnimals,
|
|
eControl_Op,
|
|
eControl_CheatTeleport,
|
|
eControl_HostFly,
|
|
eControl_HostHunger,
|
|
eControl_HostInvisible,
|
|
|
|
eControl_CHECKBOXES_COUNT,
|
|
|
|
// Others
|
|
eControl_Kick = eControl_CHECKBOXES_COUNT,
|
|
};
|
|
|
|
protected:
|
|
HXUIOBJ m_focusElement; // Only used for the remove control process
|
|
|
|
CXuiControl m_Icon;
|
|
CXuiControl m_Gamertag;
|
|
CXuiScene m_TeleportGroup;
|
|
CXuiControl m_buttonKick;
|
|
CXuiCheckbox m_checkboxes[eControl_CHECKBOXES_COUNT];
|
|
|
|
XUI_BEGIN_MSG_MAP()
|
|
XUI_ON_XM_INIT(OnInit)
|
|
XUI_ON_XM_DESTROY(OnDestroy)
|
|
XUI_ON_XM_KEYDOWN(OnKeyDown)
|
|
XUI_ON_XM_NOTIFY_PRESS_EX(OnNotifyPressEx)
|
|
XUI_ON_XM_CONTROL_NAVIGATE(OnControlNavigate)
|
|
XUI_ON_XM_TRANSITION_START(OnTransitionStart)
|
|
XUI_END_MSG_MAP()
|
|
|
|
BEGIN_CONTROL_MAP()
|
|
MAP_CONTROL(IDC_Icon, m_Icon)
|
|
MAP_CONTROL(IDC_Gamertag, m_Gamertag)
|
|
|
|
MAP_CONTROL(IDC_CheckboxBuildAndMine, m_checkboxes[eControl_BuildAndMine])
|
|
MAP_CONTROL(IDC_CheckboxAttackPlayers, m_checkboxes[eControl_AttackPlayers])
|
|
MAP_CONTROL(IDC_CheckboxAttackAnimals, m_checkboxes[eControl_AttackAnimals])
|
|
MAP_CONTROL(IDC_CheckboxUseContainers, m_checkboxes[eControl_UseContainers])
|
|
MAP_CONTROL(IDC_CheckboxUseDoorsAndSwitches,
|
|
m_checkboxes[eControl_UseDoorsAndSwitches])
|
|
MAP_CONTROL(IDC_CheckboxOp, m_checkboxes[eControl_Op])
|
|
MAP_CONTROL(IDC_CheckboxTeleport, m_checkboxes[eControl_CheatTeleport])
|
|
MAP_CONTROL(IDC_CheckboxHostInvisible, m_checkboxes[eControl_HostInvisible])
|
|
MAP_CONTROL(IDC_CheckboxHostFly, m_checkboxes[eControl_HostFly])
|
|
MAP_CONTROL(IDC_CheckboxHostHunger, m_checkboxes[eControl_HostHunger])
|
|
|
|
MAP_CONTROL(IDC_ButtonKick, m_buttonKick)
|
|
END_CONTROL_MAP()
|
|
|
|
HRESULT OnInit(XUIMessageInit* pInitData, BOOL& bHandled);
|
|
HRESULT OnDestroy();
|
|
HRESULT OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled);
|
|
HRESULT OnNotifyPressEx(HXUIOBJ hObjPressed,
|
|
XUINotifyPress* pNotifyPressData, BOOL& rfHandled);
|
|
HRESULT OnControlNavigate(XUIMessageControlNavigate* pControlNavigateData,
|
|
BOOL& bHandled);
|
|
HRESULT OnTransitionStart(XUIMessageTransition* pTransition,
|
|
BOOL& bHandled);
|
|
|
|
public:
|
|
// Define the class. The class name must match the ClassOverride property
|
|
// set for the scene in the UI Authoring tool.
|
|
XUI_IMPLEMENT_CLASS(CScene_InGamePlayerOptions,
|
|
L"CScene_InGamePlayerOptions", XUI_CLASS_SCENE)
|
|
|
|
static void OnPlayerChanged(void* callbackParam, INetworkPlayer* pPlayer,
|
|
bool leaving);
|
|
|
|
private:
|
|
bool m_editingSelf;
|
|
int m_iPad;
|
|
std::uint8_t m_networkSmallId;
|
|
unsigned int m_playerPrivileges;
|
|
D3DXVECTOR3 m_OriginalPosition;
|
|
|
|
void removeControl(HXUIOBJ hObjToRemove, bool center);
|
|
|
|
/** 4J-JEV:
|
|
For enabling/disabling 'Can Fly', 'Can Teleport', 'Can Disable
|
|
Hunger' etc used after changing the moderator checkbox.
|
|
*/
|
|
void resetCheatCheckboxes();
|
|
|
|
public:
|
|
static int KickPlayerReturned(void* pParam, int iPad,
|
|
C4JStorage::EMessageResult result);
|
|
};
|