mirror of
https://github.com/encounter/Petari.git
synced 2026-03-30 11:34:15 -07:00
138 lines
3.3 KiB
C++
138 lines
3.3 KiB
C++
#include "Game/Util/StringUtil.hpp"
|
|
|
|
// the linker will fix me when we are linking to the codewarrior libs
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
extern int strcasecmp(const char*, const char*);
|
|
};
|
|
#endif
|
|
|
|
#include <cstdio>
|
|
#include <cstring>
|
|
#include "Game/Util.hpp"
|
|
|
|
namespace MR {
|
|
void addPictureFontCode(wchar_t *pStr, int code) {
|
|
*pStr = code;
|
|
*++pStr = 0;
|
|
}
|
|
|
|
#ifdef NON_MATCHING
|
|
void addPictureFontTag(wchar_t *pStr, int tag) {
|
|
pStr[0] = 0x1A;
|
|
*(u8*)pStr[1] = 0x6;
|
|
*(u8*)pStr[2] = 0x3;
|
|
pStr[3] = tag - 0x30;
|
|
pStr[4] = 0;
|
|
}
|
|
#endif
|
|
|
|
void addPictureFontTagPlayerIcon(wchar_t *pMsgStr) {
|
|
int tag = MR::isPlayerLuigi() ? 0x4C : 0x42;
|
|
MR::addPictureFontTag(pMsgStr, tag);
|
|
}
|
|
|
|
#ifdef NON_MATCHING
|
|
// missing branch, and wrong condition (likely because of the branch)
|
|
const char* getBasename(const char *pString) {
|
|
const char* str = strrchr(pString, 0x2F); // '/'
|
|
return str ? str + 1 : pString;
|
|
}
|
|
#endif
|
|
|
|
void extractString(char *pDest, const char *pSource, u32 num, /* unused */ u32) {
|
|
strncpy(pDest, pSource, num);
|
|
pDest[num] = 0;
|
|
}
|
|
|
|
int strcasecmp(const char *pStr1, const char *pStr2) {
|
|
return strcasecmp(pStr1, pStr2);
|
|
}
|
|
|
|
bool isEqualString(const char *pStr1, const char *pStr2) {
|
|
return !strcmp(pStr1, pStr2);
|
|
}
|
|
|
|
bool isEqualStringCase(const char *pStr1, const char *pStr2) {
|
|
return !strcasecmp(pStr1, pStr2);
|
|
}
|
|
|
|
bool isEqualSubString(const char *pStr1, const char *pStr2) {
|
|
return strstr(pStr1, pStr2) != 0;
|
|
}
|
|
|
|
bool hasStringSpace(const char *pString) {
|
|
return strchr(pString, ' ') != 0;
|
|
}
|
|
|
|
void scan32(const char *pOut, const char *a2, s32 *pVal) {
|
|
if (!strstr(pOut, a2)) {
|
|
return;
|
|
}
|
|
|
|
sscanf(pOut, "\t%d", pVal);
|
|
}
|
|
|
|
void scan16(const char *pOut, const char *a2, u16 *pVal) {
|
|
if (!strstr(pOut, a2)) {
|
|
return;
|
|
}
|
|
|
|
u32 out;
|
|
sscanf(pOut, "\t%d", &out);
|
|
*pVal = out;
|
|
}
|
|
|
|
void scan8(const char *pOut, const char *a2, u8 *pVal) {
|
|
if (!strstr(pOut, a2)) {
|
|
return;
|
|
}
|
|
|
|
u32 out;
|
|
sscanf(pOut, "\t%d", &out);
|
|
*pVal = out;
|
|
}
|
|
|
|
void scanf32(const char *pOut, const char *a2, f32 *pVal) {
|
|
if (!strstr(pOut, a2)) {
|
|
return;
|
|
}
|
|
|
|
sscanf(pOut, "\t%ff", pVal);
|
|
}
|
|
|
|
void scanu8x4(const char *pStr, const char *a2, u8 *pVal) {
|
|
if (!strstr(pStr, a2)) {
|
|
return;
|
|
}
|
|
|
|
u32 vars[4];
|
|
sscanf(pStr, "\t{%d,%d,%d,%d}", &vars[0], &vars[1], &vars[2], &vars[3]);
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
pVal[i] = vars[i];
|
|
}
|
|
}
|
|
|
|
void scans16x4(const char *pStr, const char *a2, s16 *pVal) {
|
|
if (!strstr(pStr, a2)) {
|
|
return;
|
|
}
|
|
|
|
u32 vars[4];
|
|
sscanf(pStr, "\t{%d,%d,%d,%d}", &vars[0], &vars[1], &vars[2], &vars[3]);
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
pVal[i] = vars[i];
|
|
}
|
|
}
|
|
|
|
void scanf32x4(const char *pStr, const char *a2, f32 *pVal) {
|
|
if (!strstr(pStr, a2)) {
|
|
return;
|
|
}
|
|
|
|
sscanf(pStr, "\t{%ff,%ff,%ff,%ff}", &pVal[0], &pVal[1], &pVal[2], &pVal[3]);
|
|
}
|
|
};
|