mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-05-18 15:52:55 +00:00
refactor: apply C++ best practices to platform interfaces
Extract shared types to PlatformTypes.h, add [[nodiscard]] to query methods, convert file-scope enums to enum class with compat aliases.
This commit is contained in:
parent
5b02454b4f
commit
940b214539
|
|
@ -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) {}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -1,18 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,30 +4,10 @@
|
|||
#include <string>
|
||||
|
||||
#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;
|
||||
|
|
|
|||
|
|
@ -1,36 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "PlatformTypes.h"
|
||||
#include "IPlatformInput.h"
|
||||
#include "IPlatformNetwork.h"
|
||||
#include "IPlatformProfile.h"
|
||||
|
|
|
|||
92
minecraft/platform/PlatformTypes.h
Normal file
92
minecraft/platform/PlatformTypes.h
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
|
||||
// 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;
|
||||
Loading…
Reference in a new issue