New struct for basic round end info per player.
This commit is contained in:
@@ -73,7 +73,7 @@ namespace Content.Client.GameTicking
|
|||||||
{
|
{
|
||||||
|
|
||||||
//This is not ideal at all, but I don't see an immediately better fit anywhere else.
|
//This is not ideal at all, but I don't see an immediately better fit anywhere else.
|
||||||
var roundEnd = new RoundEndSummaryWindow(message.GamemodeTitle, message.DurationInHours);
|
var roundEnd = new RoundEndSummaryWindow(message.GamemodeTitle, message.DurationInHours, message.AllPlayersEndInfo);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ using Robust.Shared.Maths;
|
|||||||
using Content.Client.Utility;
|
using Content.Client.Utility;
|
||||||
using Robust.Client.Player;
|
using Robust.Client.Player;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Collections.Generic;
|
||||||
using static Robust.Client.UserInterface.Controls.ItemList;
|
using static Robust.Client.UserInterface.Controls.ItemList;
|
||||||
|
using static Content.Shared.SharedGameTicker;
|
||||||
|
|
||||||
namespace Content.Client.UserInterface
|
namespace Content.Client.UserInterface
|
||||||
{
|
{
|
||||||
@@ -27,7 +29,7 @@ namespace Content.Client.UserInterface
|
|||||||
|
|
||||||
protected override Vector2? CustomSize => (520, 580);
|
protected override Vector2? CustomSize => (520, 580);
|
||||||
|
|
||||||
public RoundEndSummaryWindow(string gm, uint duration)
|
public RoundEndSummaryWindow(string gm, uint duration, List<RoundEndPlayerInfo> info )
|
||||||
{
|
{
|
||||||
Title = Loc.GetString("Round End Summary");
|
Title = Loc.GetString("Round End Summary");
|
||||||
|
|
||||||
@@ -59,12 +61,15 @@ namespace Content.Client.UserInterface
|
|||||||
SelectMode = ItemList.ItemListSelectMode.Button
|
SelectMode = ItemList.ItemListSelectMode.Button
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach (var session in _playerManager.Sessions.OrderBy(s => s.Name))
|
foreach(var plyinfo in info)
|
||||||
{
|
{
|
||||||
var playerOOCName = session.SessionId.Username;
|
var oocName = plyinfo.PlayerOOCName;
|
||||||
//No Mind data so no ICName/Job/Role, etc.
|
var icName = plyinfo.PlayerICName;
|
||||||
_playerList.AddItem(playerOOCName);
|
var role = plyinfo.Role;
|
||||||
|
var wasAntag = plyinfo.Antag;
|
||||||
|
_playerList.AddItem($"{oocName} was {icName} playing role of {role}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
VBox.AddChild(_playerList);
|
VBox.AddChild(_playerList);
|
||||||
OpenCentered();
|
OpenCentered();
|
||||||
MoveToFront();
|
MoveToFront();
|
||||||
|
|||||||
@@ -205,8 +205,30 @@ namespace Content.Server.GameTicking
|
|||||||
//Tell every client the round has ended.
|
//Tell every client the round has ended.
|
||||||
var roundEndMessage = _netManager.CreateNetMessage<MsgRoundEndMessage>();
|
var roundEndMessage = _netManager.CreateNetMessage<MsgRoundEndMessage>();
|
||||||
roundEndMessage.GamemodeTitle = MakeGamePreset().ModeTitle;
|
roundEndMessage.GamemodeTitle = MakeGamePreset().ModeTitle;
|
||||||
|
|
||||||
//TODO:Grab actual timespan of round.
|
//TODO:Grab actual timespan of round.
|
||||||
roundEndMessage.DurationInHours = 1337;
|
roundEndMessage.DurationInHours = 1337;
|
||||||
|
|
||||||
|
//Generate a list of basic player info to display in the end round summary.
|
||||||
|
var listOfPlayerInfo = new List<RoundEndPlayerInfo>();
|
||||||
|
foreach(var ply in _playerManager.GetAllPlayers().OrderBy(p => p.Name))
|
||||||
|
{
|
||||||
|
if (ply == null) continue;
|
||||||
|
if(ply.AttachedEntity.TryGetComponent<MindComponent>(out var mindComponent)
|
||||||
|
&& mindComponent.HasMind)
|
||||||
|
{
|
||||||
|
var playerEndRoundInfo = new RoundEndPlayerInfo()
|
||||||
|
{
|
||||||
|
PlayerOOCName = ply.Name,
|
||||||
|
PlayerICName = mindComponent.Mind.CurrentEntity.Name,
|
||||||
|
Role = mindComponent.Mind.AllRoles.First().Name,
|
||||||
|
Antag = false
|
||||||
|
};
|
||||||
|
listOfPlayerInfo.Add(playerEndRoundInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
roundEndMessage.AllPlayersEndInfo = listOfPlayerInfo;
|
||||||
_netManager.ServerSendToAll(roundEndMessage);
|
_netManager.ServerSendToAll(roundEndMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using Lidgren.Network;
|
using Lidgren.Network;
|
||||||
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
using Robust.Shared.Interfaces.Network;
|
using Robust.Shared.Interfaces.Network;
|
||||||
using Robust.Shared.Network;
|
using Robust.Shared.Network;
|
||||||
|
|
||||||
@@ -114,6 +116,14 @@ namespace Content.Shared
|
|||||||
buffer.Write(TextBlob);
|
buffer.Write(TextBlob);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public struct RoundEndPlayerInfo
|
||||||
|
{
|
||||||
|
public string PlayerOOCName;
|
||||||
|
public string PlayerICName;
|
||||||
|
public string Role;
|
||||||
|
public bool Antag;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
protected class MsgRoundEndMessage : NetMessage
|
protected class MsgRoundEndMessage : NetMessage
|
||||||
{
|
{
|
||||||
@@ -130,10 +140,30 @@ namespace Content.Shared
|
|||||||
//TODO: Change to a more detailed measurement of time.
|
//TODO: Change to a more detailed measurement of time.
|
||||||
public uint DurationInHours;
|
public uint DurationInHours;
|
||||||
|
|
||||||
|
public uint PlayerCount;
|
||||||
|
|
||||||
|
public List<RoundEndPlayerInfo> AllPlayersEndInfo;
|
||||||
|
|
||||||
public override void ReadFromBuffer(NetIncomingMessage buffer)
|
public override void ReadFromBuffer(NetIncomingMessage buffer)
|
||||||
{
|
{
|
||||||
GamemodeTitle = buffer.ReadString();
|
GamemodeTitle = buffer.ReadString();
|
||||||
DurationInHours = buffer.ReadUInt32();
|
DurationInHours = buffer.ReadUInt32();
|
||||||
|
|
||||||
|
PlayerCount = buffer.ReadUInt32();
|
||||||
|
AllPlayersEndInfo = new List<RoundEndPlayerInfo>();
|
||||||
|
for(var i = 0; i < PlayerCount + 1; i++)
|
||||||
|
{
|
||||||
|
var readPlayerData = new RoundEndPlayerInfo
|
||||||
|
{
|
||||||
|
PlayerOOCName = buffer.ReadString(),
|
||||||
|
PlayerICName = buffer.ReadString(),
|
||||||
|
Role = buffer.ReadString(),
|
||||||
|
Antag = buffer.ReadBoolean()
|
||||||
|
};
|
||||||
|
|
||||||
|
AllPlayersEndInfo.Add(readPlayerData);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void WriteToBuffer(NetOutgoingMessage buffer)
|
public override void WriteToBuffer(NetOutgoingMessage buffer)
|
||||||
@@ -141,6 +171,14 @@ namespace Content.Shared
|
|||||||
buffer.Write(GamemodeTitle);
|
buffer.Write(GamemodeTitle);
|
||||||
buffer.Write(DurationInHours);
|
buffer.Write(DurationInHours);
|
||||||
|
|
||||||
|
buffer.Write(PlayerCount);
|
||||||
|
foreach(var playerEndInfo in AllPlayersEndInfo)
|
||||||
|
{
|
||||||
|
buffer.Write(playerEndInfo.PlayerOOCName);
|
||||||
|
buffer.Write(playerEndInfo.PlayerICName);
|
||||||
|
buffer.Write(playerEndInfo.Role);
|
||||||
|
buffer.Write(playerEndInfo.Antag);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user