diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index 02cb73d2ea..12a35f3e91 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -254,22 +254,15 @@ namespace OpenRA.Server { case "Command": { - if (GameStarted) - SendChatTo(conn, "Cannot change state when game started. ({0})".F(so.Data)); - else if (GetClient(conn).State == Session.ClientState.Ready && !(so.Data == "ready" || so.Data == "startgame")) - SendChatTo(conn, "Cannot change state when marked as ready."); - else + bool handled = false; + foreach (var t in ServerTraits.WithInterface()) + if ((handled = t.InterpretCommand(conn, GetClient(conn), so.Data))) + break; + + if (!handled) { - bool handled = false; - foreach (var t in ServerTraits.WithInterface()) - if ((handled = t.InterpretCommand(conn, GetClient(conn), so.Data))) - break; - - if (!handled) - { - Log.Write("server", "Unknown server command: {0}", so.Data); - SendChatTo(conn, "Unknown server command: {0}".F(so.Data)); - } + Log.Write("server", "Unknown server command: {0}", so.Data); + SendChatTo(conn, "Unknown server command: {0}".F(so.Data)); } } break; diff --git a/OpenRA.Game/ServerTraits/LobbyCommands.cs b/OpenRA.Game/ServerTraits/LobbyCommands.cs index d0b26ef611..caca3925bf 100644 --- a/OpenRA.Game/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Game/ServerTraits/LobbyCommands.cs @@ -22,6 +22,17 @@ namespace OpenRA.Server.Traits public bool InterpretCommand(Connection conn, Session.Client client, string cmd) { + if (Server.GameStarted) + { + Server.SendChatTo(conn, "Cannot change state when game started. ({0})".F(cmd)); + return false; + } + else if (client.State == Session.ClientState.Ready && !(cmd == "ready" || cmd == "startgame")) + { + Server.SendChatTo(conn, "Cannot change state when marked as ready."); + return false; + } + var dict = new Dictionary> { { "ready", diff --git a/OpenRA.Game/ServerTraits/PlayerCommands.cs b/OpenRA.Game/ServerTraits/PlayerCommands.cs index a530b2feab..bba283c99f 100644 --- a/OpenRA.Game/ServerTraits/PlayerCommands.cs +++ b/OpenRA.Game/ServerTraits/PlayerCommands.cs @@ -20,6 +20,17 @@ namespace OpenRA.Server.Traits { public bool InterpretCommand(Connection conn, Session.Client client, string cmd) { + if (Server.GameStarted) + { + Server.SendChatTo(conn, "Cannot change state when game started. ({0})".F(cmd)); + return false; + } + else if (client.State == Session.ClientState.Ready && !(cmd == "ready" || cmd == "startgame")) + { + Server.SendChatTo(conn, "Cannot change state when marked as ready."); + return false; + } + var dict = new Dictionary> { { "name",