APROP_Soundclass update again

- Just set init for SoundClass to empty.
- Removed code block from SetActorProperty for APROP_Soundclass that does nothing
- Lower-cased soundclass in FSerializer
- Created a new const char to read the player's soundclass. If the playerpawn returns NAME_None for it's default, then it will set defaultsoundclass to "player". After running the skin code, the function now returns defaultsoundclass or soundclass, depending if soundclass is empty or not.
- Renamed GetSoundClass to S_GetSoundClass
This commit is contained in:
Zandrewnum 2021-04-20 09:28:15 -07:00 committed by Christoph Oelckers
parent a5cf0c6605
commit acb4d89f52
5 changed files with 13 additions and 19 deletions

View file

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

View file

@ -4311,16 +4311,11 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value)
case APROP_SoundClass:
if (actor->IsKindOf(NAME_PlayerPawn))
{
if (actor->player != NULL)
if (actor->player != nullptr)
{
if(!strcmp(Level->Behaviors.LookupString(value), ""))
{
actor->player->SoundClass = "";
}
actor->player->SoundClass = Level->Behaviors.LookupString(value);
}
}
}
break;
default:
@ -4420,7 +4415,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(GetSoundClass(actor));
case APROP_SoundClass: return GlobalACSStrings.AddString(S_GetSoundClass(actor));
default: return 0;
}
@ -4494,7 +4489,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 = GetSoundClass(actor); break;
case APROP_SoundClass: string = S_GetSoundClass(actor); break;
}
if (string == NULL) string = "";
return (!stricmp(string, Level->Behaviors.LookupString(value)));

View file

@ -1698,7 +1698,7 @@ void player_t::Serialize(FSerializer &arc)
("onground", onground)
("musinfoactor", MUSINFOactor)
("musinfotics", MUSINFOtics)
("SoundClass", SoundClass);
("soundclass", SoundClass);
if (arc.isWriting ())
{

View file

@ -1608,10 +1608,10 @@ bool S_AreSoundsEquivalent (AActor *actor, int id1, int id2)
//
//===========================================================================
const char *GetSoundClass(AActor *pp)
const char *S_GetSoundClass(AActor *pp)
{
auto player = pp->player;
const char *defaultsoundclass = pp->NameVar(NAME_SoundClass) == NAME_None ? "player" : pp->NameVar(NAME_SoundClass).GetChars();
if (player != nullptr &&
(player->mo == nullptr || !(player->mo->flags4 &MF4_NOSKIN)) &&
(unsigned int)player->userinfo.GetSkin() >= PlayerClasses.Size() &&
@ -1620,9 +1620,8 @@ const char *GetSoundClass(AActor *pp)
{
return Skins[player->userinfo.GetSkin()].Name.GetChars();
}
auto sclass = player->SoundClass.IsEmpty() ? pp->NameVar(NAME_SoundClass).GetChars() : player->SoundClass.GetChars();
return sclass ? sclass : "player";
return player->SoundClass.IsEmpty() ? defaultsoundclass : player->SoundClass.GetChars();
}
//==========================================================================
@ -1639,7 +1638,7 @@ int S_FindSkinnedSound (AActor *actor, FSoundID refid)
if (actor != nullptr)
{
if (actor->player != nullptr) pclass = GetSoundClass(actor);
if (actor->player != nullptr) pclass = S_GetSoundClass(actor);
if (actor->player != nullptr) gender = actor->player->userinfo.GetGender();
}
else
@ -1684,7 +1683,7 @@ int S_FindSkinnedSoundEx (AActor *actor, const char *name, const char *extendedn
void S_MarkPlayerSounds (AActor *player)
{
const char *playerclass = GetSoundClass(player);
const char *playerclass = S_GetSoundClass(player);
int classidx = S_FindPlayerClass(playerclass);
if (classidx < 0)
{

View file

@ -70,7 +70,7 @@ bool S_AreSoundsEquivalent (AActor *actor, int id1, int id2);
bool S_AreSoundsEquivalent (AActor *actor, const char *name1, const char *name2);
int S_LookupPlayerSound (const char *playerclass, int gender, const char *logicalname);
int S_LookupPlayerSound (const char *playerclass, int gender, FSoundID refid);
const char *GetSoundClass(AActor *pp);
const char *S_GetSoundClass(AActor *pp);
int S_FindSkinnedSound (AActor *actor, FSoundID refid);
int S_FindSkinnedSoundEx (AActor *actor, const char *logicalname, const char *extendedname);
int S_AddSound (const char *logicalname, const char *lumpname, FScanner *sc=NULL); // Add sound by lumpname