mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-15 18:39:00 +00:00
Text and cross-platform fix
This commit is contained in:
parent
7ae25761d5
commit
af53267b74
2 changed files with 43 additions and 36 deletions
|
@ -26,34 +26,39 @@ void GetLocalTime_CP(SYSTEMTIME *out) {
|
||||||
// Compatible with Linux/POSIX and MinGW on Windows
|
// Compatible with Linux/POSIX and MinGW on Windows
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) {
|
HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) {
|
||||||
char newpathname[32];
|
char pathCopy[32];
|
||||||
|
|
||||||
strncpy(newpathname, pathname, 32);
|
strncpy(pathCopy, pathname, 32);
|
||||||
char* path = strtok(newpathname, "*");
|
char* folder = strtok(pathCopy, "*");
|
||||||
|
|
||||||
// Case-sensitivity and backslashes...
|
// Case-sensitivity and backslashes...
|
||||||
char *real = casepath(path);
|
char *realFolder = casepath(folder);
|
||||||
if (real) {
|
char *extension = nil;
|
||||||
real[strlen(real)] = '*';
|
if (realFolder) {
|
||||||
char *extension = strtok(NULL, "*");
|
realFolder[strlen(realFolder)] = '*';
|
||||||
if (extension)
|
extension = strtok(NULL, "*");
|
||||||
strcat(real, extension);
|
if (extension) {
|
||||||
|
strcat(realFolder, extension);
|
||||||
strncpy(newpathname, real, 32);
|
|
||||||
free(real);
|
|
||||||
path = strtok(newpathname, "*");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(firstfile->folder, path, sizeof(firstfile->folder));
|
strncpy(pathCopy, realFolder, 32);
|
||||||
|
free(realFolder);
|
||||||
|
folder = strtok(pathCopy, "*");
|
||||||
|
} else {
|
||||||
|
// Wildcard (*)
|
||||||
|
if (strlen(folder) + 1 != strlen(pathname))
|
||||||
|
extension = strtok(NULL, "*");
|
||||||
|
}
|
||||||
|
|
||||||
// Both w/ extension and w/o extension is ok
|
strncpy(firstfile->folder, folder, sizeof(firstfile->folder));
|
||||||
if (strlen(path) + 1 != strlen(pathname))
|
|
||||||
strncpy(firstfile->extension, strtok(NULL, "*"), sizeof(firstfile->extension));
|
if (extension)
|
||||||
|
strncpy(firstfile->extension, extension, sizeof(firstfile->extension));
|
||||||
else
|
else
|
||||||
strncpy(firstfile->extension, "", sizeof(firstfile->extension));
|
firstfile->extension[0] = '\0';
|
||||||
|
|
||||||
HANDLE d;
|
HANDLE d;
|
||||||
if ((d = (HANDLE)opendir(path)) == NULL || !FindNextFile(d, firstfile))
|
if ((d = (HANDLE)opendir(folder)) == NULL || !FindNextFile(d, firstfile))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
|
|
|
@ -69,10 +69,7 @@ CMessages::WideStringCompare(wchar *str1, wchar *str2, uint16 size)
|
||||||
if (len1 != len2 && (len1 < size || len2 < size))
|
if (len1 != len2 && (len1 < size || len2 < size))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (int32 i = 0; i < size; i++) {
|
for (int32 i = 0; FixupChar(str1[i]) != '\0' && i < size; i++) {
|
||||||
if (FixupChar(str1[i]) == '\0')
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (FixupChar(str1[i]) != FixupChar(str2[i]))
|
if (FixupChar(str1[i]) != FixupChar(str2[i]))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -328,9 +325,7 @@ void
|
||||||
CMessages::AddToPreviousBriefArray(wchar *text, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, wchar *string)
|
CMessages::AddToPreviousBriefArray(wchar *text, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, wchar *string)
|
||||||
{
|
{
|
||||||
int32 i = 0;
|
int32 i = 0;
|
||||||
while (i < NUMPREVIOUSBRIEFS) {
|
for (i = 0; PreviousBriefs[i].m_pText && i < NUMPREVIOUSBRIEFS; i++) {
|
||||||
if (PreviousBriefs[i].m_pText == nil)
|
|
||||||
break;
|
|
||||||
if (PreviousBriefs[i].m_nNumber[0] == n1
|
if (PreviousBriefs[i].m_nNumber[0] == n1
|
||||||
&& PreviousBriefs[i].m_nNumber[1] == n2
|
&& PreviousBriefs[i].m_nNumber[1] == n2
|
||||||
&& PreviousBriefs[i].m_nNumber[2] == n3
|
&& PreviousBriefs[i].m_nNumber[2] == n3
|
||||||
|
@ -340,8 +335,6 @@ CMessages::AddToPreviousBriefArray(wchar *text, int32 n1, int32 n2, int32 n3, in
|
||||||
&& PreviousBriefs[i].m_pText == text
|
&& PreviousBriefs[i].m_pText == text
|
||||||
&& PreviousBriefs[i].m_pString == string)
|
&& PreviousBriefs[i].m_pString == string)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i != 0) {
|
if (i != 0) {
|
||||||
|
@ -374,6 +367,14 @@ CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sprintf(numStr, "%d", n1);
|
||||||
|
size_t outLen = strlen(numStr);
|
||||||
|
AsciiToUnicode(numStr, wNumStr);
|
||||||
|
if (str[0] == 0) {
|
||||||
|
*outstr = '\0';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int32 size = GetWideStringLength(str);
|
int32 size = GetWideStringLength(str);
|
||||||
|
|
||||||
int32 i = 0;
|
int32 i = 0;
|
||||||
|
@ -385,6 +386,11 @@ CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32
|
||||||
#else
|
#else
|
||||||
if (str[c] == '~' && str[c + 1] == '1' && str[c + 2] == '~') {
|
if (str[c] == '~' && str[c + 1] == '1' && str[c + 2] == '~') {
|
||||||
#endif
|
#endif
|
||||||
|
c += 3;
|
||||||
|
for (int j = 0; j < outLen; j++)
|
||||||
|
*(outstr++) = wNumStr[j++];
|
||||||
|
|
||||||
|
i++;
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case 0: sprintf(numStr, "%d", n1); break;
|
case 0: sprintf(numStr, "%d", n1); break;
|
||||||
case 1: sprintf(numStr, "%d", n2); break;
|
case 1: sprintf(numStr, "%d", n2); break;
|
||||||
|
@ -393,14 +399,8 @@ CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32
|
||||||
case 4: sprintf(numStr, "%d", n5); break;
|
case 4: sprintf(numStr, "%d", n5); break;
|
||||||
case 5: sprintf(numStr, "%d", n6); break;
|
case 5: sprintf(numStr, "%d", n6); break;
|
||||||
}
|
}
|
||||||
i++;
|
outLen = strlen(numStr);
|
||||||
AsciiToUnicode(numStr, wNumStr);
|
AsciiToUnicode(numStr, wNumStr);
|
||||||
|
|
||||||
int j = 0;
|
|
||||||
while (wNumStr[j] != '\0')
|
|
||||||
*(outstr++) = wNumStr[j++];
|
|
||||||
|
|
||||||
c += 3;
|
|
||||||
} else {
|
} else {
|
||||||
*(outstr++) = str[c++];
|
*(outstr++) = str[c++];
|
||||||
}
|
}
|
||||||
|
@ -466,10 +466,12 @@ CMessages::InsertPlayerControlKeysInString(wchar *str)
|
||||||
if (str[i] == '~' && str[i + 1] == 'k' && str[i + 2] == '~') {
|
if (str[i] == '~' && str[i + 1] == 'k' && str[i + 2] == '~') {
|
||||||
#endif
|
#endif
|
||||||
i += 4;
|
i += 4;
|
||||||
for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS; cont++) {
|
bool done = false;
|
||||||
|
for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS && !done; cont++) {
|
||||||
uint16 contSize = GetWideStringLength(ControlsManager.m_aActionNames[cont]);
|
uint16 contSize = GetWideStringLength(ControlsManager.m_aActionNames[cont]);
|
||||||
if (contSize != 0) {
|
if (contSize != 0) {
|
||||||
if (WideStringCompare(&str[i], ControlsManager.m_aActionNames[cont], contSize)) {
|
if (WideStringCompare(&str[i], ControlsManager.m_aActionNames[cont], contSize)) {
|
||||||
|
done = true;
|
||||||
ControlsManager.GetWideStringOfCommandKeys(cont, keybuf, 256);
|
ControlsManager.GetWideStringOfCommandKeys(cont, keybuf, 256);
|
||||||
uint16 keybuf_size = GetWideStringLength(keybuf);
|
uint16 keybuf_size = GetWideStringLength(keybuf);
|
||||||
for (uint16 j = 0; j < keybuf_size; j++) {
|
for (uint16 j = 0; j < keybuf_size; j++) {
|
||||||
|
@ -751,7 +753,7 @@ CMessages::ClearThisPrint(wchar *str)
|
||||||
}
|
}
|
||||||
BriefMessages[i].m_pText = nil;
|
BriefMessages[i].m_pText = nil;
|
||||||
BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds();
|
BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds();
|
||||||
if (BriefMessages[0].m_pText == nil)
|
if (BriefMessages[0].m_pText != nil)
|
||||||
AddToPreviousBriefArray(
|
AddToPreviousBriefArray(
|
||||||
BriefMessages[0].m_pText,
|
BriefMessages[0].m_pText,
|
||||||
BriefMessages[0].m_nNumber[0],
|
BriefMessages[0].m_nNumber[0],
|
||||||
|
|
Loading…
Reference in a new issue