Handle How RingRacers uses args/scriptargs
This commit is contained in:
parent
48204a5ba7
commit
a0d2983b5b
1 changed files with 55 additions and 14 deletions
|
|
@ -124,6 +124,7 @@ unsigned char mapmd5[16];
|
|||
|
||||
boolean udmf;
|
||||
INT32 udmf_version;
|
||||
char *udmf_namespace;
|
||||
size_t numvertexes, numsegs, numsectors, numsubsectors, numnodes, numlines, numsides, nummapthings;
|
||||
size_t num_orig_vertexes;
|
||||
vertex_t *vertexes;
|
||||
|
|
@ -1455,10 +1456,26 @@ static boolean TextmapCount(size_t size)
|
|||
return false;
|
||||
}
|
||||
|
||||
// Check if namespace is valid.
|
||||
// Check if namespace is valid and copy it into memory.
|
||||
tkn = M_TokenizerRead(0);
|
||||
if (!(fastcmp(tkn, "srb2") || fastcmp(tkn, "ringracers") || fastcmp(tkn, "srb2kart") || fastcmp(tkn, "blankart")))
|
||||
if (fastcmp(tkn, "blankart"))
|
||||
{
|
||||
udmf_namespace = "blankart";
|
||||
}
|
||||
else if(fastcmp(tkn, "ringracers"))
|
||||
{
|
||||
udmf_namespace = "ringracers";
|
||||
}
|
||||
else if (fastcmp(tkn, "srb2"))
|
||||
{
|
||||
udmf_namespace = "srb2";
|
||||
}
|
||||
else
|
||||
{
|
||||
udmf_namespace = "unknown";
|
||||
CONS_Alert(CONS_WARNING, "Invalid namespace '%s', only 'srb2' or 'ringracers' or 'srb2kart' or 'blankart' is supported.\n", tkn);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for version
|
||||
tkn = M_TokenizerRead(0);
|
||||
|
|
@ -2074,20 +2091,43 @@ static void ParseTextmapThingParameter(UINT32 i, const char *param, const char *
|
|||
mapthings[i].layer = atol(val);
|
||||
else if (fastncmp(param, "stringarg", 9) && strlen(param) > 9)
|
||||
{
|
||||
size_t argnum = atol(param + 9);
|
||||
if (argnum >= NUM_MAPTHING_STRINGARGS)
|
||||
return;
|
||||
size_t len = strlen(val);
|
||||
mapthings[i].stringargs[argnum] = Z_Malloc(len + 1, PU_LEVEL, NULL);
|
||||
M_Memcpy(mapthings[i].stringargs[argnum], val, len);
|
||||
mapthings[i].stringargs[argnum][len] = '\0';
|
||||
if (!strcmp(udmf_namespace,"ringracers") && udmf_version > 0)
|
||||
{
|
||||
size_t argnum = atol(param + 9);
|
||||
if (argnum >= NUM_SCRIPT_STRINGARGS)
|
||||
return;
|
||||
size_t len = strlen(val);
|
||||
mapthings[i].script_stringargs[argnum] = Z_Malloc(len + 1, PU_LEVEL, NULL);
|
||||
M_Memcpy(mapthings[i].script_stringargs[argnum], val, len);
|
||||
mapthings[i].script_stringargs[argnum][len] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t argnum = atol(param + 9);
|
||||
if (argnum >= NUM_MAPTHING_STRINGARGS)
|
||||
return;
|
||||
size_t len = strlen(val);
|
||||
mapthings[i].stringargs[argnum] = Z_Malloc(len + 1, PU_LEVEL, NULL);
|
||||
M_Memcpy(mapthings[i].stringargs[argnum], val, len);
|
||||
mapthings[i].stringargs[argnum][len] = '\0';
|
||||
}
|
||||
}
|
||||
else if (fastncmp(param, "arg", 3) && strlen(param) > 3)
|
||||
{
|
||||
size_t argnum = atol(param + 3);
|
||||
if (argnum >= NUM_MAPTHING_ARGS)
|
||||
return;
|
||||
mapthings[i].args[argnum] = atol(val);
|
||||
if (!strcmp(udmf_namespace,"ringracers") && udmf_version > 0)
|
||||
{
|
||||
size_t argnum = atol(param + 3);
|
||||
if (argnum >= NUM_SCRIPT_ARGS)
|
||||
return;
|
||||
mapthings[i].script_args[argnum] = atol(val);
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t argnum = atol(param + 3);
|
||||
if (argnum >= NUM_MAPTHING_ARGS)
|
||||
return;
|
||||
mapthings[i].args[argnum] = atol(val);
|
||||
}
|
||||
}
|
||||
else if (fastncmp(param, "thingarg", 8) && strlen(param) > 8)
|
||||
{
|
||||
|
|
@ -2099,7 +2139,7 @@ static void ParseTextmapThingParameter(UINT32 i, const char *param, const char *
|
|||
else if (fastncmp(param, "thingstringarg", 14) && strlen(param) > 14)
|
||||
{
|
||||
size_t argnum = atol(param + 14);
|
||||
if (argnum >= NUM_MAPTHING_ARGS)
|
||||
if (argnum >= NUM_MAPTHING_STRINGARGS)
|
||||
return;
|
||||
size_t len = strlen(val);
|
||||
mapthings[i].stringargs[argnum] = Z_Malloc(len + 1, PU_LEVEL, NULL);
|
||||
|
|
@ -7651,6 +7691,7 @@ static boolean P_LoadMapFromFile(void)
|
|||
size_t i;
|
||||
udmf = textmap != NULL;
|
||||
udmf_version = 0;
|
||||
udmf_namespace = NULL;
|
||||
|
||||
if (!P_LoadMapData(curmapvirt))
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Reference in a new issue