mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
Mapster32: honor "blocking color" declared with DEF 'spritecol' et al.
Meaning tilegroup's 'colors' directive. Also, to the packaged tiles.cfg, add a description of how to emulate the earlier Mapster32 sprite coloring for one tile group. git-svn-id: https://svn.eduke32.com/eduke32@5429 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
ff87574df2
commit
f8076f9207
5 changed files with 30 additions and 18 deletions
|
@ -461,6 +461,8 @@ FORCE_INLINE void inpclamp(int32_t *x, int32_t mi, int32_t ma)
|
|||
|
||||
#define drawtranspixel(p, col) drawpixel(p, blendtable[0][(readpixel(p) * 256) + col])
|
||||
|
||||
// Timed offset for Mapster32 color index cycling.
|
||||
// Range: 0 .. 16
|
||||
#define M32_THROB klabs(sintable[((totalclock << 4) & 2047)] >> 10)
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -3291,8 +3291,11 @@ static void drawspritelabel(int i)
|
|||
|
||||
// int const blocking = (sprite[i].cstat & 1);
|
||||
|
||||
// KEEPINSYNC drawscreen_drawsprite()
|
||||
uint8_t const spritecol = spritecol2d[sprite[i].picnum][0];
|
||||
int col = spritecol ? editorcolors[spritecol] : getspritecol(i);
|
||||
uint8_t const blockingSpriteCol = spritecol2d[sprite[i].picnum][1];
|
||||
int col = spritecol ? editorcolors[(sprite[i].cstat&1) ? blockingSpriteCol : spritecol] :
|
||||
getspritecol(i);
|
||||
|
||||
if (show2dsprite[i>>3]&pow2char[i&7])
|
||||
col = editorcolors[14] - (M32_THROB>>1);
|
||||
|
@ -3759,7 +3762,7 @@ void overheadeditor(void)
|
|||
}
|
||||
|
||||
drawlinebetween(&v1, &v2, !hlp ? 8 :
|
||||
editorcolors[wal->nextwall >= 0 ? 33 : 7],
|
||||
editorcolors[wal->nextwall >= 0 ? 12 : 7],
|
||||
0x11111111);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17320,11 +17320,12 @@ static void drawscreen_drawsprite(int32_t j, int32_t posxe, int32_t posye, int32
|
|||
int col;
|
||||
|
||||
const spritetype *const spr = &sprite[j];
|
||||
int16_t const hitblocking = (spr->cstat&256);
|
||||
int16_t const blocking = (spr->cstat&1), hitblocking = (spr->cstat&256);
|
||||
int16_t const flooraligned = (spr->cstat&32), wallaligned = (spr->cstat&16);
|
||||
|
||||
int16_t const angofs = m32_sideview ? m32_sideang : 0;
|
||||
|
||||
// KEEPINSYNC build.c: drawspritelabel()
|
||||
if (spr->sectnum<0)
|
||||
col = editorcolors[4]; // red
|
||||
else
|
||||
|
@ -17332,16 +17333,9 @@ static void drawscreen_drawsprite(int32_t j, int32_t posxe, int32_t posye, int32
|
|||
uint8_t const spritecol = spritecol2d[spr->picnum][0];
|
||||
|
||||
if (spritecol)
|
||||
col = spritecol; // XXX: should be editorcolors[spritecol]
|
||||
col = editorcolors[blocking ? spritecol2d[spr->picnum][1] : spritecol];
|
||||
else
|
||||
col = getspritecol(j);
|
||||
#if 0
|
||||
else if (spr->cstat&1)
|
||||
{
|
||||
uint8_t const blockingSpriteCol = spritecol2d[spr->picnum][1];
|
||||
col = blockingSpriteCol ? blockingSpriteCol : 5;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (editstatus == 1)
|
||||
|
@ -17356,12 +17350,7 @@ static void drawscreen_drawsprite(int32_t j, int32_t posxe, int32_t posye, int32
|
|||
else // if (highlightcnt > 0)
|
||||
{
|
||||
if (show2dsprite[j>>3]&pow2char[j&7])
|
||||
{
|
||||
col = editorcolors[14];
|
||||
|
||||
// if ((totalclock & 16) == 0)
|
||||
col -= (M32_THROB>>1);
|
||||
}
|
||||
col = editorcolors[14] - (M32_THROB>>1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,21 @@ tilegroup "Actors"
|
|||
{
|
||||
hotkey "A"
|
||||
|
||||
// NOTE: colors specified here (as well as in the first argument to the DEF
|
||||
// commands '2dcol' and '2dcolidxrange') refer to Mapster32's editorcolor[]
|
||||
// index. They can be viewed with "set showpal 1" assuming that a.m32 has
|
||||
// been loaded.
|
||||
//
|
||||
// The actual color indices will be offset in the range [0 .. 4] when the
|
||||
// mouse hovers near them.
|
||||
//
|
||||
// For example, under the Duke3D palette, one can create a color scheme
|
||||
// similar to earlier Mapster32 builds (non-blocking sprites have an orange
|
||||
// tint, blocking ones are purple) by declaring in a loaded DEF file
|
||||
// 2dcolidxrange 33 33 255
|
||||
// which maps editorcolor[] indices 33 through 255 to the same actual color
|
||||
// indices, and then setting here:
|
||||
// colors 139 231
|
||||
colors 31 31
|
||||
|
||||
tiles
|
||||
|
|
|
@ -7847,6 +7847,7 @@ static void InitCustomColors(void)
|
|||
vgapal16[31*4+1] = 180; // green
|
||||
vgapal16[31*4+2] = 240; // red
|
||||
|
||||
// UNUSED?
|
||||
vgapal16[39*4+0] = 144;
|
||||
vgapal16[39*4+1] = 212;
|
||||
vgapal16[39*4+2] = 252;
|
||||
|
@ -7880,10 +7881,12 @@ static void InitCustomColors(void)
|
|||
vgapal16[26*4+1] = 96;
|
||||
vgapal16[26*4+2] = 96;
|
||||
|
||||
// UNUSED?
|
||||
vgapal16[33*4+0] = 0; //60; // blue
|
||||
vgapal16[33*4+1] = 0; //120; // green
|
||||
vgapal16[33*4+2] = 192; //180; // red
|
||||
|
||||
// UNUSED?
|
||||
vgapal16[41*4+0] = 0; //96;
|
||||
vgapal16[41*4+1] = 0; //160;
|
||||
vgapal16[41*4+2] = 252; //192;
|
||||
|
|
Loading…
Reference in a new issue