aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h')
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h189
1 files changed, 189 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h b/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h
new file mode 100644
index 00000000..c9ed6691
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h
@@ -0,0 +1,189 @@
+#pragma once
+#include "..\..\..\Minecraft.World\Definitions.h"
+#include "UIScene.h"
+#include "UIControl_PlayerSkinPreview.h"
+
+class UIScene_SkinSelectMenu : public UIScene
+{
+private:
+ static WCHAR *wchDefaultNamesA[eDefaultSkins_Count];
+
+ // 4J Stu - How many to show on each side of the main control
+ static const BYTE sidePreviewControls = 4;
+
+#ifdef __PSVITA__
+ enum ETouchInput
+ {
+ ETouchInput_TabLeft = 10,
+ ETouchInput_TabRight,
+ ETouchInput_TabCenter,
+ ETouchInput_IggyCharacters,
+
+ ETouchInput_Count,
+ };
+#endif
+
+ enum ESkinSelectNavigation
+ {
+ eSkinNavigation_Pack,
+ eSkinNavigation_Skin,
+
+ eSkinNavigation_Count,
+ };
+
+ enum ECharacters
+ {
+ eCharacter_Current,
+ eCharacter_Next1,
+ eCharacter_Next2,
+ eCharacter_Next3,
+ eCharacter_Next4,
+ eCharacter_Previous1,
+ eCharacter_Previous2,
+ eCharacter_Previous3,
+ eCharacter_Previous4,
+
+ eCharacter_COUNT,
+ };
+
+ UIControl_PlayerSkinPreview m_characters[eCharacter_COUNT];
+ UIControl_Label m_labelSkinName, m_labelSkinOrigin;
+ UIControl_Label m_labelSelected;
+ UIControl m_controlSkinNamePlate, m_controlSelectedPanel, m_controlIggyCharacters, m_controlTimer;
+#ifdef __PSVITA__
+ UIControl_Touch m_TouchTabLeft, m_TouchTabRight, m_TouchTabCenter, m_TouchIggyCharacters;
+#endif
+ IggyName m_funcSetPlayerCharacterSelected, m_funcSetCharacterLocked;
+ IggyName m_funcSetLeftLabel, m_funcSetRightLabel, m_funcSetCentreLabel;
+ UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
+#ifdef __PSVITA__
+ UI_MAP_ELEMENT( m_TouchTabLeft, "TouchTabLeft" )
+ UI_MAP_ELEMENT( m_TouchTabRight, "TouchTabRight" )
+ UI_MAP_ELEMENT( m_TouchTabCenter, "TouchTabCenter" )
+ UI_MAP_ELEMENT( m_TouchIggyCharacters, "TouchIggyCharacters" )
+#endif
+ UI_MAP_ELEMENT( m_controlSkinNamePlate, "SkinNamePlate")
+ UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlSkinNamePlate )
+ UI_MAP_ELEMENT( m_labelSkinName, "SkinTitle1")
+ UI_MAP_ELEMENT( m_labelSkinOrigin, "SkinTitle2")
+ UI_END_MAP_CHILD_ELEMENTS()
+
+ UI_MAP_ELEMENT( m_controlSelectedPanel, "SelectedPanel" )
+ UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlSelectedPanel )
+ UI_MAP_ELEMENT( m_labelSelected, "SelectedPanelLabel" )
+ UI_END_MAP_CHILD_ELEMENTS()
+
+ UI_MAP_ELEMENT( m_controlTimer, "Timer" )
+
+ // 4J Stu - These aren't really used a AS3 controls, but adding here means that they get ticked by the scene
+ UI_MAP_ELEMENT( m_controlIggyCharacters, "IggyCharacters" )
+ UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlIggyCharacters )
+ UI_MAP_ELEMENT( m_characters[eCharacter_Current], "iggy_Character0" )
+
+ UI_MAP_ELEMENT( m_characters[eCharacter_Next1], "iggy_Character1" )
+ UI_MAP_ELEMENT( m_characters[eCharacter_Next2], "iggy_Character2" )
+ UI_MAP_ELEMENT( m_characters[eCharacter_Next3], "iggy_Character3" )
+ UI_MAP_ELEMENT( m_characters[eCharacter_Next4], "iggy_Character4" )
+
+ UI_MAP_ELEMENT( m_characters[eCharacter_Previous1], "iggy_Character5" )
+ UI_MAP_ELEMENT( m_characters[eCharacter_Previous2], "iggy_Character6" )
+ UI_MAP_ELEMENT( m_characters[eCharacter_Previous3], "iggy_Character7" )
+ UI_MAP_ELEMENT( m_characters[eCharacter_Previous4], "iggy_Character8" )
+ UI_END_MAP_CHILD_ELEMENTS()
+
+ UI_MAP_NAME( m_funcSetPlayerCharacterSelected, L"SetPlayerCharacterSelected" )
+ UI_MAP_NAME( m_funcSetCharacterLocked, L"SetCharacterLocked" )
+
+ UI_MAP_NAME( m_funcSetLeftLabel, L"SetLeftLabel" )
+ UI_MAP_NAME( m_funcSetCentreLabel, L"SetCenterLabel" )
+ UI_MAP_NAME( m_funcSetRightLabel, L"SetRightLabel" )
+ UI_END_MAP_ELEMENTS_AND_NAMES()
+
+ DLCPack *m_currentPack;
+ DWORD m_packIndex, m_skinIndex;
+ DWORD m_originalSkinId;
+ wstring m_currentSkinPath, m_selectedSkinPath, m_selectedCapePath;
+ vector<SKIN_BOX *> *m_vAdditionalSkinBoxes;
+
+ bool m_bSlidingSkins, m_bAnimatingMove;
+ ESkinSelectNavigation m_currentNavigation;
+
+ bool m_bNoSkinsToShow;
+ DWORD m_currentPackCount;
+ bool m_bIgnoreInput;
+ bool m_bSkinIndexChanged;
+ wstring m_leftLabel, m_centreLabel, m_rightLabel;
+
+ S32 m_iTouchXStart;
+ bool m_bTouchScrolled;
+public:
+ UIScene_SkinSelectMenu(int iPad, void *initData, UILayer *parentLayer);
+#ifdef __PSVITA__
+ virtual ~UIScene_SkinSelectMenu() { DeleteCriticalSection(&m_DLCInstallCS); }
+#endif
+
+ virtual void tick();
+
+ virtual void updateTooltips();
+ virtual void updateComponents();
+
+ virtual EUIScene getSceneType() { return eUIScene_SkinSelectMenu;}
+
+ virtual void handleAnimationEnd();
+
+
+protected:
+ // TODO: This should be pure virtual in this class
+ virtual wstring getMoviePath();
+
+public:
+ // INPUT
+ virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
+
+ virtual void customDraw(IggyCustomDrawCallbackRegion *region);
+
+private:
+ void handleSkinIndexChanged();
+ int getNextSkinIndex(DWORD sourceIndex);
+ int getPreviousSkinIndex(DWORD sourceIndex);
+
+ TEXTURE_NAME getTextureId(int skinIndex);
+
+ void handlePackIndexChanged();
+ void updatePackDisplay();
+ int getNextPackIndex(DWORD sourceIndex);
+ int getPreviousPackIndex(DWORD sourceIndex);
+
+ void setCharacterSelected(bool selected);
+ void setCharacterLocked(bool locked);
+
+ void setLeftLabel(const wstring &label);
+ void setCentreLabel(const wstring &label);
+ void setRightLabel(const wstring &label);
+
+ virtual void HandleDLCMountingComplete();
+ virtual void HandleDLCInstalled();
+#ifdef _XBOX_ONE
+ virtual void HandleDLCLicenseChange();
+#endif
+
+ void showNotOnlineDialog(int iPad);
+
+ static int UnlockSkinReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
+ static int RenableInput(LPVOID lpVoid, int, int);
+ void AddFavoriteSkin(int iPad,int iSkinID);
+
+ void InputActionOK(unsigned int iPad);
+#ifdef __PSVITA__
+ virtual void handleTouchInput(unsigned int iPad, S32 x, S32 y, int iId, bool bPressed, bool bRepeat, bool bReleased);
+#endif //__PSVITA__
+ virtual void handleReload();
+
+#ifdef __ORBIS__
+ bool m_bErrorDialogRunning;
+#endif
+
+#ifdef __PSVITA__
+ CRITICAL_SECTION m_DLCInstallCS; // to prevent a race condition between the install and the mounted callback
+#endif
+};