- Added Skulltag's REDMAP and GREENMAP.

- Fixed: The PlayerSpeedTrail must copy the player's scaling information
  (from Skulltag)
- Added r_maxparticles CVAR from Skulltag.
- Changed PCX loader so that it always loads the last 768 bytes of 8 bit graphics as a palette

SVN r447 (trunk)
This commit is contained in:
Christoph Oelckers 2007-01-09 16:32:44 +00:00
parent 82ba0fb189
commit 1cd8370327
10 changed files with 115 additions and 9 deletions

View File

@ -1,3 +1,11 @@
January 9, 2007 (Changes by Graf Zahl)
- Added Skulltag's REDMAP and GREENMAP.
- Fixed: The PlayerSpeedTrail must copy the player's scaling information
(from Skulltag)
- Added r_maxparticles CVAR from Skulltag.
- Changed PCX loader so that it always loads the last 768 bytes of 8 bit graphics
as a palette
January 8, 2007 January 8, 2007
- Added escape code support to the echo CCMD, so you can use colors with it. - Added escape code support to the echo CCMD, so you can use colors with it.
- Changed the color scheme for the startup log to light text on a dark - Changed the color scheme for the startup log to light text on a dark

View File

@ -99,11 +99,27 @@ void APowerup::Tick ()
if (EffectTics > BLINKTHRESHOLD || (EffectTics & 8)) if (EffectTics > BLINKTHRESHOLD || (EffectTics & 8))
{ {
if (BlendColor == INVERSECOLOR) Owner->player->fixedcolormap = INVERSECOLORMAP; if (BlendColor == INVERSECOLOR)
else if (BlendColor == GOLDCOLOR) Owner->player->fixedcolormap = GOLDCOLORMAP; {
Owner->player->fixedcolormap = INVERSECOLORMAP;
}
else if (BlendColor == GOLDCOLOR)
{
Owner->player->fixedcolormap = GOLDCOLORMAP;
}
else if (BlendColor == REDCOLOR)
{
Owner->player->fixedcolormap = REDCOLORMAP;
}
else if (BlendColor == GREENCOLOR)
{
Owner->player->fixedcolormap = GREENCOLORMAP;
}
} }
else if ((BlendColor == INVERSECOLOR && Owner->player->fixedcolormap == INVERSECOLORMAP) || else if ((BlendColor == INVERSECOLOR && Owner->player->fixedcolormap == INVERSECOLORMAP) ||
(BlendColor == GOLDCOLOR && Owner->player->fixedcolormap == GOLDCOLORMAP)) (BlendColor == GOLDCOLOR && Owner->player->fixedcolormap == GOLDCOLORMAP) ||
(BlendColor == REDCOLOR && Owner->player->fixedcolormap == REDCOLORMAP) ||
(BlendColor == GREENCOLOR && Owner->player->fixedcolormap == GREENCOLORMAP))
{ {
Owner->player->fixedcolormap = 0; Owner->player->fixedcolormap = 0;
} }
@ -138,7 +154,11 @@ PalEntry APowerup::GetBlend ()
if (EffectTics <= BLINKTHRESHOLD && !(EffectTics & 8)) if (EffectTics <= BLINKTHRESHOLD && !(EffectTics & 8))
return 0; return 0;
if (BlendColor == INVERSECOLOR || BlendColor == GOLDCOLOR) if (BlendColor == INVERSECOLOR ||
BlendColor == GOLDCOLOR ||
// [BC] HAX!
BlendColor == REDCOLOR ||
BlendColor == GREENCOLOR)
return 0; return 0;
return BlendColor; return BlendColor;
@ -1024,6 +1044,11 @@ void APowerSpeed::DoEffect ()
speedMo->sprite = Owner->sprite; speedMo->sprite = Owner->sprite;
speedMo->frame = Owner->frame; speedMo->frame = Owner->frame;
speedMo->floorclip = Owner->floorclip; speedMo->floorclip = Owner->floorclip;
// [BC] Also get the scale from the owner.
speedMo->scaleX = Owner->scaleX;
speedMo->scaleY = Owner->scaleY;
if (Owner == players[consoleplayer].camera && if (Owner == players[consoleplayer].camera &&
!(Owner->player->cheats & CF_CHASECAM)) !(Owner->player->cheats & CF_CHASECAM))
{ {

View File

@ -7,6 +7,10 @@
#define INVERSECOLOR 0x00345678 #define INVERSECOLOR 0x00345678
#define GOLDCOLOR 0x009abcde #define GOLDCOLOR 0x009abcde
// [BC] More hacks!
#define REDCOLOR 0x00beefee
#define GREENCOLOR 0x00beefad
#define STREAM_ENUM(e) \ #define STREAM_ENUM(e) \
inline FArchive &operator<< (FArchive &arc, e &i) \ inline FArchive &operator<< (FArchive &arc, e &i) \
{ \ { \

View File

@ -1160,6 +1160,14 @@ void R_SetupFrame (AActor *actor)
fixedcolormap = InverseColormap; fixedcolormap = InverseColormap;
break; break;
case REDCOLORMAP:
fixedcolormap = RedColormap;
break;
case GREENCOLORMAP:
fixedcolormap = GreenColormap;
break;
case GOLDCOLORMAP: case GOLDCOLORMAP:
fixedcolormap = GoldColormap; fixedcolormap = GoldColormap;
break; break;

View File

@ -91,6 +91,8 @@ extern bool r_dontmaplines;
#define INVERSECOLORMAP 32 #define INVERSECOLORMAP 32
#define GOLDCOLORMAP 33 #define GOLDCOLORMAP 33
#define REDCOLORMAP 34
#define GREENCOLORMAP 35
// The size of a single colormap, in bits // The size of a single colormap, in bits
#define COLORMAPSHIFT 8 #define COLORMAPSHIFT 8

View File

@ -2119,15 +2119,34 @@ void R_DrawMasked (void)
// [RH] Particle functions // [RH] Particle functions
// //
// [BC] Allow the maximum number of particles to be specified by a cvar (so people
// with lots of nice hardware can have lots of particles!).
CUSTOM_CVAR( Int, r_maxparticles, 4000, CVAR_ARCHIVE )
{
if ( self == 0 )
self = 4000;
else if ( self < 100 )
self = 100;
if ( gamestate != GS_STARTUP )
{
R_DeinitParticles( );
R_InitParticles( );
}
}
void R_InitParticles () void R_InitParticles ()
{ {
char *i; char *i;
if ((i = Args.CheckValue ("-numparticles"))) if ((i = Args.CheckValue ("-numparticles")))
NumParticles = atoi (i); NumParticles = atoi (i);
if (NumParticles == 0) // [BC] Use r_maxparticles now.
NumParticles = 4000; else
else if (NumParticles < 100) NumParticles = r_maxparticles;
// This should be good, but eh...
if ( NumParticles < 100 )
NumParticles = 100; NumParticles = 100;
Particles = new particle_t[NumParticles]; Particles = new particle_t[NumParticles];

View File

@ -360,8 +360,9 @@ void FPCXTexture::MakeTexture()
BYTE c; BYTE c;
lump.Seek(-769, SEEK_END); lump.Seek(-769, SEEK_END);
lump >> c; lump >> c;
if (c !=0x0c) memcpy(PaletteMap, GrayMap, 256); // Fallback for files without palette //if (c !=0x0c) memcpy(PaletteMap, GrayMap, 256); // Fallback for files without palette
else for(int i=0;i<256;i++) //else
for(int i=0;i<256;i++)
{ {
BYTE r,g,b; BYTE r,g,b;
lump >> r >> g >> b; lump >> r >> g >> b;

View File

@ -3716,6 +3716,17 @@ static void PowerupColor (APowerupGiver *defaults, Baggage &bag)
defaults->BlendColor = GOLDCOLOR; defaults->BlendColor = GOLDCOLOR;
return; return;
} }
// [BC] Yay, more hacks.
else if ( SC_Compare( "REDMAP" ))
{
defaults->BlendColor = REDCOLOR;
return;
}
else if ( SC_Compare( "GREENMAP" ))
{
defaults->BlendColor = GREENCOLOR;
return;
}
int c = V_GetColor(NULL, sc_String); int c = V_GetColor(NULL, sc_String);
r=RPART(c); r=RPART(c);

View File

@ -61,6 +61,9 @@ FDynamicColormap NormalLight;
FPalette GPalette; FPalette GPalette;
BYTE InverseColormap[NUMCOLORMAPS*256]; BYTE InverseColormap[NUMCOLORMAPS*256];
BYTE GoldColormap[NUMCOLORMAPS*256]; BYTE GoldColormap[NUMCOLORMAPS*256];
// [BC] New Skulltag colormaps.
BYTE RedColormap[NUMCOLORMAPS*256];
BYTE GreenColormap[NUMCOLORMAPS*256];
int Near255; int Near255;
static void FreeSpecialLights();; static void FreeSpecialLights();;
@ -410,6 +413,28 @@ void InitPalette ()
*shade++ = ColorMatcher.Pick ( *shade++ = ColorMatcher.Pick (
MIN (255, (intensity+intensity/2)>>8), intensity>>8, 0); MIN (255, (intensity+intensity/2)>>8), intensity>>8, 0);
} }
// [BC] Build the Doomsphere colormap. It is red!
shade = RedColormap;
for (c = 0; c < 256; c++)
{
intensity = ((GPalette.BaseColors[c].r * 77 +
GPalette.BaseColors[c].g * 143 +
GPalette.BaseColors[c].b * 37));
*shade++ = ColorMatcher.Pick (
MIN( 255, ( intensity + ( intensity / 2 )) >> 8 ), 0, 0 );
}
// [BC] Build the Guardsphere colormap. It's a greenish-white kind of thing.
shade = GreenColormap;
for (c = 0; c < 256; c++)
{
intensity = GPalette.BaseColors[c].r * 77 +
GPalette.BaseColors[c].g * 143 +
GPalette.BaseColors[c].b * 37;
*shade++ = ColorMatcher.Pick (
MIN( 255, ( intensity + ( intensity / 2 )) >> 8 ), MIN( 255, ( intensity + ( intensity / 2 )) >> 8 ), intensity>>8 );
}
} }
extern "C" extern "C"

View File

@ -81,6 +81,9 @@ struct FDynamicColormap
extern BYTE InverseColormap[NUMCOLORMAPS*256]; extern BYTE InverseColormap[NUMCOLORMAPS*256];
extern BYTE GoldColormap[NUMCOLORMAPS*256]; extern BYTE GoldColormap[NUMCOLORMAPS*256];
// [BC] New Skulltag colormaps.
extern BYTE RedColormap[NUMCOLORMAPS*256];
extern BYTE GreenColormap[NUMCOLORMAPS*256];
extern FPalette GPalette; extern FPalette GPalette;
extern "C" { extern "C" {
extern FDynamicColormap NormalLight; extern FDynamicColormap NormalLight;