mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 20:41:46 +00:00
* Add a new feature - "-nodoubles", which shows only double-defined entries without needing to specify a range (but you still can, afterwards).
* Resolve Sryder's comment about confusing unlabeled iteration variables. * Fix an issue with out-of-range printing for the end of the range failing.
This commit is contained in:
parent
15c2d75199
commit
b19372944c
1 changed files with 41 additions and 24 deletions
|
|
@ -4114,37 +4114,49 @@ static void Command_ListWADS_f(void)
|
||||||
|
|
||||||
static void Command_ListDoomednums_f(void)
|
static void Command_ListDoomednums_f(void)
|
||||||
{
|
{
|
||||||
INT16 i, j, k = 0, l = 0;
|
INT16 i, j, focusstart = 0, focusend = 0;
|
||||||
INT32 argc = COM_Argc();
|
INT32 argc = COM_Argc(), argstart = 0;
|
||||||
INT16 table[MAXDOOMEDNUM];
|
INT16 table[MAXDOOMEDNUM];
|
||||||
|
boolean nodoubles = false;
|
||||||
|
UINT8 doubles[(MAXDOOMEDNUM+8/8)];
|
||||||
|
|
||||||
|
if (argc > 1)
|
||||||
|
{
|
||||||
|
nodoubles = (strcmp(COM_Argv(1), "-nodoubles") == 0);
|
||||||
|
if (nodoubles)
|
||||||
|
{
|
||||||
|
argc--;
|
||||||
|
argstart++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (argc)
|
switch (argc)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
l = MAXDOOMEDNUM;
|
focusend = MAXDOOMEDNUM;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
l = atoi(COM_Argv(2));
|
focusend = atoi(COM_Argv(argstart+2));
|
||||||
if (l < 1 || l > MAXDOOMEDNUM)
|
if (focusend < 1 || focusend > MAXDOOMEDNUM)
|
||||||
{
|
{
|
||||||
CONS_Printf("arg 2: doomednum \x82""%d \x85out of range (1-4095)\n", k);
|
CONS_Printf("arg 2: doomednum \x82""%d \x85out of range (1-4095)\n", focusend);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//FALLTHRU
|
//FALLTHRU
|
||||||
case 2:
|
case 2:
|
||||||
k = atoi(COM_Argv(1));
|
focusstart = atoi(COM_Argv(argstart+1));
|
||||||
if (k < 1 || k > MAXDOOMEDNUM)
|
if (focusstart < 1 || focusstart > MAXDOOMEDNUM)
|
||||||
{
|
{
|
||||||
CONS_Printf("arg 1: doomednum \x82""%d \x85out of range (1-4095)\n", k);
|
CONS_Printf("arg 1: doomednum \x82""%d \x85out of range (1-4095)\n", focusstart);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!l)
|
if (!focusend)
|
||||||
l = k;
|
focusend = focusstart;
|
||||||
else if (l < k) // silently and helpfully swap.
|
else if (focusend < focusstart) // silently and helpfully swap.
|
||||||
{
|
{
|
||||||
j = k;
|
j = focusstart;
|
||||||
k = l;
|
focusstart = focusend;
|
||||||
l = j;
|
focusend = j;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -4154,6 +4166,7 @@ static void Command_ListDoomednums_f(void)
|
||||||
|
|
||||||
// see P_SpawnNonMobjMapThing
|
// see P_SpawnNonMobjMapThing
|
||||||
memset(table, 0, sizeof(table));
|
memset(table, 0, sizeof(table));
|
||||||
|
memset(doubles, 0, sizeof(doubles));
|
||||||
for (i = 1; i <= MAXPLAYERS; i++)
|
for (i = 1; i <= MAXPLAYERS; i++)
|
||||||
table[i-1] = MT_PLAYER; // playerstarts
|
table[i-1] = MT_PLAYER; // playerstarts
|
||||||
table[33-1] = table[34-1] = table[35-1] = MT_PLAYER; // battle/team starts
|
table[33-1] = table[34-1] = table[35-1] = MT_PLAYER; // battle/team starts
|
||||||
|
|
@ -4166,11 +4179,12 @@ static void Command_ListDoomednums_f(void)
|
||||||
for (i = 1; i < MT_FIRSTFREESLOT+NUMMOBJFREESLOTS; i++)
|
for (i = 1; i < MT_FIRSTFREESLOT+NUMMOBJFREESLOTS; i++)
|
||||||
{
|
{
|
||||||
j = mobjinfo[i].doomednum;
|
j = mobjinfo[i].doomednum;
|
||||||
if (j < (k ? k : 1) || j > (l ? l : MAXDOOMEDNUM))
|
if (j < (focusstart ? focusstart : 1) || j > focusend)
|
||||||
continue;
|
continue;
|
||||||
if (table[j-1])
|
if (table[--j])
|
||||||
{
|
{
|
||||||
CONS_Printf(" doomednum \x82""%d""\x80 is \x85""double-defined\x80 by ", j);
|
doubles[j/8] |= 1<<(j&7);
|
||||||
|
CONS_Printf(" doomednum \x82""%d""\x80 is \x85""double-defined\x80 by ", j+1);
|
||||||
if (i < MT_FIRSTFREESLOT)
|
if (i < MT_FIRSTFREESLOT)
|
||||||
{
|
{
|
||||||
CONS_Printf("\x87""hardcode %s <-- MAJOR ERROR\n", MOBJTYPE_LIST[i]);
|
CONS_Printf("\x87""hardcode %s <-- MAJOR ERROR\n", MOBJTYPE_LIST[i]);
|
||||||
|
|
@ -4179,22 +4193,25 @@ static void Command_ListDoomednums_f(void)
|
||||||
CONS_Printf("\x81""freeslot MT_""%s\n", FREE_MOBJS[i-MT_FIRSTFREESLOT]);
|
CONS_Printf("\x81""freeslot MT_""%s\n", FREE_MOBJS[i-MT_FIRSTFREESLOT]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
table[j-1] = i;
|
table[j] = i;
|
||||||
}
|
}
|
||||||
CONS_Printf("\x82Printing doomednum usage...\n");
|
CONS_Printf("\x82Printing doomednum usage...\n");
|
||||||
if (!k)
|
if (!focusstart)
|
||||||
{
|
{
|
||||||
i = 35; // skip MT_PLAYER spam
|
i = 35; // skip MT_PLAYER spam
|
||||||
CONS_Printf(" doomednums \x82""1-35""\x80 are used by ""\x87""hardcode MT_PLAYER\n");
|
if (!nodoubles)
|
||||||
|
CONS_Printf(" doomednums \x82""1-35""\x80 are used by ""\x87""hardcode MT_PLAYER\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
i = k-1;
|
i = focusstart-1;
|
||||||
|
|
||||||
for (; i < l; i++)
|
for (; i < focusend; i++)
|
||||||
{
|
{
|
||||||
|
if (nodoubles && !(doubles[i/8] & 1<<(i&7)))
|
||||||
|
continue;
|
||||||
if (!table[i])
|
if (!table[i])
|
||||||
{
|
{
|
||||||
if (k)
|
if (focusstart)
|
||||||
{
|
{
|
||||||
CONS_Printf(" doomednum \x82""%d""\x80 is \x83""free!", i+1);
|
CONS_Printf(" doomednum \x82""%d""\x80 is \x83""free!", i+1);
|
||||||
if (i < 99) // above the humble crawla? how dare you
|
if (i < 99) // above the humble crawla? how dare you
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue