Merge branch 'maint'

This commit is contained in:
Randy Heit 2014-02-24 19:26:50 -06:00
commit e7f427aa60
13 changed files with 56 additions and 38 deletions

View file

@ -387,7 +387,7 @@ void D_SetupUserInfo ()
{
// Some cvars don't copy their original value directly.
case NAME_Team: coninfo->TeamChanged(team); break;
case NAME_Skin: coninfo->SkinChanged(skin); break;
case NAME_Skin: coninfo->SkinChanged(skin, players[consoleplayer].CurrentPlayerClass); break;
case NAME_Gender: coninfo->GenderChanged(gender); break;
case NAME_PlayerClass: coninfo->PlayerClassChanged(playerclass); break;
// The rest do.
@ -447,9 +447,9 @@ int userinfo_t::TeamChanged(int team)
return team;
}
int userinfo_t::SkinChanged(const char *skinname)
int userinfo_t::SkinChanged(const char *skinname, int playerclass)
{
int skinnum = R_FindSkin(skinname, 0);
int skinnum = R_FindSkin(skinname, playerclass);
*static_cast<FIntCVar *>((*this)[NAME_Skin]) = skinnum;
return skinnum;
}
@ -821,7 +821,7 @@ void D_ReadUserInfoStrings (int pnum, BYTE **stream, bool update)
break;
case NAME_Skin:
info->SkinChanged(value);
info->SkinChanged(value, players[pnum].CurrentPlayerClass);
if (players[pnum].mo != NULL)
{
if (players[pnum].cls != NULL &&
@ -941,14 +941,21 @@ void WriteUserInfo(FArchive &arc, userinfo_t &info)
arc << name;
}
void ReadUserInfo(FArchive &arc, userinfo_t &info)
void ReadUserInfo(FArchive &arc, userinfo_t &info, FString &skin)
{
FName name;
FBaseCVar **cvar;
char *str = NULL;
UCVarValue val;
if (SaveVersion < 4253)
{
ReadCompatibleUserInfo(arc, info);
return;
}
info.Reset();
skin = NULL;
for (arc << name; name != NAME_None; arc << name)
{
cvar = info.CheckKey(name);
@ -958,7 +965,7 @@ void ReadUserInfo(FArchive &arc, userinfo_t &info)
switch (name)
{
case NAME_Team: info.TeamChanged(atoi(str)); break;
case NAME_Skin: info.SkinChanged(str); break;
case NAME_Skin: skin = str; break; // Caller must call SkinChanged() once current calss is known
case NAME_PlayerClass: info.PlayerClassChanged(str); break;
default:
val.String = str;
@ -973,23 +980,6 @@ void ReadUserInfo(FArchive &arc, userinfo_t &info)
}
}
FArchive &operator<< (FArchive &arc, userinfo_t &info)
{
if (SaveVersion < 4253)
{
ReadCompatibleUserInfo(arc, info);
}
else if (arc.IsStoring())
{
WriteUserInfo(arc, info);
}
else
{
ReadUserInfo(arc, info);
}
return arc;
}
CCMD (playerinfo)
{
if (argv.argc() < 2)