mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 23:01:50 +00:00
- Fixed: Pain flashes were not inheritable.
SVN r3779 (trunk)
This commit is contained in:
parent
5c7e04c539
commit
d2843c199e
3 changed files with 28 additions and 8 deletions
26
src/info.cpp
26
src/info.cpp
|
@ -329,6 +329,32 @@ void FActorInfo::SetPainFlash(FName type, PalEntry color)
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
bool FActorInfo::GetPainFlash(FName type, PalEntry *color) const
|
||||
{
|
||||
const FActorInfo *info = this;
|
||||
|
||||
while (info != NULL)
|
||||
{
|
||||
if (info->PainFlashes != NULL)
|
||||
{
|
||||
PalEntry *flash = info->PainFlashes->CheckKey(type);
|
||||
if (flash != NULL)
|
||||
{
|
||||
*color = *flash;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// Try parent class
|
||||
info = info->Class->ParentClass->ActorInfo;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void FActorInfo::SetColorSet(int index, const FPlayerColorSet *set)
|
||||
{
|
||||
if (set != NULL)
|
||||
|
|
|
@ -224,6 +224,7 @@ struct FActorInfo
|
|||
void SetDamageFactor(FName type, fixed_t factor);
|
||||
void SetPainChance(FName type, int chance);
|
||||
void SetPainFlash(FName type, PalEntry color);
|
||||
bool GetPainFlash(FName type, PalEntry *color) const;
|
||||
void SetColorSet(int index, const FPlayerColorSet *set);
|
||||
|
||||
FState *FindState (int numnames, FName *names, bool exact=false) const;
|
||||
|
|
|
@ -120,15 +120,8 @@ void V_AddPlayerBlend (player_t *CPlayer, float blend[4], float maxinvalpha, int
|
|||
BPART(gameinfo.pickupcolor)/255.f, cnt > 128 ? 0.5f : cnt / 255.f, blend);
|
||||
}
|
||||
|
||||
PainFlashList * pfl = CPlayer->mo->GetClass()->ActorInfo->PainFlashes;
|
||||
PalEntry painFlash = CPlayer->mo->DamageFade;
|
||||
|
||||
if (pfl)
|
||||
{
|
||||
PalEntry * color = pfl->CheckKey(CPlayer->mo->DamageTypeReceived);
|
||||
|
||||
if (color) painFlash = *color;
|
||||
}
|
||||
CPlayer->mo->GetClass()->ActorInfo->GetPainFlash(CPlayer->mo->DamageTypeReceived, &painFlash);
|
||||
|
||||
if (painFlash.a != 0)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue