mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-12 03:00:38 +00:00
Mapster32: add var 'corruptcheck_game_duke3d' and enable by default.
Currently, this checks for effector sprites that are not face-aligned. See https://forums.duke4.net/topic/8324-icestation-colossus-map-broken git-svn-id: https://svn.eduke32.com/eduke32@5420 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
72039e80ee
commit
51489e44d4
4 changed files with 42 additions and 1 deletions
|
@ -253,6 +253,7 @@ static inline int32_t get_nextloopstart(int32_t loopstart)
|
||||||
extern int32_t corruptlevel, numcorruptthings, corruptthings[MAXCORRUPTTHINGS];
|
extern int32_t corruptlevel, numcorruptthings, corruptthings[MAXCORRUPTTHINGS];
|
||||||
extern int32_t autocorruptcheck;
|
extern int32_t autocorruptcheck;
|
||||||
extern int32_t corruptcheck_noalreadyrefd, corruptcheck_heinum;
|
extern int32_t corruptcheck_noalreadyrefd, corruptcheck_heinum;
|
||||||
|
extern int32_t corruptcheck_game_duke3d;
|
||||||
extern int32_t corrupt_tryfix_alt;
|
extern int32_t corrupt_tryfix_alt;
|
||||||
extern int32_t CheckMapCorruption(int32_t printfromlev, uint64_t tryfixing);
|
extern int32_t CheckMapCorruption(int32_t printfromlev, uint64_t tryfixing);
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,8 @@ int32_t loadsetup(const char *fn)
|
||||||
if (readconfig(fp, "autocorruptchecksec", val, VL) > 0) autocorruptcheck = max(0, atoi_safe(val));
|
if (readconfig(fp, "autocorruptchecksec", val, VL) > 0) autocorruptcheck = max(0, atoi_safe(val));
|
||||||
if (readconfig(fp, "corruptcheck_noalreadyrefd", val, VL) > 0)
|
if (readconfig(fp, "corruptcheck_noalreadyrefd", val, VL) > 0)
|
||||||
corruptcheck_noalreadyrefd = !!atoi_safe(val);
|
corruptcheck_noalreadyrefd = !!atoi_safe(val);
|
||||||
|
if (readconfig(fp, "corruptcheck_game_duke3d", val, VL) > 0)
|
||||||
|
corruptcheck_game_duke3d = !!atoi_safe(val);
|
||||||
if (readconfig(fp, "corruptcheck_heinum", val, VL) > 0)
|
if (readconfig(fp, "corruptcheck_heinum", val, VL) > 0)
|
||||||
corruptcheck_heinum = clamp(atoi_safe(val), 0, 2);
|
corruptcheck_heinum = clamp(atoi_safe(val), 0, 2);
|
||||||
if (readconfig(fp, "fixmaponsave_sprites", val, VL) > 0)
|
if (readconfig(fp, "fixmaponsave_sprites", val, VL) > 0)
|
||||||
|
@ -490,6 +492,9 @@ int32_t writesetup(const char *fn)
|
||||||
"; Ignore 'already referenced wall' warnings\n"
|
"; Ignore 'already referenced wall' warnings\n"
|
||||||
"corruptcheck_noalreadyrefd = %d\n"
|
"corruptcheck_noalreadyrefd = %d\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"; Flag Duke3D issues\n"
|
||||||
|
"corruptcheck_game_duke3d = %d\n"
|
||||||
|
"\n"
|
||||||
"; Auto-correct inconsistent ceilingstat/floorstat bit 2 and .heinum?\n"
|
"; Auto-correct inconsistent ceilingstat/floorstat bit 2 and .heinum?\n"
|
||||||
"; Set to 2, also warn on 'corruptcheck'.\n"
|
"; Set to 2, also warn on 'corruptcheck'.\n"
|
||||||
"corruptcheck_heinum = %d\n"
|
"corruptcheck_heinum = %d\n"
|
||||||
|
@ -626,7 +631,8 @@ int32_t writesetup(const char *fn)
|
||||||
msens, unrealedlook, pk_uedaccel, quickmapcycling,
|
msens, unrealedlook, pk_uedaccel, quickmapcycling,
|
||||||
sideview_reversehrot,
|
sideview_reversehrot,
|
||||||
revertCTRL,scrollamount,pk_turnaccel,pk_turndecel,autosave,autocorruptcheck,
|
revertCTRL,scrollamount,pk_turnaccel,pk_turndecel,autosave,autocorruptcheck,
|
||||||
corruptcheck_noalreadyrefd, corruptcheck_heinum, fixmaponsave_sprites, keeptexturestretch,
|
corruptcheck_noalreadyrefd, corruptcheck_game_duke3d,
|
||||||
|
corruptcheck_heinum, fixmaponsave_sprites, keeptexturestretch,
|
||||||
showheightindicators,showambiencesounds,pathsearchmode,
|
showheightindicators,showambiencesounds,pathsearchmode,
|
||||||
m32_2d3dmode,m32_2d3dsize,m32_2d3d.x, m32_2d3d.y,
|
m32_2d3dmode,m32_2d3dsize,m32_2d3d.x, m32_2d3d.y,
|
||||||
autogray, //showinnergray,
|
autogray, //showinnergray,
|
||||||
|
|
|
@ -8634,6 +8634,14 @@ static int32_t osdcmd_vars_pk(const osdfuncparm_t *parm)
|
||||||
return OSDCMD_OK;
|
return OSDCMD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Bstrcasecmp(parm->name, "corruptcheck_game_duke3d"))
|
||||||
|
{
|
||||||
|
corruptcheck_game_duke3d = !corruptcheck_game_duke3d;
|
||||||
|
OSD_Printf("%s Duke3D issues\n",
|
||||||
|
!corruptcheck_game_duke3d?"Ignore":"Regard");
|
||||||
|
return OSDCMD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (!Bstrcasecmp(parm->name, "corruptcheck_heinum"))
|
if (!Bstrcasecmp(parm->name, "corruptcheck_heinum"))
|
||||||
{
|
{
|
||||||
if (parm->numparms > 1)
|
if (parm->numparms > 1)
|
||||||
|
@ -9083,6 +9091,7 @@ static int32_t registerosdcommands(void)
|
||||||
OSD_RegisterFunction("show_heightindicators", "show_heightindicators {0, 1 or 2}: sets display of height indicators in 2D mode", osdcmd_vars_pk);
|
OSD_RegisterFunction("show_heightindicators", "show_heightindicators {0, 1 or 2}: sets display of height indicators in 2D mode", osdcmd_vars_pk);
|
||||||
OSD_RegisterFunction("show_ambiencesounds", "show_ambiencesounds {0, 1 or 2}: sets display of MUSICANDSFX circles in 2D mode", osdcmd_vars_pk);
|
OSD_RegisterFunction("show_ambiencesounds", "show_ambiencesounds {0, 1 or 2}: sets display of MUSICANDSFX circles in 2D mode", osdcmd_vars_pk);
|
||||||
OSD_RegisterFunction("corruptcheck_noalreadyrefd", "corruptcheck_noalreadyrefd: toggles ignoring of one-to-many red wall connections", osdcmd_vars_pk);
|
OSD_RegisterFunction("corruptcheck_noalreadyrefd", "corruptcheck_noalreadyrefd: toggles ignoring of one-to-many red wall connections", osdcmd_vars_pk);
|
||||||
|
OSD_RegisterFunction("corruptcheck_game_duke3d", "corruptcheck_game_duke3d: toggles ignoring of Duke3D issues", osdcmd_vars_pk);
|
||||||
OSD_RegisterFunction("corruptcheck_heinum", "corruptcheck_heinum: toggles auto-correcting inconsistent c/fstat bit 2 and heinum (2: also warn)", osdcmd_vars_pk);
|
OSD_RegisterFunction("corruptcheck_heinum", "corruptcheck_heinum: toggles auto-correcting inconsistent c/fstat bit 2 and heinum (2: also warn)", osdcmd_vars_pk);
|
||||||
OSD_RegisterFunction("keeptexturestretch", "keeptexturestretch: toggles keeping texture stretching when dragging wall vertices", osdcmd_vars_pk);
|
OSD_RegisterFunction("keeptexturestretch", "keeptexturestretch: toggles keeping texture stretching when dragging wall vertices", osdcmd_vars_pk);
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@ int32_t autosave=180;
|
||||||
|
|
||||||
int32_t autocorruptcheck;
|
int32_t autocorruptcheck;
|
||||||
int32_t corruptcheck_noalreadyrefd, corruptcheck_heinum=1;
|
int32_t corruptcheck_noalreadyrefd, corruptcheck_heinum=1;
|
||||||
|
int32_t corruptcheck_game_duke3d=1; // TODO: at startup, make conditional on which game we are editing for?
|
||||||
int32_t corrupt_tryfix_alt;
|
int32_t corrupt_tryfix_alt;
|
||||||
int32_t corruptlevel, numcorruptthings, corruptthings[MAXCORRUPTTHINGS];
|
int32_t corruptlevel, numcorruptthings, corruptthings[MAXCORRUPTTHINGS];
|
||||||
|
|
||||||
|
@ -1302,6 +1303,30 @@ end_wall_loop_checks:
|
||||||
CORRUPTCHK_PRINT(0, CORRUPT_SPRITE|i, "SPRITE[%d].PICNUM=%d out of range, resetting to 0", i, TrackerCast(sprite[i].picnum));
|
CORRUPTCHK_PRINT(0, CORRUPT_SPRITE|i, "SPRITE[%d].PICNUM=%d out of range, resetting to 0", i, TrackerCast(sprite[i].picnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (corruptcheck_game_duke3d)
|
||||||
|
{
|
||||||
|
const int32_t tilenum = sprite[i].picnum;
|
||||||
|
|
||||||
|
if (tilenum >= 1 && tilenum <= 9 && (sprite[i].cstat&48))
|
||||||
|
{
|
||||||
|
const int32_t onumct = numcorruptthings;
|
||||||
|
|
||||||
|
CORRUPTCHK_PRINT(1, CORRUPT_SPRITE|i, "%s sprite %d is not face-aligned",
|
||||||
|
names[tilenum], i);
|
||||||
|
|
||||||
|
if (onumct < MAXCORRUPTTHINGS)
|
||||||
|
{
|
||||||
|
if (tryfixing & (1ull<<onumct))
|
||||||
|
{
|
||||||
|
sprite[i].cstat &= ~(32+16);
|
||||||
|
OSD_Printf(CCHK_CORRECTED "auto-correction: cleared sprite[%d].cstat bits 16 and 32\n", i);
|
||||||
|
}
|
||||||
|
else if (1 >= printfromlev)
|
||||||
|
OSD_Printf(" suggest clearing sprite[%d].cstat bits 16 and 32\n", i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (klabs(sprite[i].x) > BXY_MAX || klabs(sprite[i].y) > BXY_MAX)
|
if (klabs(sprite[i].x) > BXY_MAX || klabs(sprite[i].y) > BXY_MAX)
|
||||||
{
|
{
|
||||||
const int32_t onumct = numcorruptthings;
|
const int32_t onumct = numcorruptthings;
|
||||||
|
|
Loading…
Reference in a new issue