Clean up console commands
Improve functionality of network console commands and make displaying of who is who clearer.
This commit is contained in:
parent
1e1ab58ee2
commit
a1a3be1046
2 changed files with 226 additions and 154 deletions
|
|
@ -1016,50 +1016,75 @@ void ReadUserInfo(FSerializer &arc, userinfo_t &info, FString &skin)
|
|||
}
|
||||
}
|
||||
|
||||
CCMD (playerinfo)
|
||||
CCMD(playerinfo)
|
||||
{
|
||||
if (argv.argc() < 2)
|
||||
TArray<int> inGame = {};
|
||||
for (int i = 0; i < MAXPLAYERS; ++i)
|
||||
{
|
||||
int i;
|
||||
if (playeringame[i])
|
||||
inGame.Push(i);
|
||||
}
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
const bool isMulti = inGame.Size() > 1;
|
||||
if (isMulti && argv.argc() < 2)
|
||||
{
|
||||
for (auto i : inGame)
|
||||
{
|
||||
if (playeringame[i])
|
||||
Printf("%d. %s", i, players[i].userinfo.GetName());
|
||||
if (i == consoleplayer || i == Net_Arbitrator || players[i].Bot != nullptr || players[i].settings_controller)
|
||||
{
|
||||
Printf("%d. %s\n", i, players[i].userinfo.GetName());
|
||||
Printf(" [");
|
||||
if (i == consoleplayer)
|
||||
Printf("*");
|
||||
if (i == Net_Arbitrator)
|
||||
Printf("H");
|
||||
if (players[i].Bot != nullptr)
|
||||
Printf("B");
|
||||
else if (players[i].settings_controller && i != Net_Arbitrator)
|
||||
Printf("C");
|
||||
Printf("]");
|
||||
}
|
||||
Printf("\n");
|
||||
}
|
||||
Printf("Pass a player number for more info\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
int i = atoi(argv[1]);
|
||||
|
||||
if (i < 0 || i >= MAXPLAYERS)
|
||||
int i = -1;
|
||||
if (!isMulti)
|
||||
{
|
||||
Printf("Bad player number\n");
|
||||
i = consoleplayer;
|
||||
}
|
||||
else if (!C_IsValidInt(argv[1], i) || i < 0 || i >= MAXPLAYERS)
|
||||
{
|
||||
Printf("Bad player number %s\n", argv[1]);
|
||||
return;
|
||||
}
|
||||
userinfo_t *ui = &players[i].userinfo;
|
||||
|
||||
if (!playeringame[i])
|
||||
{
|
||||
Printf(TEXTCOLOR_ORANGE "Player %d is not in the game\n", i);
|
||||
Printf("Player %d is not in game\n", i);
|
||||
return;
|
||||
}
|
||||
|
||||
const userinfo_t& info = players[i].userinfo;
|
||||
|
||||
// Print special info
|
||||
Printf("%20s: %s\n", "Name", ui->GetName());
|
||||
Printf("%20s: %s (%d)\n", "Team", ui->GetTeam() == TEAM_NONE ? "None" : Teams[ui->GetTeam()].GetName(), ui->GetTeam());
|
||||
Printf("%20s: %s (%d)\n", "Skin", Skins[ui->GetSkin()].Name.GetChars(), ui->GetSkin());
|
||||
Printf("%20s: %s (%d)\n", "Gender", GenderNames[ui->GetGender()], ui->GetGender());
|
||||
Printf("%20s: %s\n", "Host", i == Net_Arbitrator ? "Yes" : "No");
|
||||
Printf("%20s: %s\n", "Console Player", i == consoleplayer ? "Yes" : "No");
|
||||
Printf("%20s: %s\n", "Bot", players[i].Bot != nullptr ? "Yes" : "No");
|
||||
Printf("%20s: %s\n", "Settings Controller", players[i].settings_controller && players[i].Bot == nullptr ? "Yes" : "No");
|
||||
Printf("%20s: %s\n", "Name", info.GetName());
|
||||
Printf("%20s: %s (%d)\n", "Team", info.GetTeam() == TEAM_NONE ? "None" : Teams[info.GetTeam()].GetName(), info.GetTeam());
|
||||
Printf("%20s: %s (%d)\n", "Skin", Skins[info.GetSkin()].Name.GetChars(), info.GetSkin());
|
||||
Printf("%20s: %s (%d)\n", "Gender", GenderNames[info.GetGender()], info.GetGender());
|
||||
Printf("%20s: %s (%d)\n", "PlayerClass",
|
||||
ui->GetPlayerClassNum() == -1 ? "Random" : ui->GetPlayerClassType()->GetDisplayName().GetChars(),
|
||||
ui->GetPlayerClassNum());
|
||||
info.GetPlayerClassNum() == -1 ? "Random" : info.GetPlayerClassType()->GetDisplayName().GetChars(),
|
||||
info.GetPlayerClassNum());
|
||||
|
||||
// Print generic info
|
||||
TMapIterator<FName, FBaseCVar *> it(*ui);
|
||||
TMap<FName, FBaseCVar *>::Pair *pair;
|
||||
|
||||
TMap<FName, FBaseCVar*>::ConstIterator it = { info };
|
||||
TMap<FName, FBaseCVar*>::ConstPair* pair = nullptr;
|
||||
while (it.NextPair(pair))
|
||||
{
|
||||
if (pair->Key != NAME_Name && pair->Key != NAME_Team && pair->Key != NAME_Skin &&
|
||||
|
|
@ -1068,10 +1093,9 @@ CCMD (playerinfo)
|
|||
Printf("%20s: %s\n", pair->Key.GetChars(), pair->Value->GetHumanString());
|
||||
}
|
||||
}
|
||||
if (argv.argc() > 2)
|
||||
{
|
||||
|
||||
if (argv.argc() > 2 || (!isMulti && argv.argc() > 1))
|
||||
PrintMiscActorInfo(players[i].mo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue