4jcraft/Minecraft.Client/Platform/Common/UI/UIScene_ControlsMenu.h
2026-03-30 02:17:54 -05:00

201 lines
11 KiB
C++

#pragma once
#include "UIScene.h"
class UIScene_ControlsMenu : public UIScene {
private:
enum EControl {
// Buttons must be first three controls here
eControl_Button0,
eControl_Button1,
eControl_Button2,
eControl_InvertLook,
eControl_Southpaw,
};
enum EPadButtons {
e_PadBack = 0,
e_PadLT,
e_PadLB,
e_PadDPadLeft,
e_PadDPadRight,
e_PadDPadUp,
e_PadDPadDown,
e_PadLS_1,
e_PadLS_2,
e_PadStart,
e_PadRT,
e_PadRB,
e_PadY,
e_PadB,
e_PadA,
e_PadX,
e_PadRS_1,
e_PadRS_2,
e_PadTouch,
e_PadCOUNT,
};
int m_iSchemeTextA[3];
int m_iCurrentNavigatedControlsLayout;
bool m_bCreativeMode;
bool m_bLayoutChanged;
UIControl_Label m_labelCurrentLayout;
UIControl_Label m_labelVersion;
UIControl_Label m_labelsPad[e_PadCOUNT];
UIControl m_controlLines[e_PadCOUNT];
UIControl_Button m_buttonLayouts[3];
UIControl_CheckBox m_checkboxInvert, m_checkboxSouthpaw;
IggyName m_funcSetPlatform, m_funcSetControllerLayout;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
{UI_MAP_ELEMENT(m_labelCurrentLayout, "CurrentLayout")
UI_MAP_ELEMENT(m_buttonLayouts[0], "Button1")
UI_MAP_ELEMENT(m_buttonLayouts[1], "Button2")
UI_MAP_ELEMENT(m_buttonLayouts[2], "Button3")}
UI_MAP_ELEMENT(m_labelsPad[e_PadBack], "LabelBack") UI_MAP_ELEMENT(
m_labelsPad[e_PadLT],
"LabelLT") UI_MAP_ELEMENT(m_labelsPad[e_PadLB],
"LabelLB") UI_MAP_ELEMENT(m_labelsPad
[e_PadDPadLeft],
"LabelDPadLeft")
UI_MAP_ELEMENT(m_labelsPad[e_PadDPadRight], "LabelDPadRight") UI_MAP_ELEMENT(
m_labelsPad[e_PadDPadUp],
"LabelDPadUp") UI_MAP_ELEMENT(m_labelsPad[e_PadDPadDown],
"LabelDPadDown") UI_MAP_ELEMENT(m_labelsPad
[e_PadLS_1],
"LabelLS_"
"1")
UI_MAP_ELEMENT(m_labelsPad[e_PadLS_2], "LabelLS_2") UI_MAP_ELEMENT(
m_labelsPad[e_PadStart],
"LabelStart") UI_MAP_ELEMENT(m_labelsPad[e_PadRT],
"LabelRT") UI_MAP_ELEMENT(m_labelsPad
[e_PadRB],
"LabelRB")
UI_MAP_ELEMENT(m_labelsPad[e_PadY], "LabelY") UI_MAP_ELEMENT(
m_labelsPad[e_PadB],
"LabelB") UI_MAP_ELEMENT(m_labelsPad[e_PadA],
"LabelA") UI_MAP_ELEMENT(m_labelsPad
[e_PadX],
"LabelX")
UI_MAP_ELEMENT(m_labelsPad[e_PadRS_1], "LabelRS_1") UI_MAP_ELEMENT(
m_labelsPad[e_PadRS_2],
"LabelRS_2") UI_MAP_ELEMENT(m_labelsPad[e_PadTouch],
"LabelTouch")
UI_MAP_ELEMENT(m_controlLines[e_PadBack], "LineBack") UI_MAP_ELEMENT(
m_controlLines[e_PadLT],
"LineLT") UI_MAP_ELEMENT(m_controlLines[e_PadLB],
"LineLB") UI_MAP_ELEMENT(m_controlLines
[e_PadDPadLeft],
"Line"
"Dpad"
"Lef"
"t")
UI_MAP_ELEMENT(
m_controlLines[e_PadDPadRight],
"LineDpadRight") UI_MAP_ELEMENT(m_controlLines
[e_PadDPadUp],
"LineDpadUp")
UI_MAP_ELEMENT(
m_controlLines[e_PadDPadDown],
"LineDpadDown") UI_MAP_ELEMENT(m_controlLines
[e_PadLS_1],
"LineL3")
UI_MAP_ELEMENT(
m_controlLines[e_PadLS_2],
"LineLeftStick") UI_MAP_ELEMENT(m_controlLines
[e_PadStart],
"LineStart")
UI_MAP_ELEMENT(
m_controlLines[e_PadRT],
"LineRT") UI_MAP_ELEMENT(m_controlLines
[e_PadRB],
"LineRB")
UI_MAP_ELEMENT(
m_controlLines[e_PadY],
"LineY") UI_MAP_ELEMENT(m_controlLines
[e_PadB],
"LineB")
UI_MAP_ELEMENT(
m_controlLines[e_PadA],
"LineA") UI_MAP_ELEMENT(m_controlLines
[e_PadX],
"LineX")
UI_MAP_ELEMENT(
m_controlLines[e_PadRS_1],
"LineR3") UI_MAP_ELEMENT(m_controlLines
[e_PadRS_2],
"L"
"i"
"n"
"e"
"R"
"i"
"g"
"h"
"t"
"S"
"t"
"i"
"c"
"k")
UI_MAP_ELEMENT(
m_controlLines
[e_PadTouch],
"LineTouch")
UI_MAP_ELEMENT(
m_checkboxInvert,
"InvertLook")
UI_MAP_ELEMENT(
m_checkboxSouthpaw,
"SouthPaw")
UI_MAP_NAME(
m_funcSetPlatform,
L"SetPlatfo"
L"rm")
UI_MAP_NAME(
m_funcSetControllerLayout,
L"SetCo"
L"ntrol"
L"lerLa"
L"yout")
UI_MAP_ELEMENT(
m_labelVersion,
"Ve"
"rs"
"io"
"n")
UI_END_MAP_ELEMENTS_AND_NAMES() public
: UIScene_ControlsMenu(int iPad, void* initData, UILayer* parentLayer);
virtual EUIScene getSceneType() { return eUIScene_ControlsMenu; }
virtual void updateTooltips();
virtual void tick();
protected:
// TODO: This should be pure virtual in this class
virtual std::wstring getMoviePath();
public:
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed,
bool released, bool& handled);
virtual void handleCheckboxToggled(F64 controlId, bool selected);
virtual void handlePress(F64 controlId, F64 childId);
virtual void handleFocusChange(F64 controlId, F64 childId);
private:
void PositionText(int iPad, int iTextID, unsigned char ucAction);
void PositionTextDirect(int iPad, int iTextID, int iControlDetailsIndex,
bool bShow);
void PositionAllText(int iPad);
};