mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 08:52:00 +00:00
shading changes and fixes for a few crashes
git-svn-id: https://svn.eduke32.com/eduke32@1657 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
d76817a361
commit
4c3c64286a
25 changed files with 302 additions and 140 deletions
|
@ -45,11 +45,32 @@ typedef struct
|
||||||
char *name;
|
char *name;
|
||||||
char *helpstr;
|
char *helpstr;
|
||||||
void *var;
|
void *var;
|
||||||
int32_t type; // see cvartype_t
|
int32_t type; // see cvartype_t
|
||||||
int32_t min;
|
int32_t min;
|
||||||
int32_t max; // for string, is the length
|
int32_t max; // for string, is the length
|
||||||
} cvar_t;
|
} cvar_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
char *helpstr;
|
||||||
|
void *var;
|
||||||
|
int32_t type; // see cvartype_t
|
||||||
|
int32_t min;
|
||||||
|
int32_t max; // for string, is the length
|
||||||
|
|
||||||
|
// everything before this point needs to match cvar_t
|
||||||
|
|
||||||
|
// default value for cvar, assigned when var is registered
|
||||||
|
union
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
uint32_t uint;
|
||||||
|
float f;
|
||||||
|
double d;
|
||||||
|
} dval;
|
||||||
|
} osdcvar_t;
|
||||||
|
|
||||||
enum osdflags_t
|
enum osdflags_t
|
||||||
{
|
{
|
||||||
OSD_INITIALIZED = 0x00000001,
|
OSD_INITIALIZED = 0x00000001,
|
||||||
|
|
|
@ -124,12 +124,13 @@ extern float fogresult, fogcol[4], fogtable[4*MAXPALOOKUPS];
|
||||||
|
|
||||||
static inline void fogcalc(const int32_t shade, const int32_t vis, const int32_t pal)
|
static inline void fogcalc(const int32_t shade, const int32_t vis, const int32_t pal)
|
||||||
{
|
{
|
||||||
float f = shade * 1.75f;
|
float f = (shade < 0) ? shade * 3.5f :
|
||||||
|
shade * .66f;
|
||||||
|
|
||||||
if (vis > 239) f = (float)(gvisibility*((vis-240+f)/(klabs(vis-256))));
|
f = (vis > 239) ? (float)(gvisibility*((vis-240+f)/(klabs(vis-256)))) :
|
||||||
else f = (float)(gvisibility*(vis+16+f));
|
(float)(gvisibility*(vis+16+f));
|
||||||
|
|
||||||
fogresult = clamp(f, 0.01f, 100.f);
|
fogresult = clamp(f, 0.0f, 100.f);
|
||||||
|
|
||||||
Bmemcpy(fogcol, &fogtable[pal<<2], sizeof(fogcol));
|
Bmemcpy(fogcol, &fogtable[pal<<2], sizeof(fogcol));
|
||||||
}
|
}
|
||||||
|
|
|
@ -429,7 +429,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
inittimer(TIMERINTSPERSECOND);
|
inittimer(TIMERINTSPERSECOND);
|
||||||
installusertimercallback(keytimerstuff);
|
installusertimercallback(keytimerstuff);
|
||||||
|
|
||||||
loadpics("tiles000.art",1048576*16);
|
loadpics("tiles000.art", 1048576*16);
|
||||||
loadnames();
|
loadnames();
|
||||||
|
|
||||||
Bstrcpy(kensig,"Uses BUILD technology by Ken Silverman");
|
Bstrcpy(kensig,"Uses BUILD technology by Ken Silverman");
|
||||||
|
|
|
@ -225,7 +225,7 @@ void agecache(void)
|
||||||
while(mutex_lock(&cachemutex));
|
while(mutex_lock(&cachemutex));
|
||||||
for (; cnt>=0; cnt--)
|
for (; cnt>=0; cnt--)
|
||||||
{
|
{
|
||||||
if ((((*cac[agecount].lock)-2)&255) < 198)
|
if (cac[agecount].lock && (((*cac[agecount].lock)-2)&255) < 198)
|
||||||
(*cac[agecount].lock)--;
|
(*cac[agecount].lock)--;
|
||||||
|
|
||||||
agecount--;
|
agecount--;
|
||||||
|
|
|
@ -139,7 +139,7 @@ int32_t loadsetup(const char *fn)
|
||||||
if (readconfig(fp, "mouse", val, VL) > 0) { if (Batoi(val) != 0) option[3] = 1; else option[3] = 0; }
|
if (readconfig(fp, "mouse", val, VL) > 0) { if (Batoi(val) != 0) option[3] = 1; else option[3] = 0; }
|
||||||
if (readconfig(fp, "bpp", val, VL) > 0) bppgame = Batoi(val);
|
if (readconfig(fp, "bpp", val, VL) > 0) bppgame = Batoi(val);
|
||||||
if (readconfig(fp, "vsync", val, VL) > 0) vsync = Batoi(val)?1:0;
|
if (readconfig(fp, "vsync", val, VL) > 0) vsync = Batoi(val)?1:0;
|
||||||
if (readconfig(fp, "editorgridextent", val, VL) > 0) editorgridextent = max(min(524288,Batoi(val)),65536);
|
if (readconfig(fp, "editorgridextent", val, VL) > 0) editorgridextent = max(min(262144,Batoi(val)),32768);
|
||||||
if (readconfig(fp, "grid", val, VL) > 0)
|
if (readconfig(fp, "grid", val, VL) > 0)
|
||||||
{
|
{
|
||||||
grid = Batoi(val);
|
grid = Batoi(val);
|
||||||
|
|
|
@ -1245,7 +1245,7 @@ static int32_t owallmost(int16_t *mostbuf, int32_t w, int32_t z)
|
||||||
//
|
//
|
||||||
// wallmost (internal)
|
// wallmost (internal)
|
||||||
//
|
//
|
||||||
int32_t wallmost(int16_t *mostbuf, int32_t w, int32_t sectnum, char dastat)
|
static int32_t wallmost(int16_t *mostbuf, int32_t w, int32_t sectnum, char dastat)
|
||||||
{
|
{
|
||||||
int32_t bad, i, j, t, y, z, inty, intz, xcross, yinc, fw;
|
int32_t bad, i, j, t, y, z, inty, intz, xcross, yinc, fw;
|
||||||
int32_t x1, y1, z1, x2, y2, z2, xv, yv, dx, dy, dasqr, oz1, oz2;
|
int32_t x1, y1, z1, x2, y2, z2, xv, yv, dx, dy, dasqr, oz1, oz2;
|
||||||
|
@ -3074,6 +3074,8 @@ static void drawsprite(int32_t snum)
|
||||||
spritenum = tspr->owner;
|
spritenum = tspr->owner;
|
||||||
cstat = tspr->cstat;
|
cstat = tspr->cstat;
|
||||||
|
|
||||||
|
if (tilenum < 0 || tilenum >= MAXSPRITES) return;
|
||||||
|
|
||||||
#ifdef SUPERBUILD
|
#ifdef SUPERBUILD
|
||||||
if ((cstat&48)==48) vtilenum = tilenum; // if the game wants voxels, it gets voxels
|
if ((cstat&48)==48) vtilenum = tilenum; // if the game wants voxels, it gets voxels
|
||||||
else if ((cstat&48)!=48 && (usevoxels) && (tiletovox[tilenum] != -1)
|
else if ((cstat&48)!=48 && (usevoxels) && (tiletovox[tilenum] != -1)
|
||||||
|
|
|
@ -54,7 +54,7 @@ extern int16_t numscans, numhits, numbunches;
|
||||||
extern palette_t palookupfog[MAXPALOOKUPS];
|
extern palette_t palookupfog[MAXPALOOKUPS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int32_t wallmost(int16_t *mostbuf, int32_t w, int32_t sectnum, char dastat);
|
// int32_t wallmost(int16_t *mostbuf, int32_t w, int32_t sectnum, char dastat);
|
||||||
int32_t wallfront(int32_t l1, int32_t l2);
|
int32_t wallfront(int32_t l1, int32_t l2);
|
||||||
int32_t animateoffs(int16_t tilenum, int16_t fakevar);
|
int32_t animateoffs(int16_t tilenum, int16_t fakevar);
|
||||||
|
|
||||||
|
|
|
@ -1649,7 +1649,8 @@ static int32_t kpegrend(const char *kfilebuf, int32_t kfilength,
|
||||||
{
|
{
|
||||||
while (curbits < 16) //Getbits
|
while (curbits < 16) //Getbits
|
||||||
{
|
{
|
||||||
ch = *kfileptr++; if (ch == 255) kfileptr++;
|
ch = *kfileptr++;
|
||||||
|
if (ch == 255) kfileptr++;
|
||||||
num = (num<<8)+((int32_t)ch); curbits += 8;
|
num = (num<<8)+((int32_t)ch); curbits += 8;
|
||||||
}
|
}
|
||||||
i = ((num>>(curbits-10))&1023);
|
i = ((num>>(curbits-10))&1023);
|
||||||
|
|
|
@ -120,7 +120,7 @@ static void (*_drawosdcursor)(int32_t, int32_t, int32_t, int32_t) = _internal_dr
|
||||||
static int32_t (*_getcolumnwidth)(int32_t) = _internal_getcolumnwidth;
|
static int32_t (*_getcolumnwidth)(int32_t) = _internal_getcolumnwidth;
|
||||||
static int32_t (*_getrowheight)(int32_t) = _internal_getrowheight;
|
static int32_t (*_getrowheight)(int32_t) = _internal_getrowheight;
|
||||||
|
|
||||||
static cvar_t *cvars = NULL;
|
static osdcvar_t *cvars = NULL;
|
||||||
static uint32_t osdnumcvars = 0;
|
static uint32_t osdnumcvars = 0;
|
||||||
static hashtable_t h_cvars = { MAXSYMBOLS<<1, NULL };
|
static hashtable_t h_cvars = { MAXSYMBOLS<<1, NULL };
|
||||||
|
|
||||||
|
@ -164,13 +164,59 @@ int32_t OSD_RegisterCvar(const cvar_t *cvar)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cvars = Brealloc(cvars, (osdnumcvars + 1) * sizeof(cvar_t));
|
cvars = (osdcvar_t *)Brealloc(cvars, (osdnumcvars + 1) * sizeof(osdcvar_t));
|
||||||
|
|
||||||
hash_add(&h_cvars, cvar->name, osdnumcvars);
|
hash_add(&h_cvars, cvar->name, osdnumcvars);
|
||||||
|
|
||||||
|
switch (cvar->type & (CVAR_BOOL|CVAR_INT|CVAR_UINT|CVAR_FLOAT|CVAR_DOUBLE))
|
||||||
|
{
|
||||||
|
case CVAR_BOOL:
|
||||||
|
case CVAR_INT:
|
||||||
|
cvars[osdnumcvars].dval.i = *(int32_t *)cvar->var;
|
||||||
|
break;
|
||||||
|
case CVAR_UINT:
|
||||||
|
cvars[osdnumcvars].dval.uint = *(uint32_t *)cvar->var;
|
||||||
|
break;
|
||||||
|
case CVAR_FLOAT:
|
||||||
|
cvars[osdnumcvars].dval.f = *(float *)cvar->var;
|
||||||
|
break;
|
||||||
|
case CVAR_DOUBLE:
|
||||||
|
cvars[osdnumcvars].dval.d = *(double *)cvar->var;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
Bmemcpy(&cvars[osdnumcvars++], cvar, sizeof(cvar_t));
|
Bmemcpy(&cvars[osdnumcvars++], cvar, sizeof(cvar_t));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t OSD_CvarModified(const osdcvar_t *cvar)
|
||||||
|
{
|
||||||
|
if ((osdflags & OSD_INITIALIZED) == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!cvar->var)
|
||||||
|
{
|
||||||
|
OSD_Printf("OSD_CvarModified(): null cvar?!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (cvar->type & (CVAR_BOOL|CVAR_INT|CVAR_UINT|CVAR_FLOAT|CVAR_DOUBLE))
|
||||||
|
{
|
||||||
|
case CVAR_BOOL:
|
||||||
|
case CVAR_INT:
|
||||||
|
return (cvar->dval.i != *(int32_t *)cvar->var);
|
||||||
|
case CVAR_UINT:
|
||||||
|
return (cvar->dval.uint != *(uint32_t *)cvar->var);
|
||||||
|
case CVAR_FLOAT:
|
||||||
|
return (cvar->dval.f != *(float *)cvar->var);
|
||||||
|
case CVAR_DOUBLE:
|
||||||
|
return (cvar->dval.d != *(double *)cvar->var);
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// color code format is as follows:
|
// color code format is as follows:
|
||||||
// ^## sets a color, where ## is the palette number
|
// ^## sets a color, where ## is the palette number
|
||||||
// ^S# sets a shade, range is 0-7 equiv to shades 0-14
|
// ^S# sets a shade, range is 0-7 equiv to shades 0-14
|
||||||
|
@ -199,9 +245,9 @@ const char * OSD_StripColors(char *out, const char *in)
|
||||||
in += 2;
|
in += 2;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
*(out++) = *in;
|
*(out++) = *(in++);
|
||||||
}
|
}
|
||||||
while (*(++in));
|
while (*in);
|
||||||
|
|
||||||
*out = '\0';
|
*out = '\0';
|
||||||
return (ptr);
|
return (ptr);
|
||||||
|
@ -527,7 +573,15 @@ static int32_t _internal_osdfunc_listsymbols(const osdfuncparm_t *parm)
|
||||||
{
|
{
|
||||||
if (i->func != OSD_UNALIASED)
|
if (i->func != OSD_UNALIASED)
|
||||||
{
|
{
|
||||||
OSD_Printf("%-*s",maxwidth,i->name);
|
int32_t j = hash_find(&h_cvars, i->name);
|
||||||
|
|
||||||
|
if (j != -1 && OSD_CvarModified(&cvars[j]))
|
||||||
|
{
|
||||||
|
OSD_Printf(OSDTEXT_RED "*");
|
||||||
|
OSD_Printf("%-*s",maxwidth-1,i->name);
|
||||||
|
}
|
||||||
|
else OSD_Printf("%-*s",maxwidth,i->name);
|
||||||
|
|
||||||
x += maxwidth;
|
x += maxwidth;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
@ -634,6 +688,28 @@ static int32_t osdcmd_cvar_set_osd(const osdfuncparm_t *parm)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t _internal_osdfunc_toggle(const osdfuncparm_t *parm)
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
|
if (parm->numparms != 1) return OSDCMD_SHOWHELP;
|
||||||
|
|
||||||
|
i = hash_find(&h_cvars, parm->parms[0]);
|
||||||
|
|
||||||
|
if (i == -1)
|
||||||
|
for (i = osdnumcvars-1; i >= 0; i--)
|
||||||
|
if (!Bstrcasecmp(parm->parms[0], cvars[i].name)) break;
|
||||||
|
|
||||||
|
if (i == -1 || (cvars[i].type & CVAR_BOOL) != CVAR_BOOL)
|
||||||
|
{
|
||||||
|
OSD_Printf("Bad cvar name or cvar not boolean\n");
|
||||||
|
return OSDCMD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(int32_t *)cvars[i].var = 1 - *(int32_t *)cvars[i].var;
|
||||||
|
return OSDCMD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// OSD_Init() -- Initializes the on-screen display
|
// OSD_Init() -- Initializes the on-screen display
|
||||||
//
|
//
|
||||||
|
@ -681,6 +757,7 @@ void OSD_Init(void)
|
||||||
OSD_RegisterFunction("help","help: displays help for the specified cvar or command; \"listsymbols\" to show all commands",_internal_osdfunc_help);
|
OSD_RegisterFunction("help","help: displays help for the specified cvar or command; \"listsymbols\" to show all commands",_internal_osdfunc_help);
|
||||||
OSD_RegisterFunction("history","history: displays the console command history",_internal_osdfunc_history);
|
OSD_RegisterFunction("history","history: displays the console command history",_internal_osdfunc_history);
|
||||||
OSD_RegisterFunction("listsymbols","listsymbols: lists all registered functions, cvars and aliases",_internal_osdfunc_listsymbols);
|
OSD_RegisterFunction("listsymbols","listsymbols: lists all registered functions, cvars and aliases",_internal_osdfunc_listsymbols);
|
||||||
|
OSD_RegisterFunction("toggle","toggle: toggles the value of a boolean cvar",_internal_osdfunc_toggle);
|
||||||
OSD_RegisterFunction("unalias","unalias: removes a command alias",_internal_osdfunc_unalias);
|
OSD_RegisterFunction("unalias","unalias: removes a command alias",_internal_osdfunc_unalias);
|
||||||
|
|
||||||
atexit(OSD_Cleanup);
|
atexit(OSD_Cleanup);
|
||||||
|
@ -2006,7 +2083,7 @@ void OSD_WriteCvars(FILE *fp)
|
||||||
|
|
||||||
for (i=0; i<osdnumcvars; i++)
|
for (i=0; i<osdnumcvars; i++)
|
||||||
{
|
{
|
||||||
if (!(cvars[i].type & CVAR_NOSAVE))
|
if (!(cvars[i].type & CVAR_NOSAVE) && OSD_CvarModified(&cvars[i]))
|
||||||
switch (cvars[i].type&(CVAR_FLOAT|CVAR_DOUBLE|CVAR_INT|CVAR_UINT|CVAR_BOOL|CVAR_STRING))
|
switch (cvars[i].type&(CVAR_FLOAT|CVAR_DOUBLE|CVAR_INT|CVAR_UINT|CVAR_BOOL|CVAR_STRING))
|
||||||
{
|
{
|
||||||
case CVAR_FLOAT:
|
case CVAR_FLOAT:
|
||||||
|
|
|
@ -892,7 +892,8 @@ void polymer_drawrooms(int32_t daposx, int32_t daposy, int32_t da
|
||||||
polymersearching = FALSE;
|
polymersearching = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
getzsofslope(dacursectnum, daposx, daposy, &cursectceilz, &cursectflorz);
|
if (dacursectnum > -1 && dacursectnum < numsectors)
|
||||||
|
getzsofslope(dacursectnum, daposx, daposy, &cursectceilz, &cursectflorz);
|
||||||
|
|
||||||
// external view (editor)
|
// external view (editor)
|
||||||
if ((dacursectnum < 0) || (dacursectnum >= numsectors) ||
|
if ((dacursectnum < 0) || (dacursectnum >= numsectors) ||
|
||||||
|
@ -3467,7 +3468,7 @@ static void polymer_drawmdsprite(spritetype *tspr)
|
||||||
color = mdspritematerial.diffusemodulation;
|
color = mdspritematerial.diffusemodulation;
|
||||||
|
|
||||||
color[0] = color[1] = color[2] =
|
color[0] = color[1] = color[2] =
|
||||||
((float)(numpalookups-min(max((tspr->shade*shadescale)+m->shadeoff,0),numpalookups)))/((float)numpalookups) * 0xFF;
|
((float)(numpalookups-min(max((tspr->shade * shadescale)+m->shadeoff,0),numpalookups)))/((float)numpalookups) * 0xFF;
|
||||||
|
|
||||||
if (!(hictinting[tspr->pal].f&4))
|
if (!(hictinting[tspr->pal].f&4))
|
||||||
{
|
{
|
||||||
|
@ -3819,7 +3820,7 @@ static void polymer_getbuildmaterial(_prmaterial* material, int16_t tile
|
||||||
material->diffusemodulation[0] =
|
material->diffusemodulation[0] =
|
||||||
material->diffusemodulation[1] =
|
material->diffusemodulation[1] =
|
||||||
material->diffusemodulation[2] =
|
material->diffusemodulation[2] =
|
||||||
((float)(numpalookups-min(max(shade*shadescale,0),numpalookups)))/((float)numpalookups) * 0xFF;
|
((float)(numpalookups-min(max((shade * shadescale),0),numpalookups)))/((float)numpalookups) * 0xFF;
|
||||||
|
|
||||||
if (pth->flags & 2)
|
if (pth->flags & 2)
|
||||||
{
|
{
|
||||||
|
|
|
@ -109,7 +109,7 @@ static double dxb1[MAXWALLSB], dxb2[MAXWALLSB];
|
||||||
#define LINTERPSIZ 4 //log2 of interpolation size. 4:pretty fast&acceptable quality, 0:best quality/slow!
|
#define LINTERPSIZ 4 //log2 of interpolation size. 4:pretty fast&acceptable quality, 0:best quality/slow!
|
||||||
#define DEPTHDEBUG 0 //1:render distance instead of texture, for debugging only!, 0:default
|
#define DEPTHDEBUG 0 //1:render distance instead of texture, for debugging only!, 0:default
|
||||||
|
|
||||||
float shadescale = 1.0f;
|
float shadescale = 1.3f;
|
||||||
|
|
||||||
double gyxscale, gxyaspect, gviewxrange, ghalfx, grhalfxdown10, grhalfxdown10x, ghoriz;
|
double gyxscale, gxyaspect, gviewxrange, ghalfx, grhalfxdown10, grhalfxdown10x, ghoriz;
|
||||||
double gcosang, gsinang, gcosang2, gsinang2;
|
double gcosang, gsinang, gcosang2, gsinang2;
|
||||||
|
@ -776,19 +776,21 @@ void polymost_glinit()
|
||||||
memcachesize = filelength(cachefilehandle);
|
memcachesize = filelength(cachefilehandle);
|
||||||
|
|
||||||
if (memcachesize > 0)
|
if (memcachesize > 0)
|
||||||
|
{
|
||||||
memcachedata = (uint8_t *)Brealloc(memcachedata, memcachesize);
|
memcachedata = (uint8_t *)Brealloc(memcachedata, memcachesize);
|
||||||
|
|
||||||
if (!memcachedata)
|
if (!memcachedata)
|
||||||
{
|
{
|
||||||
initprintf("Failed allocating %d bytes for memcache\n", memcachesize);
|
initprintf("Failed allocating %d bytes for memcache\n", memcachesize);
|
||||||
memcachesize = -1;
|
memcachesize = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcachesize > 0 && Bread(cachefilehandle, memcachedata, memcachesize) != memcachesize)
|
if (Bread(cachefilehandle, memcachedata, memcachesize) != memcachesize)
|
||||||
{
|
{
|
||||||
initprintf("Failed reading texcache into memcache!\n");
|
initprintf("Failed reading texcache into memcache!\n");
|
||||||
Bfree(memcachedata);
|
Bfree(memcachedata);
|
||||||
memcachesize = -1;
|
memcachesize = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
@ -2144,7 +2146,7 @@ void drawpoly(double *dpx, double *dpy, int32_t n, int32_t method)
|
||||||
|
|
||||||
{
|
{
|
||||||
float pc[4];
|
float pc[4];
|
||||||
f = ((float)(numpalookups-min(max(globalshade * shadescale,0),numpalookups)))/((float)numpalookups);
|
f = ((float)(numpalookups-min(max((globalshade * shadescale),0),numpalookups)))/((float)numpalookups);
|
||||||
pc[0] = pc[1] = pc[2] = f;
|
pc[0] = pc[1] = pc[2] = f;
|
||||||
switch (method&3)
|
switch (method&3)
|
||||||
{
|
{
|
||||||
|
@ -2423,7 +2425,7 @@ void drawpoly(double *dpx, double *dpy, int32_t n, int32_t method)
|
||||||
nguo = uu[0] - ox*ngux - oy*nguy;
|
nguo = uu[0] - ox*ngux - oy*nguy;
|
||||||
ngvo = vv[0] - ox*ngvx - oy*ngvy;
|
ngvo = vv[0] - ox*ngvx - oy*ngvy;
|
||||||
}
|
}
|
||||||
palptr = &palookup[globalpal][min(max(globalshade,0),numpalookups-1)<<8]; //<-need to make shade not static!
|
palptr = &palookup[globalpal][min(max((int32_t)(globalshade * shadescale),0),numpalookups-1)<<8]; //<-need to make shade not static!
|
||||||
|
|
||||||
tsizxm1 = tsizx-1; xmodnice = (!(tsizxm1&tsizx));
|
tsizxm1 = tsizx-1; xmodnice = (!(tsizxm1&tsizx));
|
||||||
tsizym1 = tsizy-1; ymulnice = (!(tsizym1&tsizy));
|
tsizym1 = tsizy-1; ymulnice = (!(tsizym1&tsizy));
|
||||||
|
@ -2434,7 +2436,7 @@ void drawpoly(double *dpx, double *dpy, int32_t n, int32_t method)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dacol = palookup[0][(int32_t)(*(char *)(waloff[globalpicnum]))+(min(max(globalshade,0),numpalookups-1)<<8)];
|
dacol = palookup[0][(int32_t)(*(char *)(waloff[globalpicnum]))+(min(max((int32_t)(globalshade * shadescale),0),numpalookups-1)<<8)];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (grhalfxdown10x < 0) //Hack for mirrors
|
if (grhalfxdown10x < 0) //Hack for mirrors
|
||||||
|
@ -4346,74 +4348,78 @@ void polymost_drawrooms()
|
||||||
|
|
||||||
hitallsprites = 1;
|
hitallsprites = 1;
|
||||||
hitscan((const vec3_t *)&vect,globalcursectnum, //Start position
|
hitscan((const vec3_t *)&vect,globalcursectnum, //Start position
|
||||||
vx>>12,vy>>12,vz>>8,&hitinfo,0xffff0030);
|
vx>>12,vy>>12,vz>>8,&hitinfo,0xffff0030);
|
||||||
getzsofslope(hitinfo.hitsect,hitinfo.pos.x,hitinfo.pos.y,&cz,&fz);
|
|
||||||
hitallsprites = 0;
|
|
||||||
|
|
||||||
searchsector = hitinfo.hitsect;
|
if (hitinfo.hitsect != -1) // if hitsect is -1, hitscan overflowed somewhere
|
||||||
if (hitinfo.pos.z<cz) searchstat = 1; else if (hitinfo.pos.z>fz) searchstat = 2; else if (hitinfo.hitwall >= 0)
|
|
||||||
{
|
{
|
||||||
searchbottomwall = searchwall = hitinfo.hitwall; searchstat = 0;
|
getzsofslope(hitinfo.hitsect,hitinfo.pos.x,hitinfo.pos.y,&cz,&fz);
|
||||||
if (wall[hitinfo.hitwall].nextwall >= 0)
|
hitallsprites = 0;
|
||||||
|
|
||||||
|
searchsector = hitinfo.hitsect;
|
||||||
|
if (hitinfo.pos.z<cz) searchstat = 1; else if (hitinfo.pos.z>fz) searchstat = 2; else if (hitinfo.hitwall >= 0)
|
||||||
|
{
|
||||||
|
searchbottomwall = searchwall = hitinfo.hitwall; searchstat = 0;
|
||||||
|
if (wall[hitinfo.hitwall].nextwall >= 0)
|
||||||
|
{
|
||||||
|
int32_t cz, fz;
|
||||||
|
getzsofslope(wall[hitinfo.hitwall].nextsector,hitinfo.pos.x,hitinfo.pos.y,&cz,&fz);
|
||||||
|
if (hitinfo.pos.z > fz)
|
||||||
|
{
|
||||||
|
if (wall[hitinfo.hitwall].cstat&2) //'2' bottoms of walls
|
||||||
|
searchbottomwall = wall[hitinfo.hitwall].nextwall;
|
||||||
|
}
|
||||||
|
else if ((hitinfo.pos.z > cz) && (wall[hitinfo.hitwall].cstat&(16+32))) //masking or 1-way
|
||||||
|
searchstat = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (hitinfo.hitsprite >= 0) { searchwall = hitinfo.hitsprite; searchstat = 3; }
|
||||||
|
else
|
||||||
{
|
{
|
||||||
int32_t cz, fz;
|
int32_t cz, fz;
|
||||||
getzsofslope(wall[hitinfo.hitwall].nextsector,hitinfo.pos.x,hitinfo.pos.y,&cz,&fz);
|
getzsofslope(hitinfo.hitsect,hitinfo.pos.x,hitinfo.pos.y,&cz,&fz);
|
||||||
if (hitinfo.pos.z > fz)
|
if ((hitinfo.pos.z<<1) < cz+fz) searchstat = 1; else searchstat = 2;
|
||||||
{
|
//if (vz < 0) searchstat = 1; else searchstat = 2; //Won't work for slopes :/
|
||||||
if (wall[hitinfo.hitwall].cstat&2) //'2' bottoms of walls
|
|
||||||
searchbottomwall = wall[hitinfo.hitwall].nextwall;
|
|
||||||
}
|
|
||||||
else if ((hitinfo.pos.z > cz) && (wall[hitinfo.hitwall].cstat&(16+32))) //masking or 1-way
|
|
||||||
searchstat = 4;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (hitinfo.hitsprite >= 0) { searchwall = hitinfo.hitsprite; searchstat = 3; }
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int32_t cz, fz;
|
|
||||||
getzsofslope(hitinfo.hitsect,hitinfo.pos.x,hitinfo.pos.y,&cz,&fz);
|
|
||||||
if ((hitinfo.pos.z<<1) < cz+fz) searchstat = 1; else searchstat = 2;
|
|
||||||
//if (vz < 0) searchstat = 1; else searchstat = 2; //Won't work for slopes :/
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((searchstat==1 || searchstat==2) && searchsector>=0)
|
if ((searchstat==1 || searchstat==2) && searchsector>=0)
|
||||||
{
|
|
||||||
int32_t scrv[2] = {(vx>>12), (vy>>12)};
|
|
||||||
int32_t scrv_r[2] = {scrv[1], -scrv[0]};
|
|
||||||
walltype *wal = &wall[sector[searchsector].wallptr];
|
|
||||||
int32_t wdistsq, bestwdistsq=0x7fffffff;
|
|
||||||
int16_t k, bestk=-1;
|
|
||||||
|
|
||||||
for (k=0; k<sector[searchsector].wallnum; k++)
|
|
||||||
{
|
{
|
||||||
int32_t w1[2] = {wal[k].x, wal[k].y};
|
int32_t scrv[2] = {(vx>>12), (vy>>12)};
|
||||||
int32_t w2[2] = {wall[wal[k].point2].x, wall[wal[k].point2].y};
|
int32_t scrv_r[2] = {scrv[1], -scrv[0]};
|
||||||
int32_t w21[2] = {w1[0]-w2[0], w1[1]-w2[1]};
|
walltype *wal = &wall[sector[searchsector].wallptr];
|
||||||
int32_t pw1[2] = {w1[0]-hitinfo.pos.x, w1[1]-hitinfo.pos.y};
|
int32_t wdistsq, bestwdistsq=0x7fffffff;
|
||||||
int32_t pw2[2] = {w2[0]-hitinfo.pos.x, w2[1]-hitinfo.pos.y};
|
int16_t k, bestk=-1;
|
||||||
float w1d = (float)(scrv_r[0]*pw1[0] + scrv_r[1]*pw1[1]);
|
|
||||||
float w2d = (float)(scrv_r[0]*pw2[0] + scrv_r[1]*pw2[1]);
|
|
||||||
int32_t ptonline[2], scrp[2];
|
|
||||||
|
|
||||||
w2d = -w2d;
|
for (k=0; k<sector[searchsector].wallnum; k++)
|
||||||
if ((w1d==0 && w2d==0) || (w1d<0 || w2d<0))
|
|
||||||
continue;
|
|
||||||
ptonline[0] = (int32_t)(w2[0]+(w2d/(w1d+w2d))*w21[0]);
|
|
||||||
ptonline[1] = (int32_t)(w2[1]+(w2d/(w1d+w2d))*w21[1]);
|
|
||||||
scrp[0] = ptonline[0]-vect.x;
|
|
||||||
scrp[1] = ptonline[1]-vect.y;
|
|
||||||
if (scrv[0]*scrp[0] + scrv[1]*scrp[1] <= 0)
|
|
||||||
continue;
|
|
||||||
wdistsq = scrp[0]*scrp[0] + scrp[1]*scrp[1];
|
|
||||||
if (wdistsq < bestwdistsq)
|
|
||||||
{
|
{
|
||||||
bestk = k;
|
int32_t w1[2] = {wal[k].x, wal[k].y};
|
||||||
bestwdistsq = wdistsq;
|
int32_t w2[2] = {wall[wal[k].point2].x, wall[wal[k].point2].y};
|
||||||
}
|
int32_t w21[2] = {w1[0]-w2[0], w1[1]-w2[1]};
|
||||||
}
|
int32_t pw1[2] = {w1[0]-hitinfo.pos.x, w1[1]-hitinfo.pos.y};
|
||||||
|
int32_t pw2[2] = {w2[0]-hitinfo.pos.x, w2[1]-hitinfo.pos.y};
|
||||||
|
float w1d = (float)(scrv_r[0]*pw1[0] + scrv_r[1]*pw1[1]);
|
||||||
|
float w2d = (float)(scrv_r[0]*pw2[0] + scrv_r[1]*pw2[1]);
|
||||||
|
int32_t ptonline[2], scrp[2];
|
||||||
|
|
||||||
if (bestk >= 0)
|
w2d = -w2d;
|
||||||
searchwall = sector[searchsector].wallptr + bestk;
|
if ((w1d==0 && w2d==0) || (w1d<0 || w2d<0))
|
||||||
|
continue;
|
||||||
|
ptonline[0] = (int32_t)(w2[0]+(w2d/(w1d+w2d))*w21[0]);
|
||||||
|
ptonline[1] = (int32_t)(w2[1]+(w2d/(w1d+w2d))*w21[1]);
|
||||||
|
scrp[0] = ptonline[0]-vect.x;
|
||||||
|
scrp[1] = ptonline[1]-vect.y;
|
||||||
|
if (scrv[0]*scrp[0] + scrv[1]*scrp[1] <= 0)
|
||||||
|
continue;
|
||||||
|
wdistsq = scrp[0]*scrp[0] + scrp[1]*scrp[1];
|
||||||
|
if (wdistsq < bestwdistsq)
|
||||||
|
{
|
||||||
|
bestk = k;
|
||||||
|
bestwdistsq = wdistsq;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bestk >= 0)
|
||||||
|
searchwall = sector[searchsector].wallptr + bestk;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
searchit = 0;
|
searchit = 0;
|
||||||
}
|
}
|
||||||
|
@ -4710,7 +4716,7 @@ void polymost_drawsprite(int32_t snum)
|
||||||
int32_t oldsizx, oldsizy;
|
int32_t oldsizx, oldsizy;
|
||||||
int32_t tsizx, tsizy;
|
int32_t tsizx, tsizy;
|
||||||
tspr = tspriteptr[snum];
|
tspr = tspriteptr[snum];
|
||||||
if (tspr->owner < 0 || tspr->picnum < 0) return;
|
if (tspr->owner < 0 || tspr->picnum < 0 || tspr->picnum >= MAXTILES) return;
|
||||||
|
|
||||||
globalpicnum = tspr->picnum;
|
globalpicnum = tspr->picnum;
|
||||||
globalshade = tspr->shade;
|
globalshade = tspr->shade;
|
||||||
|
@ -5681,7 +5687,7 @@ void polymost_fillpolygon(int32_t npoints)
|
||||||
pth = gltexcache(globalpicnum,globalpal,0);
|
pth = gltexcache(globalpicnum,globalpal,0);
|
||||||
bglBindTexture(GL_TEXTURE_2D, pth ? pth->glpic : 0);
|
bglBindTexture(GL_TEXTURE_2D, pth ? pth->glpic : 0);
|
||||||
|
|
||||||
f = ((float)(numpalookups-min(max(globalshade * shadescale,0),numpalookups)))/((float)numpalookups);
|
f = ((float)(numpalookups-min(max((globalshade * shadescale),0),numpalookups)))/((float)numpalookups);
|
||||||
switch ((globalorientation>>7)&3)
|
switch ((globalorientation>>7)&3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
|
|
@ -176,7 +176,7 @@ BOOL RI_CaptureInput(BOOL grab, HWND target)
|
||||||
|
|
||||||
raw[1].usUsagePage = 0x01;
|
raw[1].usUsagePage = 0x01;
|
||||||
raw[1].usUsage = 0x06;
|
raw[1].usUsage = 0x06;
|
||||||
raw[1].dwFlags = RIDEV_NOLEGACY;
|
raw[1].dwFlags = 0;
|
||||||
raw[1].hwndTarget = target;
|
raw[1].hwndTarget = target;
|
||||||
|
|
||||||
mousegrab = grab;
|
mousegrab = grab;
|
||||||
|
|
|
@ -13,6 +13,10 @@
|
||||||
#endif
|
#endif
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include <crtdbg.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "dxdidf.h" // comment this out if c_dfDI* is being reported as multiply defined
|
#include "dxdidf.h" // comment this out if c_dfDI* is being reported as multiply defined
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
@ -306,6 +310,10 @@ int32_t WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, in
|
||||||
|
|
||||||
hInstance = hInst;
|
hInstance = hInst;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
_CrtSetDbgFlag(_CRTDBG_CHECK_ALWAYS_DF);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!CheckWinVersion() || hPrevInst)
|
if (!CheckWinVersion() || hPrevInst)
|
||||||
{
|
{
|
||||||
MessageBox(0, "This application requires Windows XP or better to run.",
|
MessageBox(0, "This application requires Windows XP or better to run.",
|
||||||
|
|
|
@ -150,9 +150,6 @@
|
||||||
<ClInclude Include="build\include\msvc\stdint.h">
|
<ClInclude Include="build\include\msvc\stdint.h">
|
||||||
<Filter>build\headers\MSVC</Filter>
|
<Filter>build\headers\MSVC</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="build\src\engine_priv.h">
|
|
||||||
<Filter>build\source</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="source\_functio.h">
|
<ClInclude Include="source\_functio.h">
|
||||||
<Filter>eduke32\headers</Filter>
|
<Filter>eduke32\headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -318,6 +315,9 @@
|
||||||
<ClInclude Include="build\include\rawinput.h">
|
<ClInclude Include="build\include\rawinput.h">
|
||||||
<Filter>build\headers</Filter>
|
<Filter>build\headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="build\src\engine_priv.h">
|
||||||
|
<Filter>build\headers</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="build\src\a-c.c">
|
<ClCompile Include="build\src\a-c.c">
|
||||||
|
|
|
@ -2840,13 +2840,10 @@ static int32_t m32gettile(int32_t idInitialTile)
|
||||||
idle_waitevent_timeout(500);
|
idle_waitevent_timeout(500);
|
||||||
// SDL seems to miss mousewheel events when rotated slowly.
|
// SDL seems to miss mousewheel events when rotated slowly.
|
||||||
// These kludgy things seem to make it better, but I'm not sure.
|
// These kludgy things seem to make it better, but I'm not sure.
|
||||||
idle();
|
|
||||||
idle();
|
|
||||||
|
|
||||||
if (handleevents())
|
if (handleevents())
|
||||||
quitevent = 0;
|
quitevent = 0;
|
||||||
|
|
||||||
|
|
||||||
getmousevalues(&mousedx,&mousedy,&bstatus);
|
getmousevalues(&mousedx,&mousedy,&bstatus);
|
||||||
searchx += mousedx;
|
searchx += mousedx;
|
||||||
searchy += mousedy;
|
searchy += mousedy;
|
||||||
|
@ -3988,7 +3985,7 @@ static void Keys3d(void)
|
||||||
drawtileinfo("Clipboard",3,124,temppicnum,tempshade,temppal,tempcstat,templotag,temphitag,tempextra);
|
drawtileinfo("Clipboard",3,124,temppicnum,tempshade,temppal,tempcstat,templotag,temphitag,tempextra);
|
||||||
}// end if usedcount
|
}// end if usedcount
|
||||||
|
|
||||||
// if (infobox&1)
|
if (searchsector > -1 && searchsector < numsectors)
|
||||||
{
|
{
|
||||||
char lines[8][64];
|
char lines[8][64];
|
||||||
int32_t dist, height1=0,height2=0,height3=0, num=0;
|
int32_t dist, height1=0,height2=0,height3=0, num=0;
|
||||||
|
|
|
@ -198,7 +198,7 @@ void CONFIG_SetDefaults(void)
|
||||||
ud.config.AmbienceToggle = 1;
|
ud.config.AmbienceToggle = 1;
|
||||||
ud.config.AutoAim = 1;
|
ud.config.AutoAim = 1;
|
||||||
ud.config.FXDevice = 0;
|
ud.config.FXDevice = 0;
|
||||||
ud.config.FXVolume = 220;
|
ud.config.FXVolume = 225;
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
ud.config.MixRate = 44100;
|
ud.config.MixRate = 44100;
|
||||||
#else
|
#else
|
||||||
|
@ -208,7 +208,7 @@ void CONFIG_SetDefaults(void)
|
||||||
ud.config.MouseDeadZone = 0;
|
ud.config.MouseDeadZone = 0;
|
||||||
ud.config.MusicDevice = 0;
|
ud.config.MusicDevice = 0;
|
||||||
ud.config.MusicToggle = 1;
|
ud.config.MusicToggle = 1;
|
||||||
ud.config.MusicVolume = 200;
|
ud.config.MusicVolume = 195;
|
||||||
g_myAimMode = g_player[0].ps->aim_mode = 1;
|
g_myAimMode = g_player[0].ps->aim_mode = 1;
|
||||||
ud.config.NumBits = 16;
|
ud.config.NumBits = 16;
|
||||||
ud.config.NumChannels = 2;
|
ud.config.NumChannels = 2;
|
||||||
|
@ -1017,7 +1017,7 @@ int32_t CONFIG_GetMapBestTime(char *mapname)
|
||||||
strcpy(m, mapname);
|
strcpy(m, mapname);
|
||||||
p = strrchr(m, '/');
|
p = strrchr(m, '/');
|
||||||
if (!p) p = strrchr(m, '\\');
|
if (!p) p = strrchr(m, '\\');
|
||||||
if (p) strcpy(m, p);
|
if (p) Bmemmove(m, p, Bstrlen(p)+1);//strcpy(m, p);
|
||||||
for (p=m; *p; p++) *p = tolower(*p);
|
for (p=m; *p; p++) *p = tolower(*p);
|
||||||
|
|
||||||
// cheap hack because SCRIPT_GetNumber doesn't like the slashes
|
// cheap hack because SCRIPT_GetNumber doesn't like the slashes
|
||||||
|
|
|
@ -9495,7 +9495,7 @@ static void G_ShowParameterHelp(void)
|
||||||
"-l#\t\tWarp to level #, see -v\n"
|
"-l#\t\tWarp to level #, see -v\n"
|
||||||
"-map [file.map]\tLoads a map\n"
|
"-map [file.map]\tLoads a map\n"
|
||||||
"-m\t\tDisable monsters\n"
|
"-m\t\tDisable monsters\n"
|
||||||
"-nam/-ww2gi\tRun in NAM or WW2GI-compatible mode\n"
|
"-nam\t\tRun in NAM/NAPALM compatibility mode\n"
|
||||||
"-r\t\tRecord demo\n"
|
"-r\t\tRecord demo\n"
|
||||||
"-s#\t\tSet skill level (1-4)\n"
|
"-s#\t\tSet skill level (1-4)\n"
|
||||||
"-server\t\tStart a multiplayer game for other players to join\n"
|
"-server\t\tStart a multiplayer game for other players to join\n"
|
||||||
|
@ -9508,6 +9508,7 @@ static void G_ShowParameterHelp(void)
|
||||||
#endif
|
#endif
|
||||||
"-u#########\tUser's favorite weapon order (default: 3425689071)\n"
|
"-u#########\tUser's favorite weapon order (default: 3425689071)\n"
|
||||||
"-v#\t\tWarp to volume #, see -l\n"
|
"-v#\t\tWarp to volume #, see -l\n"
|
||||||
|
"-ww2gi\t\tRun in WW2GI compatibility mode\n"
|
||||||
"-x[game.con]\tLoad custom CON script\n"
|
"-x[game.con]\tLoad custom CON script\n"
|
||||||
"-#\t\tLoad and run a game from slot # (0-9)\n"
|
"-#\t\tLoad and run a game from slot # (0-9)\n"
|
||||||
// "\n-?/--help\tDisplay this help message and exit\n"
|
// "\n-?/--help\tDisplay this help message and exit\n"
|
||||||
|
@ -9527,17 +9528,14 @@ static void G_ShowDebugHelp(void)
|
||||||
"\n"
|
"\n"
|
||||||
"-a\t\tUse fake player AI (fake multiplayer only)\n"
|
"-a\t\tUse fake player AI (fake multiplayer only)\n"
|
||||||
"-cachesize #\tSets cache size, in Kb\n"
|
"-cachesize #\tSets cache size, in Kb\n"
|
||||||
"-fNUM\t\tSend fewer packets in multiplayer (1, 2, 4) (deprecated)\n"
|
|
||||||
"-game_dir [dir]\tDuke3d_w32 compatibility option, see -j\n"
|
"-game_dir [dir]\tDuke3d_w32 compatibility option, see -j\n"
|
||||||
"-gamegrp \tSelects which file to use as main grp\n"
|
"-gamegrp \tSelects which file to use as main grp\n"
|
||||||
"-i#\t\tUse networking mode (1/0)\n"
|
|
||||||
"-name [name]\tPlayer name in multiplay\n"
|
"-name [name]\tPlayer name in multiplay\n"
|
||||||
"-nD\t\tDump default gamevars to gamevars.txt\n"
|
"-nD\t\tDump default gamevars to gamevars.txt\n"
|
||||||
"-noautoload\tDisable loading content from autoload dir\n"
|
"-noautoload\tDisable loading content from autoload dir\n"
|
||||||
"-nologo\t\tSkip the logo anim\n"
|
"-nologo\t\tSkip the logo anim\n"
|
||||||
"-ns/-nm\t\tDisable sound or music\n"
|
"-ns/-nm\t\tDisable sound or music\n"
|
||||||
"-q#\t\tFake multiplayer with # (2-8) players\n"
|
"-q#\t\tFake multiplayer with # (2-8) players\n"
|
||||||
"-w\t\tShow coordinates\n"
|
|
||||||
"-z#/-condebug\tEnable line-by-line CON compile debugging at level #\n"
|
"-z#/-condebug\tEnable line-by-line CON compile debugging at level #\n"
|
||||||
;
|
;
|
||||||
#if defined RENDERTYPEWIN
|
#if defined RENDERTYPEWIN
|
||||||
|
@ -11121,9 +11119,8 @@ void app_main(int32_t argc,const char **argv)
|
||||||
getcwd(g_rootDir,BMAX_PATH);
|
getcwd(g_rootDir,BMAX_PATH);
|
||||||
strcat(g_rootDir,"/");
|
strcat(g_rootDir,"/");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OSD_SetLogFile("eduke32.log");
|
|
||||||
OSD_SetParameters(0,0, 0,12, 2,12);
|
OSD_SetParameters(0,0, 0,12, 2,12);
|
||||||
|
OSD_SetLogFile("eduke32.log");
|
||||||
OSD_SetFunctions(
|
OSD_SetFunctions(
|
||||||
GAME_drawosdchar,
|
GAME_drawosdchar,
|
||||||
GAME_drawosdstr,
|
GAME_drawosdstr,
|
||||||
|
|
|
@ -3866,8 +3866,8 @@ nullquote:
|
||||||
|
|
||||||
if (asize > 0)
|
if (asize > 0)
|
||||||
{
|
{
|
||||||
OSD_Printf(OSDTEXT_GREEN "CON_RESIZEARRAY: resizing array %s from %d to %d\n",
|
/*OSD_Printf(OSDTEXT_GREEN "CON_RESIZEARRAY: resizing array %s from %d to %d\n",
|
||||||
aGameArrays[j].szLabel, aGameArrays[j].size, asize / sizeof(int32_t));
|
aGameArrays[j].szLabel, aGameArrays[j].size, asize / sizeof(int32_t));*/
|
||||||
aGameArrays[j].plValues=Brealloc(aGameArrays[j].plValues, asize);
|
aGameArrays[j].plValues=Brealloc(aGameArrays[j].plValues, asize);
|
||||||
aGameArrays[j].size = asize / sizeof(int32_t);
|
aGameArrays[j].size = asize / sizeof(int32_t);
|
||||||
kread(fil, aGameArrays[j].plValues, asize);
|
kread(fil, aGameArrays[j].plValues, asize);
|
||||||
|
@ -3911,7 +3911,7 @@ nullquote:
|
||||||
|
|
||||||
if (asize > 0)
|
if (asize > 0)
|
||||||
{
|
{
|
||||||
OSD_Printf(OSDTEXT_GREEN "CON_RESIZEARRAY: resizing array %s from %d to %d\n", aGameArrays[j].szLabel, aGameArrays[j].size, asize);
|
/*OSD_Printf(OSDTEXT_GREEN "CON_RESIZEARRAY: resizing array %s from %d to %d\n", aGameArrays[j].szLabel, aGameArrays[j].size, asize);*/
|
||||||
aGameArrays[j].plValues=Brealloc(aGameArrays[j].plValues, sizeof(int32_t) * asize);
|
aGameArrays[j].plValues=Brealloc(aGameArrays[j].plValues, sizeof(int32_t) * asize);
|
||||||
aGameArrays[j].size = asize;
|
aGameArrays[j].size = asize;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,11 +43,15 @@ static void Gv_Free(void) /* called from Gv_ReadSave() and Gv_ResetVars() */
|
||||||
Bfree(aGameVars[i].val.plValues);
|
Bfree(aGameVars[i].val.plValues);
|
||||||
aGameVars[i].val.plValues=NULL;
|
aGameVars[i].val.plValues=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
aGameVars[i].dwFlags |= GAMEVAR_RESET;
|
aGameVars[i].dwFlags |= GAMEVAR_RESET;
|
||||||
|
|
||||||
if (i >= MAXGAMEARRAYS)
|
if (i >= MAXGAMEARRAYS)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (aGameArrays[i].plValues)
|
if (aGameArrays[i].plValues)
|
||||||
Bfree(aGameArrays[i].plValues);
|
Bfree(aGameArrays[i].plValues);
|
||||||
|
|
||||||
aGameArrays[i].plValues=NULL;
|
aGameArrays[i].plValues=NULL;
|
||||||
aGameArrays[i].bReset=1;
|
aGameArrays[i].bReset=1;
|
||||||
}
|
}
|
||||||
|
@ -680,17 +684,17 @@ void __fastcall Gv_SetVar(register int32_t id, register int32_t lValue, register
|
||||||
}
|
}
|
||||||
|
|
||||||
badvarid:
|
badvarid:
|
||||||
OSD_Printf(CON_ERROR "Gv_SetVar(): tried to set invalid gamevar ID (%d) from sprite %d (%d), player %d\n",
|
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid gamevar (%d) from sprite %d (%d), player %d\n",
|
||||||
g_errorLineNum,keyw[g_tw],id,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
|
g_errorLineNum,keyw[g_tw],id,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
badplayer:
|
badplayer:
|
||||||
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid player (%d) for per-player gamevar %s from sprite %d, player %d\n",
|
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid player (%d) for gamevar %s from sprite %d, player %d\n",
|
||||||
g_errorLineNum,keyw[g_tw],iPlayer,aGameVars[id].szLabel,vm.g_i,vm.g_p);
|
g_errorLineNum,keyw[g_tw],iPlayer,aGameVars[id].szLabel,vm.g_i,vm.g_p);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
badactor:
|
badactor:
|
||||||
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid sprite (%d) for per-actor gamevar %s from sprite %d (%d), player %d\n",
|
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid actor (%d) for gamevar %s from sprite %d (%d), player %d\n",
|
||||||
g_errorLineNum,keyw[g_tw],iActor,aGameVars[id].szLabel,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
|
g_errorLineNum,keyw[g_tw],iActor,aGameVars[id].szLabel,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -798,9 +802,11 @@ void __fastcall Gv_SetVarX(register int32_t id, register int32_t lValue)
|
||||||
aGameVars[id].val.lValue=lValue;
|
aGameVars[id].val.lValue=lValue;
|
||||||
return;
|
return;
|
||||||
case GAMEVAR_PERPLAYER:
|
case GAMEVAR_PERPLAYER:
|
||||||
|
if (vm.g_p < 0 || vm.g_p > MAXPLAYERS-1) goto badplayer;
|
||||||
aGameVars[id].val.plValues[vm.g_p]=lValue;
|
aGameVars[id].val.plValues[vm.g_p]=lValue;
|
||||||
return;
|
return;
|
||||||
case GAMEVAR_PERACTOR:
|
case GAMEVAR_PERACTOR:
|
||||||
|
if (vm.g_i < 0 || vm.g_i > MAXSPRITES-1) goto badactor;
|
||||||
aGameVars[id].val.plValues[vm.g_i]=lValue;
|
aGameVars[id].val.plValues[vm.g_i]=lValue;
|
||||||
return;
|
return;
|
||||||
case GAMEVAR_INTPTR:
|
case GAMEVAR_INTPTR:
|
||||||
|
@ -813,6 +819,16 @@ void __fastcall Gv_SetVarX(register int32_t id, register int32_t lValue)
|
||||||
*((uint8_t*)aGameVars[id].val.lValue)=(uint8_t)lValue;
|
*((uint8_t*)aGameVars[id].val.lValue)=(uint8_t)lValue;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
badplayer:
|
||||||
|
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid player (%d) for gamevar %s\n",
|
||||||
|
g_errorLineNum,keyw[g_tw],vm.g_p,aGameVars[id].szLabel);
|
||||||
|
return;
|
||||||
|
|
||||||
|
badactor:
|
||||||
|
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid actor (%d) for gamevar %s\n",
|
||||||
|
g_errorLineNum,keyw[g_tw],vm.g_i,aGameVars[id].szLabel);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Gv_GetVarByLabel(const char *szGameLabel, int32_t lDefault, int32_t iActor, int32_t iPlayer)
|
int32_t Gv_GetVarByLabel(const char *szGameLabel, int32_t lDefault, int32_t iActor, int32_t iPlayer)
|
||||||
|
|
|
@ -2755,7 +2755,8 @@ int32_t MV_Init
|
||||||
{
|
{
|
||||||
status = MV_ErrorCode;
|
status = MV_ErrorCode;
|
||||||
|
|
||||||
free(MV_Voices);
|
if (MV_Voices)
|
||||||
|
free(MV_Voices);
|
||||||
MV_Voices = NULL;
|
MV_Voices = NULL;
|
||||||
MV_HarshClipTable = NULL;
|
MV_HarshClipTable = NULL;
|
||||||
MV_TotalMemory = 0;
|
MV_TotalMemory = 0;
|
||||||
|
@ -2834,7 +2835,8 @@ int32_t MV_Shutdown
|
||||||
SoundDriver_Shutdown();
|
SoundDriver_Shutdown();
|
||||||
|
|
||||||
// Free any voices we allocated
|
// Free any voices we allocated
|
||||||
free(MV_Voices);
|
if (MV_Voices)
|
||||||
|
free(MV_Voices);
|
||||||
MV_Voices = NULL;
|
MV_Voices = NULL;
|
||||||
MV_TotalMemory = 0;
|
MV_TotalMemory = 0;
|
||||||
|
|
||||||
|
|
|
@ -4475,9 +4475,7 @@ cheat_for_port_credits:
|
||||||
{
|
{
|
||||||
enabled = (ud.config.SoundToggle && ud.config.FXDevice >= 0);
|
enabled = (ud.config.SoundToggle && ud.config.FXDevice >= 0);
|
||||||
l = ud.config.FXVolume;
|
l = ud.config.FXVolume;
|
||||||
ud.config.FXVolume >>= 2;
|
_bar(1,d+8,yy+7, &ud.config.FXVolume,15,probey==io,enabled?MENUHIGHLIGHT(io):UNSELMENUSHADE,!enabled,0,255);
|
||||||
_bar(1,d+8,yy+7, &ud.config.FXVolume,4,probey==io,enabled?MENUHIGHLIGHT(io):UNSELMENUSHADE,!enabled,0,64);
|
|
||||||
ud.config.FXVolume <<= 2;
|
|
||||||
if (l != ud.config.FXVolume)
|
if (l != ud.config.FXVolume)
|
||||||
FX_SetVolume((int16_t) ud.config.FXVolume);
|
FX_SetVolume((int16_t) ud.config.FXVolume);
|
||||||
}
|
}
|
||||||
|
@ -4511,9 +4509,7 @@ cheat_for_port_credits:
|
||||||
{
|
{
|
||||||
enabled = (ud.config.MusicToggle && ud.config.MusicDevice >= 0);
|
enabled = (ud.config.MusicToggle && ud.config.MusicDevice >= 0);
|
||||||
l = ud.config.MusicVolume;
|
l = ud.config.MusicVolume;
|
||||||
ud.config.MusicVolume >>= 2;
|
_bar(1,d+8,yy+7, &ud.config.MusicVolume,15,probey==io,enabled?MENUHIGHLIGHT(io):UNSELMENUSHADE,!enabled,0,255);
|
||||||
_bar(1,d+8,yy+7, &ud.config.MusicVolume,4,probey==io,enabled?MENUHIGHLIGHT(io):UNSELMENUSHADE,!enabled,0,64);
|
|
||||||
ud.config.MusicVolume <<= 2;
|
|
||||||
if (l != ud.config.MusicVolume)
|
if (l != ud.config.MusicVolume)
|
||||||
S_MusicVolume((int16_t) ud.config.MusicVolume);
|
S_MusicVolume((int16_t) ud.config.MusicVolume);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1433,7 +1433,7 @@ int32_t registerosdcommands(void)
|
||||||
{ "osdhightile", "osdhightile: enable/disable hires art replacements for console text", (void*)&osdhightile, CVAR_BOOL, 0, 1 },
|
{ "osdhightile", "osdhightile: enable/disable hires art replacements for console text", (void*)&osdhightile, CVAR_BOOL, 0, 1 },
|
||||||
|
|
||||||
{ "r_drawweapon", "r_drawweapon: enable/disable weapon drawing", (void*)&ud.drawweapon, CVAR_INT, 0, 2 },
|
{ "r_drawweapon", "r_drawweapon: enable/disable weapon drawing", (void*)&ud.drawweapon, CVAR_INT, 0, 2 },
|
||||||
{ "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_INT, 0, 2 },
|
{ "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_BOOL, 0, 1 },
|
||||||
{ "r_shadows", "r_shadows: enable/disable sprite and model shadows", (void*)&ud.shadows, CVAR_BOOL, 0, 1 },
|
{ "r_shadows", "r_shadows: enable/disable sprite and model shadows", (void*)&ud.shadows, CVAR_BOOL, 0, 1 },
|
||||||
{ "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 1 },
|
{ "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 1 },
|
||||||
|
|
||||||
|
|
|
@ -2027,12 +2027,31 @@ static void G_DrawTileScaled(int32_t x, int32_t y, int32_t tilenum, int32_t shad
|
||||||
|
|
||||||
static void G_DrawWeaponTile(int32_t x, int32_t y, int32_t tilenum, int32_t shade, int32_t orientation, int32_t p)
|
static void G_DrawWeaponTile(int32_t x, int32_t y, int32_t tilenum, int32_t shade, int32_t orientation, int32_t p)
|
||||||
{
|
{
|
||||||
|
static int32_t shadef = 0, palf = 0;
|
||||||
|
|
||||||
|
// basic fading between player weapon shades
|
||||||
|
if (shadef != shade && (!p || palf == p))
|
||||||
|
{
|
||||||
|
shadef += (shade-shadef)>>2;
|
||||||
|
|
||||||
|
if (!((shade-shadef)>>2))
|
||||||
|
{
|
||||||
|
shadef += (shade-shadef)>>1;
|
||||||
|
if (!((shade-shadef)>>1))
|
||||||
|
shadef = shade;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
shadef = shade;
|
||||||
|
|
||||||
|
palf = p;
|
||||||
|
|
||||||
switch (ud.drawweapon)
|
switch (ud.drawweapon)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
case 1:
|
case 1:
|
||||||
G_DrawTileScaled(x,y,tilenum,shade,orientation,p);
|
G_DrawTileScaled(x,y,tilenum,shadef,orientation,p);
|
||||||
return;
|
return;
|
||||||
case 2:
|
case 2:
|
||||||
switch (g_currentweapon)
|
switch (g_currentweapon)
|
||||||
|
@ -5355,10 +5374,10 @@ HORIZONLY:
|
||||||
if (!A_CheckSoundPlaying(p->i,DUKE_ONWATER))
|
if (!A_CheckSoundPlaying(p->i,DUKE_ONWATER))
|
||||||
A_PlaySound(DUKE_ONWATER,p->i);
|
A_PlaySound(DUKE_ONWATER,p->i);
|
||||||
|
|
||||||
if (p->cursectnum != s->sectnum)
|
if (p->cursectnum >=0 && p->cursectnum != s->sectnum)
|
||||||
changespritesect(p->i,p->cursectnum);
|
changespritesect(p->i, p->cursectnum);
|
||||||
|
|
||||||
if (ud.clipping == 0)
|
if (p->cursectnum >= 0 && ud.clipping == 0)
|
||||||
{
|
{
|
||||||
j = (pushmove((vec3_t *)p,&p->cursectnum,164L,(4L<<8),(4L<<8),CLIPMASK0) < 0 && A_GetFurthestAngle(p->i,8) < 512);
|
j = (pushmove((vec3_t *)p,&p->cursectnum,164L,(4L<<8),(4L<<8),CLIPMASK0) < 0 && A_GetFurthestAngle(p->i,8) < 512);
|
||||||
|
|
||||||
|
|
|
@ -316,7 +316,7 @@ static void G_PrecacheSounds(void)
|
||||||
if (ud.config.FXDevice < 0) return;
|
if (ud.config.FXDevice < 0) return;
|
||||||
j = 0;
|
j = 0;
|
||||||
|
|
||||||
for (i=MAXSOUNDS; i>=0; i--)
|
for (i=MAXSOUNDS-1; i>=0; i--)
|
||||||
if (g_sounds[i].ptr == 0)
|
if (g_sounds[i].ptr == 0)
|
||||||
{
|
{
|
||||||
j++;
|
j++;
|
||||||
|
|
|
@ -519,7 +519,7 @@ int32_t G_ActivateWarpElevators(int32_t s,int32_t d) //Parm = sectoreffectornum
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void G_OperateSectors(int32_t sn,int32_t ii)
|
void G_OperateSectors(int32_t sn, int32_t ii)
|
||||||
{
|
{
|
||||||
int32_t j=0, l, q, startwall, endwall;
|
int32_t j=0, l, q, startwall, endwall;
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
@ -726,11 +726,6 @@ void G_OperateSectors(int32_t sn,int32_t ii)
|
||||||
|
|
||||||
case 29:
|
case 29:
|
||||||
|
|
||||||
if (sptr->lotag&0x8000)
|
|
||||||
j = sector[nextsectorneighborz(sn,sptr->ceilingz,1,1)].floorz;
|
|
||||||
else
|
|
||||||
j = sector[nextsectorneighborz(sn,sptr->ceilingz,-1,-1)].ceilingz;
|
|
||||||
|
|
||||||
i = headspritestat[STAT_EFFECTOR]; //Effectors
|
i = headspritestat[STAT_EFFECTOR]; //Effectors
|
||||||
while (i >= 0)
|
while (i >= 0)
|
||||||
{
|
{
|
||||||
|
@ -745,11 +740,34 @@ void G_OperateSectors(int32_t sn,int32_t ii)
|
||||||
i = nextspritestat[i];
|
i = nextspritestat[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
A_CallSound(sn, ii);
|
||||||
|
|
||||||
sptr->lotag ^= 0x8000;
|
sptr->lotag ^= 0x8000;
|
||||||
|
|
||||||
SetAnimation(sn,&sptr->ceilingz,j,sptr->extra);
|
if (sptr->lotag&0x8000)
|
||||||
|
{
|
||||||
|
j = nextsectorneighborz(sn,sptr->ceilingz,-1,-1);
|
||||||
|
if (j == -1) j = nextsectorneighborz(sn,sptr->ceilingz,1,1);
|
||||||
|
if (j == -1)
|
||||||
|
{
|
||||||
|
OSD_Printf("WARNING: ST29: null sector!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
j = sector[j].ceilingz;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
j = nextsectorneighborz(sn,sptr->ceilingz,1,1);
|
||||||
|
if (j == -1) j = nextsectorneighborz(sn,sptr->ceilingz,-1,-1);
|
||||||
|
if (j == -1)
|
||||||
|
{
|
||||||
|
OSD_Printf("WARNING: ST29: null sector!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
j = sector[j].floorz;
|
||||||
|
}
|
||||||
|
|
||||||
A_CallSound(sn,ii);
|
SetAnimation(sn,&sptr->ceilingz,j,sptr->extra);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue