mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-22 04:21:23 +00:00
Merge branch 'next' of https://git.do.srb2.org/STJr/SRB2.git into release-candidate
This commit is contained in:
commit
de1656ad75
3 changed files with 39 additions and 9 deletions
|
@ -1441,6 +1441,10 @@ static void Setvalue(consvar_t *var, const char *valstr, boolean stealth)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// free the old value string
|
||||||
|
Z_Free(var->zstring);
|
||||||
|
var->zstring = NULL;
|
||||||
|
|
||||||
var->value = var->PossibleValue[i].value;
|
var->value = var->PossibleValue[i].value;
|
||||||
var->string = var->PossibleValue[i].strvalue;
|
var->string = var->PossibleValue[i].strvalue;
|
||||||
goto finish;
|
goto finish;
|
||||||
|
@ -1503,14 +1507,7 @@ static void Setvalue(consvar_t *var, const char *valstr, boolean stealth)
|
||||||
found:
|
found:
|
||||||
if (client && execversion_enabled)
|
if (client && execversion_enabled)
|
||||||
{
|
{
|
||||||
if (var->revert.allocated)
|
|
||||||
{
|
|
||||||
Z_Free(var->revert.v.string);
|
|
||||||
var->revert.allocated = false; // the below value is not allocated in zone memory, don't try to free it!
|
|
||||||
}
|
|
||||||
|
|
||||||
var->revert.v.const_munge = var->PossibleValue[i].strvalue;
|
var->revert.v.const_munge = var->PossibleValue[i].strvalue;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3507,6 +3507,7 @@ tolinfo_t TYPEOFLEVEL[NUMTOLNAMES] = {
|
||||||
{"MARIO",TOL_MARIO},
|
{"MARIO",TOL_MARIO},
|
||||||
{"NIGHTS",TOL_NIGHTS},
|
{"NIGHTS",TOL_NIGHTS},
|
||||||
{"OLDBRAK",TOL_ERZ3},
|
{"OLDBRAK",TOL_ERZ3},
|
||||||
|
{"ERZ3",TOL_ERZ3},
|
||||||
|
|
||||||
{"XMAS",TOL_XMAS},
|
{"XMAS",TOL_XMAS},
|
||||||
{"CHRISTMAS",TOL_XMAS},
|
{"CHRISTMAS",TOL_XMAS},
|
||||||
|
|
|
@ -361,6 +361,9 @@ static int lib_cvRegisterVar(lua_State *L)
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
CV_PossibleValue_t *cvpv;
|
CV_PossibleValue_t *cvpv;
|
||||||
|
|
||||||
|
const char * const MINMAX[2] = {"MIN", "MAX"};
|
||||||
|
int minmax_unset = 3;
|
||||||
|
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
while (lua_next(L, 4)) {
|
while (lua_next(L, 4)) {
|
||||||
count++;
|
count++;
|
||||||
|
@ -377,16 +380,45 @@ static int lib_cvRegisterVar(lua_State *L)
|
||||||
i = 0;
|
i = 0;
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
while (lua_next(L, 4)) {
|
while (lua_next(L, 4)) {
|
||||||
|
INT32 n;
|
||||||
|
const char * strval;
|
||||||
|
|
||||||
// stack: [...] PossibleValue table, index, value
|
// stack: [...] PossibleValue table, index, value
|
||||||
// 4 5 6
|
// 4 5 6
|
||||||
if (lua_type(L, 5) != LUA_TSTRING
|
if (lua_type(L, 5) != LUA_TSTRING
|
||||||
|| lua_type(L, 6) != LUA_TNUMBER)
|
|| lua_type(L, 6) != LUA_TNUMBER)
|
||||||
FIELDERROR("PossibleValue", "custom PossibleValue table requires a format of string=integer, i.e. {MIN=0, MAX=9999}");
|
FIELDERROR("PossibleValue", "custom PossibleValue table requires a format of string=integer, i.e. {MIN=0, MAX=9999}");
|
||||||
cvpv[i].strvalue = Z_StrDup(lua_tostring(L, 5));
|
|
||||||
cvpv[i].value = (INT32)lua_tonumber(L, 6);
|
strval = lua_tostring(L, 5);
|
||||||
|
|
||||||
|
if (
|
||||||
|
stricmp(strval, MINMAX[n=0]) == 0 ||
|
||||||
|
stricmp(strval, MINMAX[n=1]) == 0
|
||||||
|
){
|
||||||
|
/* need to shift forward */
|
||||||
|
if (minmax_unset == 3)
|
||||||
|
{
|
||||||
|
memmove(&cvpv[2], &cvpv[0],
|
||||||
|
i * sizeof *cvpv);
|
||||||
|
}
|
||||||
|
cvpv[n].strvalue = MINMAX[n];
|
||||||
|
minmax_unset &= ~(1 << n);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = i;
|
||||||
|
cvpv[n].strvalue = Z_StrDup(strval);
|
||||||
|
}
|
||||||
|
|
||||||
|
cvpv[n].value = (INT32)lua_tonumber(L, 6);
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (minmax_unset)
|
||||||
|
FIELDERROR("PossibleValue", "custom PossibleValue table requires requires both MIN and MAX keys if one is present");
|
||||||
|
|
||||||
cvpv[i].value = 0;
|
cvpv[i].value = 0;
|
||||||
cvpv[i].strvalue = NULL;
|
cvpv[i].strvalue = NULL;
|
||||||
cvar->PossibleValue = cvpv;
|
cvar->PossibleValue = cvpv;
|
||||||
|
|
Loading…
Reference in a new issue