Fix IsSinglePlayer

This commit is contained in:
rob-v
2017-05-16 22:34:20 +02:00
committed by Paul Chote
parent 8a508ecafa
commit 78bedb0513
11 changed files with 29 additions and 24 deletions

View File

@@ -90,9 +90,14 @@ namespace OpenRA.Network
return Slots.FirstOrDefault(s => !s.Value.Closed && ClientInSlot(s.Key) == null && s.Value.AllowBots).Key;
}
public bool IsSinglePlayer
public IEnumerable<Client> NonBotClients
{
get { return Clients.Count(c => c.Bot == null) == 1; }
get { return Clients.Where(c => c.Bot == null); }
}
public IEnumerable<Client> NonBotPlayers
{
get { return Clients.Where(c => c.Bot == null && c.Slot != null); }
}
public enum ClientState { NotReady, Invalid, Ready, Disconnected = 1000 }

View File

@@ -118,7 +118,7 @@ namespace OpenRA.Network
if (client != null)
{
var pause = order.TargetString == "Pause";
if (orderManager.World.Paused != pause && world != null && !world.LobbyInfo.IsSinglePlayer)
if (orderManager.World.Paused != pause && world != null && world.LobbyInfo.NonBotClients.Count() > 1)
{
var pausetext = "The game is {0} by {1}".F(pause ? "paused" : "un-paused", client.Name);
Game.AddChatLine(Color.White, ServerChatName, pausetext);

View File

@@ -375,7 +375,7 @@ namespace OpenRA.Server
Log.Write("server", "{0} ({1}) has joined the game.",
client.Name, newConn.Socket.RemoteEndPoint);
if (Dedicated || !LobbyInfo.IsSinglePlayer)
if (LobbyInfo.NonBotClients.Count() > 1)
SendMessage("{0} has joined the game.".F(client.Name));
// Send initial ping
@@ -392,7 +392,7 @@ namespace OpenRA.Server
SendOrderTo(newConn, "Message", motd);
}
if (!LobbyInfo.IsSinglePlayer && Map.DefinesUnsafeCustomRules)
if (Map.DefinesUnsafeCustomRules)
SendOrderTo(newConn, "Message", "This map contains custom rules. Game experience may change.");
if (!LobbyInfo.GlobalSettings.EnableSingleplayer)
@@ -679,7 +679,7 @@ namespace OpenRA.Server
}
// HACK: Turn down the latency if there is only one real player
if (LobbyInfo.IsSinglePlayer)
if (LobbyInfo.NonBotClients.Count() == 1)
LobbyInfo.GlobalSettings.OrderLatency = 1;
SyncLobbyInfo();

View File

@@ -10,6 +10,7 @@
#endregion
using System.Collections.Generic;
using System.Linq;
namespace OpenRA.Traits
{
@@ -113,7 +114,7 @@ namespace OpenRA.Traits
void INotifyCreated.Created(Actor self)
{
Enabled = self.World.LobbyInfo.IsSinglePlayer || self.World.LobbyInfo.GlobalSettings
Enabled = self.World.LobbyInfo.NonBotPlayers.Count() == 1 || self.World.LobbyInfo.GlobalSettings
.OptionOrDefault("cheats", info.Enabled);
}