80ab27df22
commit 409d4d96ead69028a164274637d23e350acb73fb Merge: 95169f539 26e89c63d Author: EdusFF <pitkanen.eetu@gmail.com> Date: Mon Mar 11 15:13:27 2019 +0200 Merge branch 'dev' of github.com:Regalis11/Barotrauma into dev commit 95169f53937f9a7e168a884171eaa21ae7f08023 Author: EdusFF <pitkanen.eetu@gmail.com> Date: Mon Mar 11 15:13:11 2019 +0200 Modified: ServerMessage structure to allow _ ; in player & submarine names commit 26e89c63dc8da771aea9f09978a630a6cff60a6f Merge: b7646d06d fb0b821bc Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Mon Mar 11 14:42:44 2019 +0200 Merge branch 'kuraiookami-logicExpantion' into dev # Conflicts: # Barotrauma/BarotraumaShared/SharedContent.projitems commit fb0b821bc97891cdeec8f2c740a12119696393ea Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Mon Mar 11 14:41:21 2019 +0200 Use invariant culture when parsing floats or converting them to strings in signal components commit f0c8afba934b41358cf5d59a22b87caf33f98a61 Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Mon Mar 11 14:00:44 2019 +0200 Update new signal components to use identifiers & added names and descriptions to the text file, use invariant culture in equalscomponent, memorycomponent doesn't require the signals to be floats commit 674d9ec804fc4770b602d4b09240b08cafc8ccec Merge: 3ea33fb54 242e2429f Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Mon Mar 11 12:01:27 2019 +0200 Merge branch 'logicExpantion' of https://github.com/kuraiookami/Barotrauma into kuraiookami-logicExpantion # Conflicts: # Barotrauma/BarotraumaShared/BarotraumaShared.projitems # Barotrauma/BarotraumaShared/Content/Items/Electricity/poweritems.xml # Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml # Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerContainer.cs # Barotrauma/BarotraumaShared/Source/Items/Components/Signal/AdderComponent.cs commit b7646d06d53fb05227276e6286d0e15da5dc9080 Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Mon Mar 11 11:37:33 2019 +0200 Re-enabled multiplayer campaign commit cf7258f6410a5995c881ec6e95eb9def5cd90ad4 Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Mon Mar 11 11:28:48 2019 +0200 Fixed item interfaces getting repositioned every frame when the editing HUD is open. Closes #1212 commit e8906239c779cf71de694bc65c81058e5cae16ef Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Mon Mar 11 11:12:05 2019 +0200 Fixed VoipCapture creating new "could not start voice capture" popups constantly if there's no suitable capture device. Closes #1262 commit a30f47fbe47fde4fccb0453c1773a76d730d226b Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Sun Mar 10 19:04:59 2019 +0200 Disable audio instead of crashing if no audio device is found. Closes #1214 commit 242e2429fd2c3ed199ac26b55e2cbdc8636e73f9 Author: Darkwolf <Darkwolf0101@gmail.com> Date: Mon Jan 21 21:26:57 2019 -0600 Expansion of Barotrauma's logic system. Changed: - AdderComponent and children can clamp their output - Powercontainer signals for charge,charge% and charge rate Added: - ColorComponent: Dynamic signals for light set_color inputs - MemoryComponent: Stores and sends a signal that is edge latched - DivideComponent: Standard division - MultiplyComponent: Standard multiplication - SubtractComponent: Standard subtraction - XorComponent: Exclusive or - EqualsComponent: Equals comparison - GreaterComponent: Greater than comparison
136 lines
4.9 KiB
C#
136 lines
4.9 KiB
C#
using Barotrauma.Networking;
|
|
using Lidgren.Network;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace Barotrauma
|
|
{
|
|
partial class Voting
|
|
{
|
|
public bool AllowSubVoting
|
|
{
|
|
get { return allowSubVoting; }
|
|
set { allowSubVoting = value; }
|
|
}
|
|
public bool AllowModeVoting
|
|
{
|
|
get { return allowModeVoting; }
|
|
set { allowModeVoting = value; }
|
|
}
|
|
|
|
public void ServerRead(NetIncomingMessage inc, Client sender)
|
|
{
|
|
if (GameMain.Server == null || sender == null) return;
|
|
|
|
byte voteTypeByte = inc.ReadByte();
|
|
VoteType voteType = VoteType.Unknown;
|
|
try
|
|
{
|
|
voteType = (VoteType)voteTypeByte;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
DebugConsole.ThrowError("Failed to cast vote type \"" + voteTypeByte + "\"", e);
|
|
return;
|
|
}
|
|
|
|
switch (voteType)
|
|
{
|
|
case VoteType.Sub:
|
|
string subName = inc.ReadString();
|
|
Submarine sub = Submarine.SavedSubmarines.FirstOrDefault(s => s.Name == subName);
|
|
sender.SetVote(voteType, sub);
|
|
break;
|
|
|
|
case VoteType.Mode:
|
|
string modeIdentifier = inc.ReadString();
|
|
GameModePreset mode = GameModePreset.List.Find(gm => gm.Identifier == modeIdentifier);
|
|
if (!mode.Votable) break;
|
|
|
|
sender.SetVote(voteType, mode);
|
|
break;
|
|
case VoteType.EndRound:
|
|
if (!sender.HasSpawned) return;
|
|
sender.SetVote(voteType, inc.ReadBoolean());
|
|
|
|
GameMain.NetworkMember.EndVoteCount = GameMain.Server.ConnectedClients.Count(c => c.HasSpawned && c.GetVote<bool>(VoteType.EndRound));
|
|
GameMain.NetworkMember.EndVoteMax = GameMain.Server.ConnectedClients.Count(c => c.HasSpawned);
|
|
|
|
break;
|
|
case VoteType.Kick:
|
|
byte kickedClientID = inc.ReadByte();
|
|
|
|
Client kicked = GameMain.Server.ConnectedClients.Find(c => c.ID == kickedClientID);
|
|
if (kicked != null && !kicked.HasKickVoteFrom(sender))
|
|
{
|
|
kicked.AddKickVote(sender);
|
|
Client.UpdateKickVotes(GameMain.Server.ConnectedClients);
|
|
|
|
GameMain.Server.SendChatMessage($"ServerMessage.HasVotedToKick~[initiator]={sender.Name}~[target]={kicked.Name}", ChatMessageType.Server, null);
|
|
}
|
|
|
|
break;
|
|
case VoteType.StartRound:
|
|
bool ready = inc.ReadBoolean();
|
|
if (ready != sender.GetVote<bool>(VoteType.StartRound))
|
|
{
|
|
sender.SetVote(VoteType.StartRound, ready);
|
|
GameServer.Log(sender.Name + (ready ? " is ready to start the game." : " is not ready to start the game."), ServerLog.MessageType.ServerMessage);
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
inc.ReadPadBits();
|
|
|
|
GameMain.Server.UpdateVoteStatus();
|
|
}
|
|
|
|
public void ServerWrite(NetBuffer msg)
|
|
{
|
|
if (GameMain.Server == null) return;
|
|
|
|
msg.Write(allowSubVoting);
|
|
if (allowSubVoting)
|
|
{
|
|
List<Pair<object, int>> voteList = GetVoteList(VoteType.Sub, GameMain.Server.ConnectedClients);
|
|
msg.Write((byte)voteList.Count);
|
|
foreach (Pair<object, int> vote in voteList)
|
|
{
|
|
msg.Write((byte)vote.Second);
|
|
msg.Write(((Submarine)vote.First).Name);
|
|
}
|
|
}
|
|
msg.Write(AllowModeVoting);
|
|
if (allowModeVoting)
|
|
{
|
|
List<Pair<object, int>> voteList = GetVoteList(VoteType.Mode, GameMain.Server.ConnectedClients);
|
|
msg.Write((byte)voteList.Count);
|
|
foreach (Pair<object, int> vote in voteList)
|
|
{
|
|
msg.Write((byte)vote.Second);
|
|
msg.Write(((GameModePreset)vote.First).Identifier);
|
|
}
|
|
}
|
|
msg.Write(AllowEndVoting);
|
|
if (AllowEndVoting)
|
|
{
|
|
msg.Write((byte)GameMain.Server.ConnectedClients.Count(v => v.GetVote<bool>(VoteType.EndRound)));
|
|
msg.Write((byte)GameMain.Server.ConnectedClients.Count);
|
|
}
|
|
|
|
msg.Write(AllowVoteKick);
|
|
|
|
var readyClients = GameMain.Server.ConnectedClients.FindAll(c => c.GetVote<bool>(VoteType.StartRound));
|
|
msg.Write((byte)readyClients.Count);
|
|
foreach (Client c in readyClients)
|
|
{
|
|
msg.Write(c.ID);
|
|
}
|
|
|
|
msg.WritePadBits();
|
|
}
|
|
}
|
|
}
|