Add scr_toupper
This commit is contained in:
parent
7f08cb053d
commit
f343b2da3f
@ -124,6 +124,51 @@ namespace Components
|
|||||||
const auto& file = p.filename().string();
|
const auto& file = p.filename().string();
|
||||||
Game::Scr_AddInt(FileSystem::DeleteFile(folder, file));
|
Game::Scr_AddInt(FileSystem::DeleteFile(folder, file));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Misc functions
|
||||||
|
Script::AddFunction("ToUpper", []()
|
||||||
|
{
|
||||||
|
const auto scriptValue = Game::Scr_GetConstString(0);
|
||||||
|
const auto* string = Game::SL_ConvertToString(scriptValue);
|
||||||
|
|
||||||
|
char out[1024] = {0}; // 1024 is the max for a string in this SL system
|
||||||
|
bool changed = false;
|
||||||
|
|
||||||
|
auto i = 0u;
|
||||||
|
while (i < sizeof(out))
|
||||||
|
{
|
||||||
|
const auto value = *string;
|
||||||
|
const auto result = std::toupper(static_cast<unsigned char>(value));
|
||||||
|
out[i] = static_cast<char>(result);
|
||||||
|
|
||||||
|
if (value != result)
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
if (result == '\0') // Finished converting string
|
||||||
|
break;
|
||||||
|
|
||||||
|
++string;
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Null terminating character was overwritten
|
||||||
|
if (i >= sizeof(out))
|
||||||
|
{
|
||||||
|
Game::Scr_Error("string too long");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (changed)
|
||||||
|
{
|
||||||
|
Game::Scr_AddString(out);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Game::SL_AddRefToString(scriptValue);
|
||||||
|
Game::Scr_AddConstString(scriptValue);
|
||||||
|
Game::SL_RemoveRefToString(scriptValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptExtension::AddMethods()
|
void ScriptExtension::AddMethods()
|
||||||
|
@ -272,6 +272,7 @@ namespace Game
|
|||||||
|
|
||||||
Scr_AddEntity_t Scr_AddEntity = Scr_AddEntity_t(0x4BFB40);
|
Scr_AddEntity_t Scr_AddEntity = Scr_AddEntity_t(0x4BFB40);
|
||||||
Scr_AddString_t Scr_AddString = Scr_AddString_t(0x412310);
|
Scr_AddString_t Scr_AddString = Scr_AddString_t(0x412310);
|
||||||
|
Scr_AddConstString_t Scr_AddConstString = Scr_AddConstString_t(0x488860);
|
||||||
Scr_AddIString_t Scr_AddIString = Scr_AddIString_t(0x455F20);
|
Scr_AddIString_t Scr_AddIString = Scr_AddIString_t(0x455F20);
|
||||||
Scr_AddInt_t Scr_AddInt = Scr_AddInt_t(0x41D7D0);
|
Scr_AddInt_t Scr_AddInt = Scr_AddInt_t(0x41D7D0);
|
||||||
Scr_AddFloat_t Scr_AddFloat = Scr_AddFloat_t(0x61E860);
|
Scr_AddFloat_t Scr_AddFloat = Scr_AddFloat_t(0x61E860);
|
||||||
@ -313,6 +314,8 @@ namespace Game
|
|||||||
|
|
||||||
SL_ConvertToString_t SL_ConvertToString = SL_ConvertToString_t(0x4EC1D0);
|
SL_ConvertToString_t SL_ConvertToString = SL_ConvertToString_t(0x4EC1D0);
|
||||||
SL_GetString_t SL_GetString = SL_GetString_t(0x4CDC10);
|
SL_GetString_t SL_GetString = SL_GetString_t(0x4CDC10);
|
||||||
|
SL_AddRefToString_t SL_AddRefToString = SL_AddRefToString_t(0x4D9B00);
|
||||||
|
SL_RemoveRefToString_t SL_RemoveRefToString = SL_RemoveRefToString_t(0x47CD70);
|
||||||
|
|
||||||
SND_Init_t SND_Init = SND_Init_t(0x46A630);
|
SND_Init_t SND_Init = SND_Init_t(0x46A630);
|
||||||
SND_InitDriver_t SND_InitDriver = SND_InitDriver_t(0x4F5090);
|
SND_InitDriver_t SND_InitDriver = SND_InitDriver_t(0x4F5090);
|
||||||
|
@ -645,6 +645,9 @@ namespace Game
|
|||||||
typedef void(__cdecl * Scr_AddString_t)(const char* value);
|
typedef void(__cdecl * Scr_AddString_t)(const char* value);
|
||||||
extern Scr_AddString_t Scr_AddString;
|
extern Scr_AddString_t Scr_AddString;
|
||||||
|
|
||||||
|
typedef void(__cdecl * Scr_AddConstString_t)(unsigned int value);
|
||||||
|
extern Scr_AddConstString_t Scr_AddConstString;
|
||||||
|
|
||||||
typedef void(__cdecl * Scr_AddIString_t)(const char* value);
|
typedef void(__cdecl * Scr_AddIString_t)(const char* value);
|
||||||
extern Scr_AddIString_t Scr_AddIString;
|
extern Scr_AddIString_t Scr_AddIString;
|
||||||
|
|
||||||
@ -669,7 +672,7 @@ namespace Game
|
|||||||
typedef const char*(__cdecl * Scr_GetString_t)(unsigned int index);
|
typedef const char*(__cdecl * Scr_GetString_t)(unsigned int index);
|
||||||
extern Scr_GetString_t Scr_GetString;
|
extern Scr_GetString_t Scr_GetString;
|
||||||
|
|
||||||
typedef unsigned int(__cdecl * Scr_GetConstString_t)(unsigned int index);
|
typedef scr_string_t(__cdecl * Scr_GetConstString_t)(unsigned int index);
|
||||||
extern Scr_GetConstString_t Scr_GetConstString;
|
extern Scr_GetConstString_t Scr_GetConstString;
|
||||||
|
|
||||||
typedef const char*(__cdecl * Scr_GetDebugString_t)(unsigned int index);
|
typedef const char*(__cdecl * Scr_GetDebugString_t)(unsigned int index);
|
||||||
@ -753,6 +756,12 @@ namespace Game
|
|||||||
typedef short(__cdecl * SL_GetString_t)(const char *str, unsigned int user);
|
typedef short(__cdecl * SL_GetString_t)(const char *str, unsigned int user);
|
||||||
extern SL_GetString_t SL_GetString;
|
extern SL_GetString_t SL_GetString;
|
||||||
|
|
||||||
|
typedef void(__cdecl * SL_AddRefToString_t)(unsigned int stringValue);
|
||||||
|
extern SL_AddRefToString_t SL_AddRefToString;
|
||||||
|
|
||||||
|
typedef void(__cdecl * SL_RemoveRefToString_t)(unsigned int stringValue);
|
||||||
|
extern SL_RemoveRefToString_t SL_RemoveRefToString;
|
||||||
|
|
||||||
typedef void(__cdecl * SND_Init_t)(int a1, int a2, int a3);
|
typedef void(__cdecl * SND_Init_t)(int a1, int a2, int a3);
|
||||||
extern SND_Init_t SND_Init;
|
extern SND_Init_t SND_Init;
|
||||||
|
|
||||||
|
@ -20,6 +20,8 @@ namespace Game
|
|||||||
typedef vec_t vec3_t[3];
|
typedef vec_t vec3_t[3];
|
||||||
typedef vec_t vec4_t[4];
|
typedef vec_t vec4_t[4];
|
||||||
|
|
||||||
|
typedef unsigned __int16 scr_string_t;
|
||||||
|
|
||||||
struct scr_entref_t
|
struct scr_entref_t
|
||||||
{
|
{
|
||||||
unsigned __int16 entnum;
|
unsigned __int16 entnum;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user