- added Gez's fixed palette flashes for Hexen.

SVN r3585 (trunk)
This commit is contained in:
Christoph Oelckers 2012-04-22 07:58:04 +00:00
parent 8b875bc32a
commit 44519f3972
4 changed files with 61 additions and 6 deletions

View file

@ -38,7 +38,21 @@ public:
} }
PalEntry GetBlend () PalEntry GetBlend ()
{ {
return PalEntry (CHolyCount * 128 / 3, 131, 131, 131); if (paletteflash & PF_HEXENWEAPONS)
{
if (CHolyCount == 3)
return PalEntry(128, 70, 70, 70);
else if (CHolyCount == 2)
return PalEntry(128, 100, 100, 100);
else if (CHolyCount == 1)
return PalEntry(128, 130, 130, 130);
else
return PalEntry(0, 0, 0, 0);
}
else
{
return PalEntry (CHolyCount * 128 / 3, 131, 131, 131);
}
} }
BYTE CHolyCount; BYTE CHolyCount;
}; };

View file

@ -3,6 +3,13 @@
#include "d_player.h" #include "d_player.h"
EXTERN_CVAR (Int, paletteflash)
enum PaletteFlashFlags
{
PF_HEXENWEAPONS = 1,
PF_SPECIALDAMAGE = 2,
};
class AHolySpirit : public AActor class AHolySpirit : public AActor
{ {
DECLARE_CLASS (AHolySpirit, AActor) DECLARE_CLASS (AHolySpirit, AActor)

View file

@ -36,7 +36,21 @@ public:
} }
PalEntry GetBlend () PalEntry GetBlend ()
{ {
return PalEntry (MStaffCount * 128 / 3, 151, 110, 0); if (paletteflash & PF_HEXENWEAPONS)
{
if (MStaffCount == 3)
return PalEntry(128, 100, 73, 0);
else if (MStaffCount == 2)
return PalEntry(128, 125, 92, 0);
else if (MStaffCount == 1)
return PalEntry(128, 150, 110, 0);
else
return PalEntry(0, 0, 0, 0);
}
else
{
return PalEntry (MStaffCount * 128 / 3, 151, 110, 0);
}
} }
BYTE MStaffCount; BYTE MStaffCount;
}; };

View file

@ -52,6 +52,7 @@
#include "v_palette.h" #include "v_palette.h"
#include "d_player.h" #include "d_player.h"
#include "farchive.h" #include "farchive.h"
#include "a_hexenglobal.h"
#include "../version.h" #include "../version.h"
@ -86,6 +87,8 @@ static int CrosshairNum;
int BaseBlendR, BaseBlendG, BaseBlendB; int BaseBlendR, BaseBlendG, BaseBlendB;
float BaseBlendA; float BaseBlendA;
CVAR (Int, paletteflash, 0, CVAR_ARCHIVE)
// Stretch status bar to full screen width? // Stretch status bar to full screen width?
CUSTOM_CVAR (Bool, st_scale, true, CVAR_ARCHIVE) CUSTOM_CVAR (Bool, st_scale, true, CVAR_ARCHIVE)
{ {
@ -1530,7 +1533,7 @@ void DBaseStatusBar::BlendView (float blend[4])
AddBlend (BaseBlendR / 255.f, BaseBlendG / 255.f, BaseBlendB / 255.f, BaseBlendA, blend); AddBlend (BaseBlendR / 255.f, BaseBlendG / 255.f, BaseBlendB / 255.f, BaseBlendA, blend);
// [RH] All powerups can effect the screen blending now // [RH] All powerups can affect the screen blending now
for (AInventory *item = CPlayer->mo->Inventory; item != NULL; item = item->Inventory) for (AInventory *item = CPlayer->mo->Inventory; item != NULL; item = item->Inventory)
{ {
PalEntry color = item->GetBlend (); PalEntry color = item->GetBlend ();
@ -1566,7 +1569,7 @@ void DBaseStatusBar::BlendView (float blend[4])
if (cnt > 228) if (cnt > 228)
cnt = 228; cnt = 228;
AddBlend (painFlash.r / 255.f, painFlash.g / 255.f, painFlash.b / 255.f, cnt / 255.f, blend); AddBlend (painFlash.r / 255.f, painFlash.g / 255.f, painFlash.b / 255.f, cnt / 255.f, blend);
} }
} }
@ -1574,11 +1577,21 @@ void DBaseStatusBar::BlendView (float blend[4])
// exact numbers to use here, so I've had to guess by looking at how they // exact numbers to use here, so I've had to guess by looking at how they
// affect the white color in Hexen's palette and picking an alpha value // affect the white color in Hexen's palette and picking an alpha value
// that seems reasonable. // that seems reasonable.
// [Gez] The exact values could be obtained by looking how they affect
// each color channel in Hexen's palette.
if (CPlayer->poisoncount) if (CPlayer->poisoncount)
{ {
cnt = MIN (CPlayer->poisoncount, 64); cnt = MIN (CPlayer->poisoncount, 64);
AddBlend (0.04f, 0.2571f, 0.f, cnt/93.2571428571f, blend); if (paletteflash & PF_SPECIALDAMAGE)
{
AddBlend(44/255.f, 92/255.f, 36/255.f, ((cnt + 7) >> 3) * 0.1f, blend);
}
else
{
AddBlend (0.04f, 0.2571f, 0.f, cnt/93.2571428571f, blend);
}
} }
if (CPlayer->hazardcount > 16*TICRATE || (CPlayer->hazardcount & 8)) if (CPlayer->hazardcount > 16*TICRATE || (CPlayer->hazardcount & 8))
{ {
@ -1586,7 +1599,14 @@ void DBaseStatusBar::BlendView (float blend[4])
} }
if (CPlayer->mo->DamageType == NAME_Ice) if (CPlayer->mo->DamageType == NAME_Ice)
{ {
AddBlend (0.25f, 0.25f, 0.853f, 0.4f, blend); if (paletteflash & PF_SPECIALDAMAGE)
{
AddBlend(0.f, 0.f, 224/255.f, 0.5f, blend);
}
else
{
AddBlend (0.25f, 0.25f, 0.853f, 0.4f, blend);
}
} }
if (screen->Accel2D || (CPlayer->camera != NULL && menuactive == MENU_Off && ConsoleState == c_up)) if (screen->Accel2D || (CPlayer->camera != NULL && menuactive == MENU_Off && ConsoleState == c_up))