Merge commit 'refs/pull/980/head' of https://github.com/coelckers/gzdoom

# Conflicts:
#	wadsrc/static/menudef.txt
This commit is contained in:
Rachael Alexanderson 2020-08-25 11:32:10 -04:00
commit 5f9377ae2a
3 changed files with 46 additions and 4 deletions

View file

@ -226,11 +226,45 @@ void D_LoadWadSettings ()
ParsingKeyConf = false;
}
// Strict handling of SetSlot and ClearPlayerClasses in KEYCONF (see a_weapons.cpp)
EXTERN_CVAR (Bool, setslotstrict)
// Specifically hunt for and remove IWAD playerclasses
void ClearIWADPlayerClasses (PClassActor *ti)
{
for(unsigned i=0; i < PlayerClasses.Size(); i++)
{
if(PlayerClasses[i].Type==ti)
{
for(unsigned j = i; j < PlayerClasses.Size()-1; j++)
{
PlayerClasses[j] = PlayerClasses[j+1];
}
PlayerClasses.Pop();
}
}
}
CCMD(clearplayerclasses)
{
if (ParsingKeyConf)
{
PlayerClasses.Clear();
{
// Only clear the playerclasses first if setslotstrict is true
// If not, we'll only remove the IWAD playerclasses
if(setslotstrict)
PlayerClasses.Clear();
else
{
// I wish I had a better way to pick out IWAD playerclasses
// without having to explicitly name them here...
ClearIWADPlayerClasses(PClass::FindActor("DoomPlayer"));
ClearIWADPlayerClasses(PClass::FindActor("HereticPlayer"));
ClearIWADPlayerClasses(PClass::FindActor("StrifePlayer"));
ClearIWADPlayerClasses(PClass::FindActor("FighterPlayer"));
ClearIWADPlayerClasses(PClass::FindActor("ClericPlayer"));
ClearIWADPlayerClasses(PClass::FindActor("MagePlayer"));
ClearIWADPlayerClasses(PClass::FindActor("ChexPlayer"));
}
}
}