#pragma once #include #include "IUIScene_StartGame.h" class UIScene_LoadMenu : public IUIScene_StartGame { private: enum EControls { eControl_GameMode, eControl_Difficulty, eControl_MoreOptions, eControl_LoadWorld, eControl_TexturePackList, eControl_OnlineGame, }; static int m_iDifficultyTitleSettingA[4]; UIControl m_controlMainPanel; UIControl_Label m_labelGameName, m_labelSeed, m_labelCreatedMode; UIControl_Button m_buttonGamemode, m_buttonMoreOptions, m_buttonLoadWorld; UIControl_Slider m_sliderDifficulty; UIControl_BitmapIcon m_bitmapIcon; UIControl_CheckBox m_checkboxOnline; UI_BEGIN_MAP_ELEMENTS_AND_NAMES(IUIScene_StartGame) UI_MAP_ELEMENT(m_controlMainPanel, "MainPanel") UI_BEGIN_MAP_CHILD_ELEMENTS(m_controlMainPanel) UI_MAP_ELEMENT(m_labelGameName, "GameName") UI_MAP_ELEMENT(m_labelCreatedMode, "CreatedMode") UI_MAP_ELEMENT(m_labelSeed, "Seed") UI_MAP_ELEMENT(m_texturePackList, "TexturePackSelector") UI_MAP_ELEMENT(m_buttonGamemode, "GameModeToggle") UI_MAP_ELEMENT(m_checkboxOnline, "CheckboxOnline") UI_MAP_ELEMENT(m_buttonMoreOptions, "MoreOptions") UI_MAP_ELEMENT(m_buttonLoadWorld, "LoadSettings") UI_MAP_ELEMENT(m_sliderDifficulty, "Difficulty") UI_MAP_ELEMENT(m_bitmapIcon, "LevelIcon") UI_END_MAP_CHILD_ELEMENTS() UI_END_MAP_ELEMENTS_AND_NAMES() LevelGenerationOptions* m_levelGen; DLCPack* m_pDLCPack; int m_iSaveGameInfoIndex; int m_CurrentDifficulty; bool m_bGameModeCreative; int m_iGameModeId; bool m_bHasBeenInCreative; bool m_bIsSaveOwner; bool m_bRetrievingSaveThumbnail; bool m_bSaveThumbnailReady; bool m_bMultiplayerAllowed; bool m_bShowTimer; bool m_bAvailableTexturePacksChecked; bool m_bRequestQuadrantSignin; bool m_bIsCorrupt; bool m_bThumbnailGetFailed; int64_t m_seed; #ifdef __PS3__ std::vector* m_pvProductInfo; #endif // int *m_iConfigA; // track the texture packs that we don't have installed std::uint8_t* m_pbThumbnailData; unsigned int m_uiThumbnailSize; std::wstring m_thumbnailName; bool m_bRebuildTouchBoxes; public: UIScene_LoadMenu(int iPad, void* initData, UILayer* parentLayer); virtual void updateTooltips(); virtual void updateComponents(); virtual EUIScene getSceneType() { return eUIScene_LoadMenu; } virtual void tick(); virtual UIControl* GetMainPanel(); virtual void handleTouchBoxRebuild(); 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 handleTimerComplete(int id); protected: void handlePress(F64 controlId, F64 childId); void handleSliderMove(F64 sliderId, F64 currentValue); virtual void handleGainFocus(bool navBack); private: void StartSharedLaunchFlow(); virtual void checkStateAndStartGame(); void LaunchGame(void); #ifdef _DURANGO static void checkPrivilegeCallback(void* lpParam, bool hasPrivilege, int iPad); #endif static int ConfirmLoadReturned(void* pParam, int iPad, C4JStorage::EMessageResult result); static void StartGameFromSave(UIScene_LoadMenu* pClass, int localUsersMask); static int LoadSaveDataReturned(void* pParam, bool bIsCorrupt, bool bIsOwner); static int TrophyDialogReturned(void* pParam, int iPad, C4JStorage::EMessageResult result); static int LoadDataComplete(void* pParam); static int CheckResetNetherReturned(void* pParam, int iPad, C4JStorage::EMessageResult result); static int DeleteSaveDialogReturned(void* pParam, int iPad, C4JStorage::EMessageResult result); static int DeleteSaveDataReturned(void* pParam, bool bSuccess); static int MustSignInReturnedPSN(void* pParam, int iPad, C4JStorage::EMessageResult result); #ifdef __ORBIS__ // static int PSPlusReturned(void *pParam,int // iPad,C4JStorage::EMessageResult result); static int ContinueOffline(void* pParam, int iPad, C4JStorage::EMessageResult result); #endif public: // 4jcraft: made public for the thunk system we have for thumbnail loading, probably a FIXME for // when this gets cleaned up static int LoadSaveDataThumbnailReturned(void* lpParam, std::uint8_t* pbThumbnail, unsigned int thumbnailBytes); static int StartGame_SignInReturned(void* pParam, bool, int); };