diff --git a/src/d_player.h b/src/d_player.h index 2d58e00ee..6f414e1ff 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -74,6 +74,7 @@ enum FPlayerColorSet *P_GetPlayerColorSet(FName classname, int setnum); void P_EnumPlayerColorSets(FName classname, TArray *out); +const char *GetPrintableDisplayName(const PClass *cls); class player_t; diff --git a/src/g_shared/sbarinfo_commands.cpp b/src/g_shared/sbarinfo_commands.cpp index 3536bfa5e..792115b5e 100644 --- a/src/g_shared/sbarinfo_commands.cpp +++ b/src/g_shared/sbarinfo_commands.cpp @@ -684,7 +684,7 @@ class CommandDrawString : public SBarInfoCommand if(statusBar->CPlayer->userinfo.PlayerClass != cache) { cache = statusBar->CPlayer->userinfo.PlayerClass; - str = statusBar->CPlayer->cls->Meta.GetMetaString(APMETA_DisplayName); + str = GetPrintableDisplayName(statusBar->CPlayer->cls); RealignString(); } break; diff --git a/src/menu/menu.cpp b/src/menu/menu.cpp index 8141e870e..2732b7cfb 100644 --- a/src/menu/menu.cpp +++ b/src/menu/menu.cpp @@ -351,7 +351,7 @@ void M_SetMenu(FName menu, int param) GameStartupInfo.Episode = -1; GameStartupInfo.PlayerClass = param == -1000? NULL : - param == -1? "Random" : PlayerClasses[param].Type->Meta.GetMetaString (APMETA_DisplayName); + param == -1? "Random" : GetPrintableDisplayName(PlayerClasses[param].Type); break; case NAME_Skillmenu: diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index 25fce4e7b..6028d8fd7 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -995,7 +995,7 @@ static void BuildPlayerclassMenu() { if (!(PlayerClasses[i].Flags & PCF_NOMENU)) { - const char *pname = PlayerClasses[i].Type->Meta.GetMetaString (APMETA_DisplayName); + const char *pname = GetPrintableDisplayName(PlayerClasses[i].Type); if (pname != NULL) { numclassitems++; @@ -1032,7 +1032,7 @@ static void BuildPlayerclassMenu() { if (!(PlayerClasses[i].Flags & PCF_NOMENU)) { - const char *pname = PlayerClasses[i].Type->Meta.GetMetaString (APMETA_DisplayName); + const char *pname = GetPrintableDisplayName(PlayerClasses[i].Type); if (pname != NULL) { FListMenuItemText *it = new FListMenuItemText(ld->mXpos, ld->mYpos, ld->mLinespacing, *pname, @@ -1051,7 +1051,7 @@ static void BuildPlayerclassMenu() } if (n == 0) { - const char *pname = PlayerClasses[0].Type->Meta.GetMetaString (APMETA_DisplayName); + const char *pname = GetPrintableDisplayName(PlayerClasses[0].Type); if (pname != NULL) { FListMenuItemText *it = new FListMenuItemText(ld->mXpos, ld->mYpos, ld->mLinespacing, *pname, @@ -1086,7 +1086,7 @@ static void BuildPlayerclassMenu() { if (!(PlayerClasses[i].Flags & PCF_NOMENU)) { - const char *pname = PlayerClasses[i].Type->Meta.GetMetaString (APMETA_DisplayName); + const char *pname = GetPrintableDisplayName(PlayerClasses[i].Type); if (pname != NULL) { FOptionMenuItemSubmenu *it = new FOptionMenuItemSubmenu(pname, "Episodemenu", i); diff --git a/src/menu/playermenu.cpp b/src/menu/playermenu.cpp index 6965d391b..8a5d08507 100644 --- a/src/menu/playermenu.cpp +++ b/src/menu/playermenu.cpp @@ -592,7 +592,7 @@ void DPlayerMenu::Init(DMenu *parent, FListMenuDescriptor *desc) { if (PlayerClasses.Size() == 1) { - li->SetString(0, PlayerClasses[0].Type->Meta.GetMetaString (APMETA_DisplayName)); + li->SetString(0, GetPrintableDisplayName(PlayerClasses[0].Type)); li->SetValue(0, 0); } else @@ -600,7 +600,7 @@ void DPlayerMenu::Init(DMenu *parent, FListMenuDescriptor *desc) li->SetString(0, "Random"); for(unsigned i=0; i< PlayerClasses.Size(); i++) { - const char *cls = PlayerClasses[i].Type->Meta.GetMetaString (APMETA_DisplayName); + const char *cls = GetPrintableDisplayName(PlayerClasses[i].Type); li->SetString(i+1, cls); } li->SetValue(0, players[consoleplayer].userinfo.PlayerClass + 1); @@ -901,8 +901,7 @@ void DPlayerMenu::ClassChanged (FListMenuItem *li) players[consoleplayer].userinfo.PlayerClass = sel-1; PickPlayerClass(); - cvar_set ("playerclass", - sel == 0 ? "Random" : PlayerClass->Type->Meta.GetMetaString (APMETA_DisplayName)); + cvar_set ("playerclass", sel == 0 ? "Random" : PlayerClass->Type->TypeName); UpdateSkins(); UpdateColorsets(); diff --git a/src/p_user.cpp b/src/p_user.cpp index 3fecc380f..37cb230b5 100644 --- a/src/p_user.cpp +++ b/src/p_user.cpp @@ -52,6 +52,7 @@ #include "thingdef/thingdef.h" #include "g_level.h" #include "d_net.h" +#include "gstrings.h" static FRandom pr_skullpop ("SkullPop"); @@ -95,6 +96,19 @@ bool FPlayerClass::CheckSkin (int skin) return false; } +//=========================================================================== +// +// GetDisplayName +// +//=========================================================================== + +const char *GetPrintableDisplayName(const PClass *cls) +{ + // Fixme; This needs a decent way to access the string table without creating a mess. + const char *name = cls->Meta.GetMetaString(APMETA_DisplayName); + return name; +} + bool ValidatePlayerClass(const PClass *ti, const char *name) { if (!ti)