Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Traitors/TraitorManager.cs
2023-10-02 16:43:54 +03:00

49 lines
1.7 KiB
C#

#nullable enable
using Barotrauma.Networking;
using System.Linq;
namespace Barotrauma
{
sealed partial class TraitorManager
{
public struct TraitorResults : INetSerializableStruct
{
[NetworkSerialize]
public byte VotedAsTraitorClientSessionId;
[NetworkSerialize]
public bool VotedCorrectTraitor;
[NetworkSerialize]
public bool ObjectiveSuccessful;
[NetworkSerialize]
public int MoneyPenalty;
[NetworkSerialize]
public Identifier TraitorEventIdentifier;
public TraitorResults(Client? votedAsTraitor, TraitorEvent traitorEvent)
{
VotedAsTraitorClientSessionId = votedAsTraitor?.SessionId ?? 0;
VotedCorrectTraitor = votedAsTraitor == traitorEvent.Traitor;
if (traitorEvent.Prefab.AllowAccusingSecondaryTraitor && !VotedCorrectTraitor)
{
VotedCorrectTraitor = traitorEvent.SecondaryTraitors.Contains(votedAsTraitor);
}
ObjectiveSuccessful = traitorEvent.CurrentState == TraitorEvent.State.Completed;
MoneyPenalty = votedAsTraitor != null && !VotedCorrectTraitor ?
traitorEvent.Prefab.MoneyPenaltyForUnfoundedTraitorAccusation :
0;
TraitorEventIdentifier = traitorEvent.Prefab.Identifier;
}
public Client? GetTraitorClient()
{
int sessionId = VotedAsTraitorClientSessionId;
return GameMain.NetworkMember?.ConnectedClients?.FirstOrDefault(c => c.SessionId == sessionId);
}
}
}
}