fix various missing methods, update StringTable implementation

This commit is contained in:
Tropical
2026-03-22 14:52:55 -05:00
parent 12aa117377
commit 23493c4681
6 changed files with 34 additions and 12 deletions
@@ -27,6 +27,8 @@
#include "GameRules/GameRuleManager.h"
#include "../Minecraft.Client/Rendering/Models/SkinBox.h"
#include "../Minecraft.Client/Utils/ArchiveFile.h"
#include "../Minecraft.World/Entities/MinecartHopper.h"
typedef struct _JoinFromInviteData {
std::uint32_t dwUserIndex; // dwUserIndex
@@ -44,7 +46,7 @@ class SignTileEntity;
class BrewingStandTileEntity;
class CommandBlockEntity;
class HopperTileEntity;
class MinecartHopper;
// class MinecartHopper;
class EntityHorse;
class BeaconTileEntity;
class LocalPlayer;
@@ -74,6 +74,8 @@ public:
std::uint32_t getLicenseMask() { return m_dwLicenseMask; }
std::wstring getName() { return m_packName; }
void UpdateLanguage();
#ifdef _XBOX_ONE
std::wstring getPurchaseOfferId() { return m_wsProductId; }
#else
@@ -442,14 +442,15 @@ void UIScene_JoinMenu::JoinGame(UIScene_JoinMenu* pClass) {
if (!ProfileManager.AllowedToPlayMultiplayer(
ProfileManager.GetPrimaryPad()))
noPrivileges = true;
dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(
ProfileManager.GetPrimaryPad());
isSignedInLive = ProfileManager.IsSignedInLive(
ProfileManager.GetPrimaryPad());
isSignedInLive =
ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad());
#ifdef __PSVITA__
if (CGameNetworkManager::usingAdhocMode() &&
SQRNetworkManager_AdHoc_Vita::GetAdhocStatus())
isSignedInLive = true;
if (CGameNetworkManager::usingAdhocMode() &&
SQRNetworkManager_AdHoc_Vita::GetAdhocStatus())
isSignedInLive = true;
#endif
}
}
@@ -102,6 +102,9 @@ public:
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed,
bool released, bool& handled);
// 4jcraft: made public for thumbnail thunk
static int AvatarReturned(LPVOID lpParam, PBYTE pbThumbnail,
DWORD dwThumbnailBytes);
private:
#ifdef _XBOX_ONE
@@ -110,8 +113,6 @@ private:
#else
static int SignInReturned(void* pParam, bool bContinue, int iPad);
#endif
static int AvatarReturned(LPVOID lpParam, PBYTE pbThumbnail,
DWORD dwThumbnailBytes);
void updateState();
void setControllerState(int iPad, EControllerStatus state);
+18 -4
View File
@@ -8,6 +8,17 @@ StringTable::StringTable(void) {}
StringTable::StringTable(std::uint8_t* pbData, unsigned int dataSize) {
src = byteArray(pbData, dataSize);
ProcessStringTableData();
}
void StringTable::ReloadStringTable() {
m_stringsMap.clear();
m_stringsVec.clear();
ProcessStringTableData();
}
void StringTable::ProcessStringTableData(void) {
ByteArrayInputStream bais(src);
DataInputStream dis(&bais);
@@ -28,8 +39,8 @@ StringTable::StringTable(std::uint8_t* pbData, unsigned int dataSize) {
app.getLocale(locales);
bool foundLang = false;
__int64 bytesToSkip = 0;
int selectedDataSize = 0;
int64_t bytesToSkip = 0;
int dataSize = 0;
//
for (AUTO_VAR(it_locales, locales.begin());
@@ -40,7 +51,7 @@ StringTable::StringTable(std::uint8_t* pbData, unsigned int dataSize) {
if (it->first.compare(*it_locales) == 0) {
app.DebugPrintf("StringTable:: Found language '%ls'.\n",
it_locales->c_str());
selectedDataSize = it->second;
dataSize = it->second;
foundLang = true;
break;
}
@@ -56,7 +67,7 @@ StringTable::StringTable(std::uint8_t* pbData, unsigned int dataSize) {
if (foundLang) {
dis.skip(bytesToSkip);
byteArray langData(selectedDataSize);
byteArray langData(dataSize);
dis.read(langData);
dis.close();
@@ -74,6 +85,9 @@ StringTable::StringTable(std::uint8_t* pbData, unsigned int dataSize) {
std::wstring langId = dis2.readUTF();
int totalStrings = dis2.readInt();
app.DebugPrintf("IsStatic=%d totalStrings = %d\n", isStatic ? 1 : 0,
totalStrings);
if (!isStatic) {
for (int i = 0; i < totalStrings; ++i) {
std::wstring stringId = dis2.readUTF();
+2
View File
@@ -59,6 +59,7 @@ public:
StringTable(void);
StringTable(std::uint8_t* pbData, unsigned int dataSize);
~StringTable(void);
void ReloadStringTable();
void getData(std::uint8_t** ppData, unsigned int* pSize);
@@ -69,4 +70,5 @@ public:
private:
// std::wstring getLangId(DWORD dwLanguage=0);
void ProcessStringTableData(void);
};