49 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |