Added APROP_SoundClass

- Added APROP_SoundClass to GetActorProperty, SetActorProperty, CheckActorProperty
This commit is contained in:
Zandrewnum 2021-03-09 10:27:42 -07:00 committed by Christoph Oelckers
parent 08fc91fe3e
commit 852a96497d
4 changed files with 22 additions and 2 deletions

View file

@ -391,6 +391,7 @@ public:
float BlendB = 0;
float BlendA = 0;
FString SoundClass;
FString LogText; // [RH] Log for Strife
FString SubtitleText;
int SubtitleCounter;

View file

@ -4044,6 +4044,7 @@ enum
APROP_MaxStepHeight = 44,
APROP_MaxDropOffHeight= 45,
APROP_DamageType = 46,
APROP_SoundClass = 47,
};
// These are needed for ACS's APROP_RenderStyle
@ -4307,6 +4308,17 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value)
actor->DamageType = Level->Behaviors.LookupString(value);
break;
case APROP_SoundClass:
if (actor->IsKindOf(NAME_PlayerPawn))
{
if (actor->player != NULL)
{
actor->player->SoundClass = Level->Behaviors.LookupString(value);
}
}
break;
default:
// do nothing.
break;
@ -4404,6 +4416,7 @@ int DLevelScript::GetActorProperty (int tid, int property)
case APROP_MaxStepHeight: return DoubleToACS(actor->MaxStepHeight);
case APROP_MaxDropOffHeight: return DoubleToACS(actor->MaxDropOffHeight);
case APROP_DamageType: return GlobalACSStrings.AddString(actor->DamageType.GetChars());
case APROP_SoundClass: return GlobalACSStrings.AddString(actor->player->SoundClass.GetChars());
default: return 0;
}
@ -4477,6 +4490,7 @@ int DLevelScript::CheckActorProperty (int tid, int property, int value)
case APROP_Species: string = actor->GetSpecies().GetChars(); break;
case APROP_NameTag: string = actor->GetTag(); break;
case APROP_DamageType: string = actor->DamageType.GetChars(); break;
case APROP_SoundClass: string = actor->player->SoundClass; break;
}
if (string == NULL) string = "";
return (!stricmp(string, Level->Behaviors.LookupString(value)));

View file

@ -347,6 +347,7 @@ void player_t::CopyFrom(player_t &p, bool copyPSP)
ConversationFaceTalker = p.ConversationFaceTalker;
MUSINFOactor = p.MUSINFOactor;
MUSINFOtics = p.MUSINFOtics;
SoundClass = p.SoundClass;
if (copyPSP)
{
// This needs to transfer ownership completely.
@ -1696,7 +1697,8 @@ void player_t::Serialize(FSerializer &arc)
("settings_controller", settings_controller)
("onground", onground)
("musinfoactor", MUSINFOactor)
("musinfotics", MUSINFOtics);
("musinfotics", MUSINFOtics)
("SoundClass", SoundClass);
if (arc.isWriting ())
{
@ -1812,6 +1814,7 @@ DEFINE_FIELD_X(PlayerInfo, player_t, original_cmd)
DEFINE_FIELD_X(PlayerInfo, player_t, userinfo)
DEFINE_FIELD_X(PlayerInfo, player_t, weapons)
DEFINE_FIELD_NAMED_X(PlayerInfo, player_t, cmd.ucmd.buttons, buttons)
DEFINE_FIELD_X(PlayerInfo, player_t, SoundClass)
DEFINE_FIELD_X(UserCmd, usercmd_t, buttons)
DEFINE_FIELD_X(UserCmd, usercmd_t, pitch)

View file

@ -1620,6 +1620,7 @@ static const char *GetSoundClass(AActor *pp)
}
auto sclass = player? pp->NameVar(NAME_SoundClass) : NAME_None;
sclass != NAME_None ? pp->player->SoundClass = sclass.GetChars() : (FString)"player";
return sclass != NAME_None ? sclass.GetChars() : "player";
}
@ -1637,7 +1638,7 @@ int S_FindSkinnedSound (AActor *actor, FSoundID refid)
if (actor != nullptr)
{
pclass = GetSoundClass (actor);
pclass = actor->player->SoundClass;
if (actor->player != nullptr) gender = actor->player->userinfo.GetGender();
}
else
@ -1696,6 +1697,7 @@ void S_MarkPlayerSounds (AActor *player)
PlayerSounds[listidx].MarkUsed();
}
}
}
//==========================================================================