diff --git a/minecraft/4J.Profile/4J_Profile.h b/minecraft/4J.Profile/4J_Profile.h index 21bcf963f..c8f00228a 100644 --- a/minecraft/4J.Profile/4J_Profile.h +++ b/minecraft/4J.Profile/4J_Profile.h @@ -71,7 +71,7 @@ public: void Tick() {} void SetTrialTextStringTable(CXuiStringTable*, int, int) {} - void SetTrialAwardText(eAwardType, int, int) {} + void SetTrialAwardText(EAwardType, int, int) {} void StartTrialGame() {} unsigned int RequestSignInUI(bool, bool, bool, bool, bool, int (*)(void*, const bool, const int), @@ -100,11 +100,11 @@ public: void WriteToProfile(int, bool = false, bool = false) {} void ForceQueuedProfileWrites(int = XUSER_INDEX_ANY) {} void ResetProfileProcessState() {} - void RegisterAward(int, int, eAwardType, bool = false, + void RegisterAward(int, int, EAwardType, bool = false, CXuiStringTable* = nullptr, int = -1, int = -1, int = -1, char* = nullptr, unsigned int = 0L) {} int GetAwardId(int) { return 0; } - eAwardType GetAwardType(int) { return eAwardType_Achievement; } + EAwardType GetAwardType(int) { return eAwardType_Achievement; } bool CanBeAwarded(int, int) { return false; } void Award(int, int, bool = false) {} bool IsAwardsFlagSet(int, int) { return false; } @@ -113,7 +113,7 @@ public: void SetRichPresenceContextValue(int, int, int) {} void SetCurrentGameActivity(int, int, bool = false) {} void DisplayFullVersionPurchase(bool, int, int = -1) {} - void SetUpsellCallback(void (*)(void*, eUpsellType, eUpsellResponse, int), + void SetUpsellCallback(void (*)(void*, EUpsellType, EUpsellResponse, int), void*) {} void SetDebugFullOverride(bool) {} diff --git a/minecraft/Minecraft.Client/Common/Consoles_App.cpp b/minecraft/Minecraft.Client/Common/Consoles_App.cpp index a31aa13e0..d8f475bda 100644 --- a/minecraft/Minecraft.Client/Common/Consoles_App.cpp +++ b/minecraft/Minecraft.Client/Common/Consoles_App.cpp @@ -4128,8 +4128,8 @@ void CMinecraftApp::NotificationsCallback(void* pParam, pClass->m_vNotifications.push_back(pNotification); } -void CMinecraftApp::UpsellReturnedCallback(void* pParam, eUpsellType type, - eUpsellResponse result, +void CMinecraftApp::UpsellReturnedCallback(void* pParam, EUpsellType type, + EUpsellResponse result, int iUserData) { // 4jcraft: nuked } diff --git a/minecraft/Minecraft.Client/Common/Consoles_App.h b/minecraft/Minecraft.Client/Common/Consoles_App.h index 106056cdb..becc08968 100644 --- a/minecraft/Minecraft.Client/Common/Consoles_App.h +++ b/minecraft/Minecraft.Client/Common/Consoles_App.h @@ -363,8 +363,8 @@ public: bool GetLiveLinkRequired() { return m_bLiveLinkRequired; } void SetLiveLinkRequired(bool required) { m_bLiveLinkRequired = required; } - static void UpsellReturnedCallback(void* pParam, eUpsellType type, - eUpsellResponse result, int iUserData); + static void UpsellReturnedCallback(void* pParam, EUpsellType type, + EUpsellResponse result, int iUserData); #if defined(_DEBUG_MENUS_ENABLED) bool DebugSettingsOn() { return m_bDebugOptions; } diff --git a/minecraft/Minecraft.Client/Source Files/Extrax64Stubs.cpp b/minecraft/Minecraft.Client/Source Files/Extrax64Stubs.cpp index 1be1fcaed..201938809 100644 --- a/minecraft/Minecraft.Client/Source Files/Extrax64Stubs.cpp +++ b/minecraft/Minecraft.Client/Source Files/Extrax64Stubs.cpp @@ -370,7 +370,7 @@ void C_4JProfile::Initialise(std::uint32_t dwTitleID, std::uint32_t dwOfferID, } void C_4JProfile::SetTrialTextStringTable(CXuiStringTable* pStringTable, int iAccept, int iReject) {} -void C_4JProfile::SetTrialAwardText(eAwardType AwardType, int iTitle, +void C_4JProfile::SetTrialAwardText(EAwardType AwardType, int iTitle, int iText) {} int C_4JProfile::GetLockedProfile() { return 0; } void C_4JProfile::SetLockedProfile(int iProf) {} @@ -476,12 +476,12 @@ void* C_4JProfile::GetGameDefinedProfileData(int iQuadrant) { void C_4JProfile::ResetProfileProcessState() {} void C_4JProfile::Tick(void) {} void C_4JProfile::RegisterAward(int iAwardNumber, int iGamerconfigID, - eAwardType eType, bool bLeaderboardAffected, + EAwardType eType, bool bLeaderboardAffected, CXuiStringTable* pStringTable, int iTitleStr, int iTextStr, int iAcceptStr, char* pszThemeName, unsigned int ulThemeSize) {} int C_4JProfile::GetAwardId(int iAwardNumber) { return 0; } -eAwardType C_4JProfile::GetAwardType(int iAwardNumber) { +EAwardType C_4JProfile::GetAwardType(int iAwardNumber) { return eAwardType_Achievement; } bool C_4JProfile::CanBeAwarded(int iQuadrant, int iAwardNumber) { @@ -498,8 +498,8 @@ void C_4JProfile::SetCurrentGameActivity(int iPad, int iNewPresence, void C_4JProfile::DisplayFullVersionPurchase(bool bRequired, int iQuadrant, int iUpsellParam) {} void C_4JProfile::SetUpsellCallback(void (*Func)(void* lpParam, - eUpsellType type, - eUpsellResponse response, + EUpsellType type, + EUpsellResponse response, int iUserData), void* lpParam) {} void C_4JProfile::SetDebugFullOverride(bool bVal) { diff --git a/minecraft/platform/IPlatformInput.h b/minecraft/platform/IPlatformInput.h index c94d978b6..3e81397ae 100644 --- a/minecraft/platform/IPlatformInput.h +++ b/minecraft/platform/IPlatformInput.h @@ -1,18 +1,6 @@ #pragma once -#include - -enum EKeyboardResult { - EKeyboard_Pending, - EKeyboard_Cancelled, - EKeyboard_ResultAccept, - EKeyboard_ResultDecline, -}; - -typedef struct _STRING_VERIFY_RESPONSE { - std::uint16_t wNumStrings; - int* pStringResult; -} STRING_VERIFY_RESPONSE; +#include "PlatformTypes.h" class IPlatformInput { public: @@ -39,18 +27,21 @@ public: // Joypad mapping virtual void SetGameJoypadMaps(unsigned char ucMap, unsigned char ucAction, unsigned int uiActionVal) = 0; - virtual unsigned int GetGameJoypadMaps(unsigned char ucMap, - unsigned char ucAction) = 0; + [[nodiscard]] virtual unsigned int GetGameJoypadMaps( + unsigned char ucMap, unsigned char ucAction) = 0; virtual void SetJoypadMapVal(int iPad, unsigned char ucMap) = 0; - virtual unsigned char GetJoypadMapVal(int iPad) = 0; + [[nodiscard]] virtual unsigned char GetJoypadMapVal(int iPad) = 0; virtual void SetJoypadSensitivity(int iPad, float fSensitivity) = 0; // Input queries - virtual unsigned int GetValue(int iPad, unsigned char ucAction, - bool bRepeat = false) = 0; - virtual bool ButtonPressed(int iPad, unsigned char ucAction = 255) = 0; - virtual bool ButtonReleased(int iPad, unsigned char ucAction) = 0; - virtual bool ButtonDown(int iPad, unsigned char ucAction = 255) = 0; + [[nodiscard]] virtual unsigned int GetValue(int iPad, unsigned char ucAction, + bool bRepeat = false) = 0; + [[nodiscard]] virtual bool ButtonPressed(int iPad, + unsigned char ucAction = 255) = 0; + [[nodiscard]] virtual bool ButtonReleased(int iPad, + unsigned char ucAction) = 0; + [[nodiscard]] virtual bool ButtonDown(int iPad, + unsigned char ucAction = 255) = 0; // Axis remapping virtual void SetJoypadStickAxisMap(int iPad, unsigned int uiFrom, @@ -61,28 +52,28 @@ public: float fRepeatRateSecs) = 0; virtual void SetDebugSequence(const char* chSequenceA, int (*Func)(void*), void* lpParam) = 0; - virtual float GetIdleSeconds(int iPad) = 0; - virtual bool IsPadConnected(int iPad) = 0; + [[nodiscard]] virtual float GetIdleSeconds(int iPad) = 0; + [[nodiscard]] virtual bool IsPadConnected(int iPad) = 0; // Analog sticks and triggers (remapped for Southpaw etc.) - virtual float GetJoypadStick_LX(int iPad, - bool bCheckMenuDisplay = true) = 0; - virtual float GetJoypadStick_LY(int iPad, - bool bCheckMenuDisplay = true) = 0; - virtual float GetJoypadStick_RX(int iPad, - bool bCheckMenuDisplay = true) = 0; - virtual float GetJoypadStick_RY(int iPad, - bool bCheckMenuDisplay = true) = 0; - virtual unsigned char GetJoypadLTrigger(int iPad, - bool bCheckMenuDisplay = true) = 0; - virtual unsigned char GetJoypadRTrigger(int iPad, - bool bCheckMenuDisplay = true) = 0; + [[nodiscard]] virtual float GetJoypadStick_LX( + int iPad, bool bCheckMenuDisplay = true) = 0; + [[nodiscard]] virtual float GetJoypadStick_LY( + int iPad, bool bCheckMenuDisplay = true) = 0; + [[nodiscard]] virtual float GetJoypadStick_RX( + int iPad, bool bCheckMenuDisplay = true) = 0; + [[nodiscard]] virtual float GetJoypadStick_RY( + int iPad, bool bCheckMenuDisplay = true) = 0; + [[nodiscard]] virtual unsigned char GetJoypadLTrigger( + int iPad, bool bCheckMenuDisplay = true) = 0; + [[nodiscard]] virtual unsigned char GetJoypadRTrigger( + int iPad, bool bCheckMenuDisplay = true) = 0; // Menu and misc virtual void SetMenuDisplayed(int iPad, bool bVal) = 0; - virtual bool GetMenuDisplayed(int iPad) = 0; - virtual int GetHotbarSlotPressed(int iPad) = 0; - virtual int GetScrollDelta() = 0; + [[nodiscard]] virtual bool GetMenuDisplayed(int iPad) = 0; + [[nodiscard]] virtual int GetHotbarSlotPressed(int iPad) = 0; + [[nodiscard]] virtual int GetScrollDelta() = 0; // Keyboard virtual EKeyboardResult RequestKeyboard(const wchar_t* Title, @@ -91,7 +82,7 @@ public: int (*Func)(void*, const bool), void* lpParam, EKeyboardMode eMode) = 0; - virtual const char* GetText() = 0; + [[nodiscard]] virtual const char* GetText() = 0; // String verification (TCR 92) virtual bool VerifyStrings(wchar_t** pwStringA, int iStringC, @@ -102,10 +93,10 @@ public: virtual void CancelAllVerifyInProgress() = 0; // Mouse - virtual int GetMouseX() = 0; - virtual int GetMouseY() = 0; + [[nodiscard]] virtual int GetMouseX() = 0; + [[nodiscard]] virtual int GetMouseY() = 0; // Primary pad (which controller is player 1) - virtual int GetPrimaryPad() = 0; + [[nodiscard]] virtual int GetPrimaryPad() = 0; virtual void SetPrimaryPad(int iPad) = 0; }; diff --git a/minecraft/platform/IPlatformProfile.h b/minecraft/platform/IPlatformProfile.h index 501c40c97..1141dcebf 100644 --- a/minecraft/platform/IPlatformProfile.h +++ b/minecraft/platform/IPlatformProfile.h @@ -4,30 +4,10 @@ #include #include "../4J.Common/4J_Compat.h" +#include "PlatformTypes.h" class CXuiStringTable; -enum eAwardType { - eAwardType_Achievement = 0, - eAwardType_GamerPic, - eAwardType_Theme, - eAwardType_AvatarItem, -}; - -enum eUpsellType { - eUpsellType_Custom = 0, - eUpsellType_Achievement, - eUpsellType_GamerPic, - eUpsellType_Theme, - eUpsellType_AvatarItem, -}; - -enum eUpsellResponse { - eUpsellResponse_Declined, - eUpsellResponse_Accepted_NoPurchase, - eUpsellResponse_Accepted_Purchase, -}; - class IPlatformProfile { public: struct PROFILESETTINGS { @@ -50,11 +30,11 @@ public: virtual void Tick() = 0; // Sign-in - virtual int GetLockedProfile() = 0; + [[nodiscard]] virtual int GetLockedProfile() = 0; virtual void SetLockedProfile(int iProf) = 0; - virtual bool IsSignedIn(int iQuadrant) = 0; - virtual bool IsSignedInLive(int iProf) = 0; - virtual bool IsGuest(int iQuadrant) = 0; + [[nodiscard]] virtual bool IsSignedIn(int iQuadrant) = 0; + [[nodiscard]] virtual bool IsSignedInLive(int iProf) = 0; + [[nodiscard]] virtual bool IsGuest(int iQuadrant) = 0; virtual unsigned int RequestSignInUI( bool bFromInvite, bool bLocalGame, bool bNoGuestsAllowed, bool bMultiplayerSignIn, bool bAddUser, @@ -67,28 +47,29 @@ public: int (*Func)(void*, const bool, const int iPad), void* lpParam, int iQuadrant = XUSER_INDEX_ANY) = 0; virtual void SetPrimaryPlayerChanged(bool bVal) = 0; - virtual bool QuerySigninStatus() = 0; + [[nodiscard]] virtual bool QuerySigninStatus() = 0; virtual void GetXUID(int iPad, PlayerUID* pXuid, bool bOnlineXuid) = 0; - virtual bool AreXUIDSEqual(PlayerUID xuid1, PlayerUID xuid2) = 0; - virtual bool XUIDIsGuest(PlayerUID xuid) = 0; - virtual bool AllowedToPlayMultiplayer(int iProf) = 0; - virtual bool GetChatAndContentRestrictions(int iPad, bool* pbChatRestricted, - bool* pbContentRestricted, - int* piAge) = 0; + [[nodiscard]] virtual bool AreXUIDSEqual(PlayerUID xuid1, + PlayerUID xuid2) = 0; + [[nodiscard]] virtual bool XUIDIsGuest(PlayerUID xuid) = 0; + [[nodiscard]] virtual bool AllowedToPlayMultiplayer(int iProf) = 0; + [[nodiscard]] virtual bool GetChatAndContentRestrictions( + int iPad, bool* pbChatRestricted, bool* pbContentRestricted, + int* piAge) = 0; // System - virtual int GetPrimaryPad() = 0; + [[nodiscard]] virtual int GetPrimaryPad() = 0; virtual void SetPrimaryPad(int iPad) = 0; - virtual char* GetGamertag(int iPad) = 0; - virtual std::wstring GetDisplayName(int iPad) = 0; + [[nodiscard]] virtual char* GetGamertag(int iPad) = 0; + [[nodiscard]] virtual std::wstring GetDisplayName(int iPad) = 0; virtual void SetSignInChangeCallback( void (*Func)(void*, bool, unsigned int), void* lpParam) = 0; virtual void SetNotificationsCallback( void (*Func)(void*, std::uint32_t, unsigned int), void* lpParam) = 0; - virtual bool RegionIsNorthAmerica() = 0; - virtual bool LocaleIsUSorCanada() = 0; - virtual int GetLiveConnectionStatus() = 0; - virtual bool IsSystemUIDisplayed() = 0; + [[nodiscard]] virtual bool RegionIsNorthAmerica() = 0; + [[nodiscard]] virtual bool LocaleIsUSorCanada() = 0; + [[nodiscard]] virtual int GetLiveConnectionStatus() = 0; + [[nodiscard]] virtual bool IsSystemUIDisplayed() = 0; virtual void SetProfileReadErrorCallback(void (*Func)(void*), void* lpParam) = 0; @@ -99,30 +80,31 @@ public: virtual int SetOldProfileVersionCallback( int (*Func)(void*, unsigned char*, const unsigned short, const int), void* lpParam) = 0; - virtual PROFILESETTINGS* GetDashboardProfileSettings(int iPad) = 0; + [[nodiscard]] virtual PROFILESETTINGS* GetDashboardProfileSettings( + int iPad) = 0; virtual void WriteToProfile(int iQuadrant, bool bGameDefinedDataChanged = false, bool bOverrideTimeLimit = false) = 0; virtual void ForceQueuedProfileWrites(int iPad = XUSER_INDEX_ANY) = 0; - virtual void* GetGameDefinedProfileData(int iQuadrant) = 0; + [[nodiscard]] virtual void* GetGameDefinedProfileData(int iQuadrant) = 0; virtual void ResetProfileProcessState() = 0; // Trial virtual void StartTrialGame() = 0; virtual void SetTrialTextStringTable(CXuiStringTable* pStringTable, int iAccept, int iReject) = 0; - virtual void SetTrialAwardText(eAwardType AwardType, int iTitle, + virtual void SetTrialAwardText(EAwardType AwardType, int iTitle, int iText) = 0; // Content virtual void AllowedPlayerCreatedContent(int iPad, bool thisQuadrantOnly, bool* allAllowed, bool* friendsAllowed) = 0; - virtual bool CanViewPlayerCreatedContent(int iPad, bool thisQuadrantOnly, - PlayerUID* pXuids, - unsigned int xuidCount) = 0; + [[nodiscard]] virtual bool CanViewPlayerCreatedContent( + int iPad, bool thisQuadrantOnly, PlayerUID* pXuids, + unsigned int xuidCount) = 0; virtual void ShowProfileCard(int iPad, PlayerUID targetUid) = 0; - virtual bool GetProfileAvatar( + [[nodiscard]] virtual bool GetProfileAvatar( int iPad, int (*Func)(void* lpParam, std::uint8_t* thumbnailData, unsigned int thumbnailBytes), @@ -131,19 +113,19 @@ public: // Achievements virtual void RegisterAward(int iAwardNumber, int iGamerconfigID, - eAwardType eType, - bool bLeaderboardAffected = false, + EAwardType eType, bool bLeaderboardAffected = false, CXuiStringTable* pStringTable = nullptr, int iTitleStr = -1, int iTextStr = -1, int iAcceptStr = -1, char* pszThemeName = nullptr, unsigned int uiThemeSize = 0L) = 0; - virtual int GetAwardId(int iAwardNumber) = 0; - virtual eAwardType GetAwardType(int iAwardNumber) = 0; - virtual bool CanBeAwarded(int iQuadrant, int iAwardNumber) = 0; + [[nodiscard]] virtual int GetAwardId(int iAwardNumber) = 0; + [[nodiscard]] virtual EAwardType GetAwardType(int iAwardNumber) = 0; + [[nodiscard]] virtual bool CanBeAwarded(int iQuadrant, + int iAwardNumber) = 0; virtual void Award(int iQuadrant, int iAwardNumber, bool bForce = false) = 0; - virtual bool IsAwardsFlagSet(int iQuadrant, int iAward) = 0; + [[nodiscard]] virtual bool IsAwardsFlagSet(int iQuadrant, int iAward) = 0; // Rich presence virtual void RichPresenceInit(int iPresenceCount, int iContextCount) = 0; @@ -156,10 +138,10 @@ public: // Purchase virtual void DisplayFullVersionPurchase(bool bRequired, int iQuadrant, int iUpsellParam = -1) = 0; - virtual void SetUpsellCallback(void (*Func)(void* lpParam, eUpsellType type, - eUpsellResponse response, - int iUserData), - void* lpParam) = 0; + virtual void SetUpsellCallback( + void (*Func)(void* lpParam, EUpsellType type, EUpsellResponse response, + int iUserData), + void* lpParam) = 0; // Debug virtual void SetDebugFullOverride(bool bVal) = 0; diff --git a/minecraft/platform/IPlatformRender.h b/minecraft/platform/IPlatformRender.h index da7bd5810..6cd786e6d 100644 --- a/minecraft/platform/IPlatformRender.h +++ b/minecraft/platform/IPlatformRender.h @@ -1,36 +1,8 @@ #pragma once #include -#include -class ImageFileBuffer { -public: - enum EImageType { e_typePNG, e_typeJPG }; - EImageType m_type; - void* m_pBuffer; - int m_bufferSize; - int GetType() { return m_type; } - void* GetBufferPointer() { return m_pBuffer; } - int GetBufferSize() { return m_bufferSize; } - void Release() { - std::free(m_pBuffer); - m_pBuffer = nullptr; - } - bool Allocated() { return m_pBuffer != nullptr; } -}; - -struct D3DXIMAGE_INFO { - int Width; - int Height; -}; - -struct XSOCIAL_PREVIEWIMAGE { - std::uint8_t* pBytes; - std::uint32_t Pitch; - std::uint32_t Width; - std::uint32_t Height; -}; -using PXSOCIAL_PREVIEWIMAGE = XSOCIAL_PREVIEWIMAGE*; +#include "PlatformTypes.h" class IPlatformRender { public: @@ -88,16 +60,16 @@ public: virtual void SetClearColour(const float colourRGBA[4]) = 0; virtual void Shutdown() = 0; virtual void Suspend() = 0; - virtual bool Suspended() = 0; + [[nodiscard]] virtual bool Suspended() = 0; virtual void Resume() = 0; // Window virtual void SetWindowSize(int w, int h) = 0; virtual void SetFullscreen(bool fs) = 0; - virtual bool IsWidescreen() = 0; - virtual bool IsHiDef() = 0; + [[nodiscard]] virtual bool IsWidescreen() = 0; + [[nodiscard]] virtual bool IsHiDef() = 0; virtual void GetFramebufferSize(int& width, int& height) = 0; - virtual bool ShouldClose() = 0; + [[nodiscard]] virtual bool ShouldClose() = 0; virtual void Close() = 0; virtual void UpdateGamma(unsigned short usGamma) = 0; @@ -114,7 +86,7 @@ public: virtual void MatrixPop() = 0; virtual void MatrixPush() = 0; virtual void MatrixMult(float* mat) = 0; - virtual const float* MatrixGet(int type) = 0; + [[nodiscard]] virtual const float* MatrixGet(int type) = 0; virtual void Set_matrixDirty() = 0; // Draw calls @@ -124,24 +96,24 @@ public: // Command buffers virtual void CBuffLockStaticCreations() = 0; - virtual int CBuffCreate(int count) = 0; + [[nodiscard]] virtual int CBuffCreate(int count) = 0; virtual void CBuffDelete(int first, int count) = 0; virtual void CBuffStart(int index, bool full = false) = 0; virtual void CBuffClear(int index) = 0; - virtual int CBuffSize(int index) = 0; + [[nodiscard]] virtual int CBuffSize(int index) = 0; virtual void CBuffEnd() = 0; - virtual bool CBuffCall(int index, bool full = true) = 0; + [[nodiscard]] virtual bool CBuffCall(int index, bool full = true) = 0; virtual void CBuffTick() = 0; virtual void CBuffDeferredModeStart() = 0; virtual void CBuffDeferredModeEnd() = 0; // Textures - virtual int TextureCreate() = 0; + [[nodiscard]] virtual int TextureCreate() = 0; virtual void TextureFree(int idx) = 0; virtual void TextureBind(int idx) = 0; virtual void TextureBindVertex(int idx, bool scaleLight = false) = 0; virtual void TextureSetTextureLevels(int levels) = 0; - virtual int TextureGetTextureLevels() = 0; + [[nodiscard]] virtual int TextureGetTextureLevels() = 0; virtual void TextureData(int width, int height, void* data, int level, eTextureFormat format = TEXTURE_FORMAT_RxGyBzAw) = 0; virtual void TextureDataUpdate(int xoffset, int yoffset, int width, @@ -149,21 +121,24 @@ public: virtual void TextureSetParam(int param, int value) = 0; virtual void TextureDynamicUpdateStart() = 0; virtual void TextureDynamicUpdateEnd() = 0; - virtual int LoadTextureData(const char* szFilename, - D3DXIMAGE_INFO* pSrcInfo, - int** ppDataOut) = 0; - virtual int LoadTextureData(std::uint8_t* pbData, std::uint32_t byteCount, - D3DXIMAGE_INFO* pSrcInfo, - int** ppDataOut) = 0; - virtual int SaveTextureData(const char* szFilename, - D3DXIMAGE_INFO* pSrcInfo, - int* ppDataOut) = 0; - virtual int SaveTextureDataToMemory(void* pOutput, int outputCapacity, - int* outputLength, int width, - int height, int* ppDataIn) = 0; + [[nodiscard]] virtual int LoadTextureData(const char* szFilename, + D3DXIMAGE_INFO* pSrcInfo, + int** ppDataOut) = 0; + [[nodiscard]] virtual int LoadTextureData(std::uint8_t* pbData, + std::uint32_t byteCount, + D3DXIMAGE_INFO* pSrcInfo, + int** ppDataOut) = 0; + [[nodiscard]] virtual int SaveTextureData(const char* szFilename, + D3DXIMAGE_INFO* pSrcInfo, + int* ppDataOut) = 0; + [[nodiscard]] virtual int SaveTextureDataToMemory(void* pOutput, + int outputCapacity, + int* outputLength, + int width, int height, + int* ppDataIn) = 0; virtual void ReadPixels(int x, int y, int w, int h, void* buf) = 0; virtual void TextureGetStats() = 0; - virtual void* TextureGetTexture(int idx) = 0; + [[nodiscard]] virtual void* TextureGetTexture(int idx) = 0; // Render state virtual void StateSetColour(float r, float g, float b, float a) = 0; diff --git a/minecraft/platform/Platform.h b/minecraft/platform/Platform.h index 14d7b877e..47a2a51b8 100644 --- a/minecraft/platform/Platform.h +++ b/minecraft/platform/Platform.h @@ -1,5 +1,6 @@ #pragma once +#include "PlatformTypes.h" #include "IPlatformInput.h" #include "IPlatformNetwork.h" #include "IPlatformProfile.h" diff --git a/minecraft/platform/PlatformTypes.h b/minecraft/platform/PlatformTypes.h new file mode 100644 index 000000000..3849107c2 --- /dev/null +++ b/minecraft/platform/PlatformTypes.h @@ -0,0 +1,92 @@ +#pragma once + +#include +#include + +// Shared value types used by platform interfaces. These are NOT interfaces +// themselves — they are data carriers that cross the platform boundary. + +struct ImageFileBuffer { + enum EImageType { e_typePNG, e_typeJPG }; + EImageType m_type; + void* m_pBuffer = nullptr; + int m_bufferSize = 0; + + [[nodiscard]] int GetType() const { return m_type; } + [[nodiscard]] void* GetBufferPointer() const { return m_pBuffer; } + [[nodiscard]] int GetBufferSize() const { return m_bufferSize; } + [[nodiscard]] bool Allocated() const { return m_pBuffer != nullptr; } + void Release() { + std::free(m_pBuffer); + m_pBuffer = nullptr; + } +}; + +struct D3DXIMAGE_INFO { + int Width; + int Height; +}; + +struct XSOCIAL_PREVIEWIMAGE { + std::uint8_t* pBytes; + std::uint32_t Pitch; + std::uint32_t Width; + std::uint32_t Height; +}; +using PXSOCIAL_PREVIEWIMAGE = XSOCIAL_PREVIEWIMAGE*; + +struct STRING_VERIFY_RESPONSE { + std::uint16_t wNumStrings; + int* pStringResult; +}; + +enum class EKeyboardResult { + Pending, + Cancelled, + ResultAccept, + ResultDecline, +}; + +// Profile-related enums at file scope. +enum class EAwardType { + Achievement = 0, + GamerPic, + Theme, + AvatarItem, +}; + +enum class EUpsellType { + Custom = 0, + Achievement, + GamerPic, + Theme, + AvatarItem, +}; + +enum class EUpsellResponse { + Declined, + Accepted_NoPurchase, + Accepted_Purchase, +}; + +// Backwards-compatible aliases for call sites still using the old +// unscoped names. Remove these as call sites are migrated. +inline constexpr auto EKeyboard_Pending = EKeyboardResult::Pending; +inline constexpr auto EKeyboard_Cancelled = EKeyboardResult::Cancelled; +inline constexpr auto EKeyboard_ResultAccept = EKeyboardResult::ResultAccept; +inline constexpr auto EKeyboard_ResultDecline = EKeyboardResult::ResultDecline; + +inline constexpr auto eAwardType_Achievement = EAwardType::Achievement; +inline constexpr auto eAwardType_GamerPic = EAwardType::GamerPic; +inline constexpr auto eAwardType_Theme = EAwardType::Theme; +inline constexpr auto eAwardType_AvatarItem = EAwardType::AvatarItem; + +inline constexpr auto eUpsellType_Custom = EUpsellType::Custom; +inline constexpr auto eUpsellType_Achievement = EUpsellType::Achievement; +inline constexpr auto eUpsellType_GamerPic = EUpsellType::GamerPic; +inline constexpr auto eUpsellType_Theme = EUpsellType::Theme; +inline constexpr auto eUpsellType_AvatarItem = EUpsellType::AvatarItem; + +inline constexpr auto eUpsellResponse_Declined = EUpsellResponse::Declined; +inline constexpr auto eUpsellResponse_Accepted_NoPurchase = EUpsellResponse::Accepted_NoPurchase; +inline constexpr auto eUpsellResponse_Accepted_Purchase = EUpsellResponse::Accepted_Purchase;