From 1506738ff71a5fd5c987d7f8e5205147db8b0004 Mon Sep 17 00:00:00 2001 From: Regalis Date: Fri, 12 Feb 2016 23:41:28 +0200 Subject: [PATCH] Voting bugfixes --- Subsurface/Properties/AssemblyInfo.cs | 4 ++-- .../Items/Components/Holdable/Holdable.cs | 2 ++ Subsurface/Source/Networking/GameClient.cs | 16 ++++++++------ Subsurface/Source/Networking/GameServer.cs | 3 ++- Subsurface/Source/Networking/NetworkMember.cs | 3 ++- Subsurface/Source/Screens/NetLobbyScreen.cs | 3 +++ Subsurface/Source/Screens/NetLobbyVoting.cs | 2 +- Subsurface/changelog.txt | 20 ++++++++++++++++++ Subsurface_Solution.v12.suo | Bin 873984 -> 913920 bytes 9 files changed, 41 insertions(+), 12 deletions(-) diff --git a/Subsurface/Properties/AssemblyInfo.cs b/Subsurface/Properties/AssemblyInfo.cs index 47ffee42f..595743d0d 100644 --- a/Subsurface/Properties/AssemblyInfo.cs +++ b/Subsurface/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.3.1.1")] -[assembly: AssemblyFileVersion("0.3.1.1")] +[assembly: AssemblyVersion("0.3.1.3")] +[assembly: AssemblyFileVersion("0.3.1.3")] diff --git a/Subsurface/Source/Items/Components/Holdable/Holdable.cs b/Subsurface/Source/Items/Components/Holdable/Holdable.cs index 2cb8b51b2..97770fc74 100644 --- a/Subsurface/Source/Items/Components/Holdable/Holdable.cs +++ b/Subsurface/Source/Items/Components/Holdable/Holdable.cs @@ -259,6 +259,8 @@ namespace Barotrauma.Items.Components { //prevRequiredItems = new List(requiredItems); + if (!attachable) return; + if (Attached) { Use(1.0f); diff --git a/Subsurface/Source/Networking/GameClient.cs b/Subsurface/Source/Networking/GameClient.cs index ac5709976..619822fb2 100644 --- a/Subsurface/Source/Networking/GameClient.cs +++ b/Subsurface/Source/Networking/GameClient.cs @@ -15,7 +15,7 @@ namespace Barotrauma.Networking private ReliableChannel reliableChannel; - private GUIButton endRoundButton; + private GUITickBox endRoundButton; private bool connected; @@ -37,8 +37,8 @@ namespace Barotrauma.Networking public GameClient(string newName) { - endRoundButton = new GUIButton(new Rectangle(GameMain.GraphicsWidth - 170, 20, 150, 25), "End round", Alignment.TopLeft, GUI.Style, inGameHUD); - endRoundButton.OnClicked = EndRoundClicked; + endRoundButton = new GUITickBox(new Rectangle(GameMain.GraphicsWidth - 170, 20, 20, 20), "End round", Alignment.TopLeft, inGameHUD); + endRoundButton.OnSelected = ToggleEndRoundVote; endRoundButton.Visible = false; GameMain.DebugDraw = false; @@ -550,6 +550,8 @@ namespace Barotrauma.Networking { if (Character != null) Character.Remove(); + endRoundButton.Selected = false; + int seed = inc.ReadInt32(); string levelSeed = inc.ReadString(); @@ -732,17 +734,17 @@ namespace Barotrauma.Networking return false; } - public bool EndRoundClicked(GUIButton button, object userData) + public bool ToggleEndRoundVote(GUITickBox tickBox) { if (!gameStarted) return false; - if (!Voting.AllowEndVoting) + if (!Voting.AllowEndVoting || myCharacter==null) { - button.Visible = false; + tickBox.Visible = false; return false; } - Vote(VoteType.EndRound, true); + Vote(VoteType.EndRound, tickBox.Selected); return false; } diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 6bce006b0..3c9bef4e3 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -474,7 +474,8 @@ namespace Barotrauma.Networking case (byte)PacketTypes.Vote: Voting.RegisterVote(inc, ConnectedClients); - if (Voting.AllowEndVoting && + if (Voting.AllowEndVoting && EndVoteMax > 0 && + ((float)EndVoteCount / (float)EndVoteMax) >= EndVoteRequiredRatio) { EndButtonHit(null,null); diff --git a/Subsurface/Source/Networking/NetworkMember.cs b/Subsurface/Source/Networking/NetworkMember.cs index 767a9eaaa..4690236a1 100644 --- a/Subsurface/Source/Networking/NetworkMember.cs +++ b/Subsurface/Source/Networking/NetworkMember.cs @@ -253,7 +253,8 @@ namespace Barotrauma.Networking if (EndVoteCount > 0) { - GUI.DrawString(spriteBatch, new Vector2(GameMain.GraphicsWidth - 150.0f, 40), "Votes: " + EndVoteCount + "/" + EndVoteMax, Color.White); + GUI.DrawString(spriteBatch, new Vector2(GameMain.GraphicsWidth - 140.0f, 40), + "Votes (y/n): " + EndVoteCount + "/" + (EndVoteMax - EndVoteCount), Color.White, null, 0, GUI.SmallFont); } } diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Subsurface/Source/Screens/NetLobbyScreen.cs index 133383100..347631c86 100644 --- a/Subsurface/Source/Screens/NetLobbyScreen.cs +++ b/Subsurface/Source/Screens/NetLobbyScreen.cs @@ -375,6 +375,9 @@ namespace Barotrauma UpdatePlayerFrame(GameMain.Client.CharacterInfo); } + GameMain.NetworkMember.EndVoteCount = 0; + GameMain.NetworkMember.EndVoteMax = 1; + base.Select(); } diff --git a/Subsurface/Source/Screens/NetLobbyVoting.cs b/Subsurface/Source/Screens/NetLobbyVoting.cs index c4b5a53f6..d69bd5f92 100644 --- a/Subsurface/Source/Screens/NetLobbyVoting.cs +++ b/Subsurface/Source/Screens/NetLobbyVoting.cs @@ -222,8 +222,8 @@ namespace Barotrauma msg.Write(AllowEndVoting); if (AllowEndVoting) { - msg.Write((byte)voters.Count); msg.Write((byte)voters.Count(v => v.GetVote(VoteType.EndRound))); + msg.Write((byte)voters.Count); } } diff --git a/Subsurface/changelog.txt b/Subsurface/changelog.txt index 811654252..4b18426f9 100644 --- a/Subsurface/changelog.txt +++ b/Subsurface/changelog.txt @@ -1,3 +1,23 @@ +--------------------------------------------------------------------------------------------------------- +v0.3.1.3 +--------------------------------------------------------------------------------------------------------- + +- round end votes can be toggled off +- less confusing way of displaying the number of votes (yes/no instead of yes/number of voters) + +--------------------------------------------------------------------------------------------------------- +v0.3.1.2 +--------------------------------------------------------------------------------------------------------- + +- players can vote to end a round in multiplayer +- fixed fabricator syncing +- fixed hulls being invisible in the editor +- spectators can only speak to dead players +- minor changes to the map generation algorithm: there's now more variety in the cavern shapes +- added a new type of railgun shell +- diving suits wont protect from the water pressure in the abyss anymore +- added some spare buttons to Vellamo + --------------------------------------------------------------------------------------------------------- v0.3.1.1 --------------------------------------------------------------------------------------------------------- diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index 8bc3bace6ed9dda961912a085394eb1e4966a18e..bf165a2e768552cf4481a3975d2b319eb0b2e22d 100644 GIT binary patch delta 13962 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 delta 14313 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 S!uurrd)E!_oWy^cvHd@4m3y-Q