- converted player serializer and everything it needs.
This means that everything belonging to the level snapshot will be generated in the JSON output.
This commit is contained in:
parent
3a1191281f
commit
da83d9e2bd
11 changed files with 267 additions and 215 deletions
|
|
@ -56,7 +56,7 @@
|
|||
#include "r_data/r_translate.h"
|
||||
#include "templates.h"
|
||||
#include "cmdlib.h"
|
||||
#include "farchive.h"
|
||||
#include "serializer.h"
|
||||
|
||||
static FRandom pr_pickteam ("PickRandomTeam");
|
||||
|
||||
|
|
@ -878,70 +878,75 @@ void D_ReadUserInfoStrings (int pnum, BYTE **stream, bool update)
|
|||
*stream += strlen (*((char **)stream)) + 1;
|
||||
}
|
||||
|
||||
void WriteUserInfo(FArchive &arc, userinfo_t &info)
|
||||
void WriteUserInfo(FSerializer &arc, userinfo_t &info)
|
||||
{
|
||||
TMapIterator<FName, FBaseCVar *> it(info);
|
||||
TMap<FName, FBaseCVar *>::Pair *pair;
|
||||
FName name;
|
||||
UCVarValue val;
|
||||
int i;
|
||||
|
||||
while (it.NextPair(pair))
|
||||
if (arc.BeginObject("userinfo"))
|
||||
{
|
||||
name = pair->Key;
|
||||
arc << name;
|
||||
switch (name.GetIndex())
|
||||
TMapIterator<FName, FBaseCVar *> it(info);
|
||||
TMap<FName, FBaseCVar *>::Pair *pair;
|
||||
FString name;
|
||||
const char *string;
|
||||
UCVarValue val;
|
||||
int i;
|
||||
|
||||
while (it.NextPair(pair))
|
||||
{
|
||||
case NAME_Skin:
|
||||
arc.WriteString(skins[info.GetSkin()].name);
|
||||
break;
|
||||
name = pair->Key;
|
||||
name.ToLower();
|
||||
switch (pair->Key.GetIndex())
|
||||
{
|
||||
case NAME_Skin:
|
||||
string = skins[info.GetSkin()].name;
|
||||
break;
|
||||
|
||||
case NAME_PlayerClass:
|
||||
i = info.GetPlayerClassNum();
|
||||
arc.WriteString(i == -1 ? "Random" : PlayerClasses[i].Type->DisplayName.GetChars());
|
||||
break;
|
||||
case NAME_PlayerClass:
|
||||
i = info.GetPlayerClassNum();
|
||||
string = (i == -1 ? "Random" : PlayerClasses[i].Type->DisplayName.GetChars());
|
||||
break;
|
||||
|
||||
default:
|
||||
val = pair->Value->GetGenericRep(CVAR_String);
|
||||
arc.WriteString(val.String);
|
||||
break;
|
||||
default:
|
||||
val = pair->Value->GetGenericRep(CVAR_String);
|
||||
string = val.String;
|
||||
break;
|
||||
}
|
||||
arc.StringPtr(name, string);
|
||||
}
|
||||
arc.EndObject();
|
||||
}
|
||||
name = NAME_None;
|
||||
arc << name;
|
||||
}
|
||||
|
||||
void ReadUserInfo(FArchive &arc, userinfo_t &info, FString &skin)
|
||||
void ReadUserInfo(FSerializer &arc, userinfo_t &info, FString &skin)
|
||||
{
|
||||
FName name;
|
||||
FBaseCVar **cvar;
|
||||
char *str = NULL;
|
||||
UCVarValue val;
|
||||
const char *key;
|
||||
const char *str;
|
||||
|
||||
info.Reset();
|
||||
skin = NULL;
|
||||
for (arc << name; name != NAME_None; arc << name)
|
||||
if (arc.BeginObject("userinfo"))
|
||||
{
|
||||
cvar = info.CheckKey(name);
|
||||
arc << str;
|
||||
if (cvar != NULL && *cvar != NULL)
|
||||
while ((key = arc.GetKey()))
|
||||
{
|
||||
switch (name)
|
||||
arc.StringPtr(key, str);
|
||||
name = key;
|
||||
cvar = info.CheckKey(name);
|
||||
if (cvar != NULL && *cvar != NULL)
|
||||
{
|
||||
case NAME_Team: info.TeamChanged(atoi(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;
|
||||
(*cvar)->SetGenericRep(val, CVAR_String);
|
||||
break;
|
||||
switch (name)
|
||||
{
|
||||
case NAME_Team: info.TeamChanged(atoi(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;
|
||||
(*cvar)->SetGenericRep(val, CVAR_String);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (str != NULL)
|
||||
{
|
||||
delete[] str;
|
||||
}
|
||||
}
|
||||
|
||||
CCMD (playerinfo)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue