Files
4JLibs/4J_Profile/Windows64/PRO_Sys.cpp
T
2026-09-10 22:05:36 -04:00

120 lines
2.4 KiB
C++

#include "PRO_Sys.h"
#include "4J_Input.h"
bool s_bProfileIsFullVersion = true;
char fakeGamerTag[16] = "PlayerName";
wchar_t fakeGamerTagW[16] = L"PlayerName";
bool CSys::IsSignedIn(int iQuadrant)
{
return InputManager.IsPadConnected(iQuadrant); //str1k3r - since we dont sign in like consoles just check if the pad is connected
}
bool CSys::IsSignedInLive(int iProf)
{
return InputManager.IsPadConnected(iProf);
}
//str1k3r - set every pad that isnt pad 0 as a guest
bool CSys::IsGuest(int iQuadrant)
{
if(iQuadrant == 0)
{
return false;
}
return true;
}
void CSys::LoadGamertag()
{
wchar_t exeDir[MAX_PATH] = {};
GetModuleFileNameW(NULL, exeDir, MAX_PATH);
wchar_t *lastSlash = wcsrchr(exeDir, '\\');
if (lastSlash) *(lastSlash + 1) = '\0';
wchar_t filePath[MAX_PATH] = {};
if(wcscpy_s(filePath, _countof(filePath), exeDir) != 0 || wcsncat_s(filePath, _countof(filePath), L"username.txt", _TRUNCATE) != 0)
{
return;
}
FILE *file = NULL;
if (_wfopen_s(&file, filePath, L"r") == 0 && file)
{
wchar_t buffer[128] = {};
if(fgetws(buffer, _countof(buffer), file))
{
size_t len = wcslen(buffer);
while (len > 0 && (buffer[len-1] == '\n' || buffer[len-1] == '\r' || buffer[len-1] == ' ')) buffer[--len] = '\0';
if (len > 0)
{
wcscpy_s(fakeGamerTagW, _countof(fakeGamerTagW), buffer);
WideCharToMultiByte(CP_UTF8, 0, fakeGamerTagW, -1, fakeGamerTag, sizeof(fakeGamerTag), nullptr, nullptr);
}
}
fclose(file);
}
}
void CSys::SetFakeGamertag(char *name)
{
size_t chars = 0;
strcpy_s(fakeGamerTag, name);
mbstowcs_s(&chars, fakeGamerTagW, 16, name, _TRUNCATE);
}
char* CSys::GetGamertag(int iPad)
{
if(iPad == 0)
{
return fakeGamerTag;
}
static char iPadGamertag[32];
_snprintf_s(iPadGamertag, sizeof(iPadGamertag), "%s (%d)", fakeGamerTag, iPad);
return iPadGamertag;
}
wstring CSys::GetDisplayName(int iPad)
{
if(iPad == 0)
{
return fakeGamerTagW;
}
wchar_t iPadGamertagW[16];
_snwprintf_s(iPadGamertagW, _countof(iPadGamertagW), L"%s (%d)", fakeGamerTagW, iPad);
return iPadGamertagW;
}
bool CSys::AllowedToPlayMultiplayer(int iProf)
{
return InputManager.IsPadConnected(iProf);
}
int CSys::GetPrimaryPad()
{
return 0;
}
void CSys::SetPrimaryPad(int iPad)
{
; //str1k3r - stubbed out
}
bool CSys::IsFullVersion()
{
return s_bProfileIsFullVersion;
}
void CSys::SetDebugFullOverride(bool bVal)
{
s_bProfileIsFullVersion = bVal;
}