Added translation support for server orders.

This commit is contained in:
Matthias Mailänder
2021-12-18 20:12:28 +01:00
committed by teinarss
parent ee95d2591f
commit 0260884369
19 changed files with 834 additions and 149 deletions

View File

@@ -9,6 +9,7 @@
*/
#endregion
using System.Collections.Generic;
using System.Linq;
using OpenRA.Server;
using S = OpenRA.Server.Server;
@@ -21,6 +22,18 @@ namespace OpenRA.Mods.Common.Server
static readonly int ConnReportInterval = 20000; // Report every 20 seconds
static readonly int ConnTimeout = 60000; // Drop unresponsive clients after 60 seconds
[TranslationReference]
static readonly string PlayerDropped = "player-dropped";
[TranslationReference("player")]
static readonly string ConnectionProblems = "connection-problems";
[TranslationReference("player")]
static readonly string Timeout = "timeout";
[TranslationReference("player", "timeout")]
static readonly string TimeoutIn = "timeout-in";
long lastPing = 0;
long lastConnReport = 0;
bool isInitialPing = true;
@@ -48,7 +61,7 @@ namespace OpenRA.Mods.Common.Server
if (client == null)
{
server.DropClient(c);
server.SendMessage("A player has been dropped after timing out.");
server.SendLocalizedMessage(PlayerDropped);
continue;
}
@@ -56,13 +69,13 @@ namespace OpenRA.Mods.Common.Server
{
if (!c.TimeoutMessageShown && c.TimeSinceLastResponse > PingInterval * 2)
{
server.SendMessage(client.Name + " is experiencing connection problems.");
server.SendLocalizedMessage(ConnectionProblems, Translation.Arguments("player", client.Name));
c.TimeoutMessageShown = true;
}
}
else
{
server.SendMessage(client.Name + " has been dropped after timing out.");
server.SendLocalizedMessage(Timeout, Translation.Arguments("player", client.Name));
server.DropClient(c);
}
}
@@ -79,7 +92,14 @@ namespace OpenRA.Mods.Common.Server
{
var client = server.GetClient(c);
if (client != null)
server.SendMessage($"{client.Name} will be dropped in {(ConnTimeout - c.TimeSinceLastResponse) / 1000} seconds.");
{
var timeout = (ConnTimeout - c.TimeSinceLastResponse) / 1000;
server.SendLocalizedMessage(TimeoutIn, new Dictionary<string, object>()
{
{ "player", client.Name },
{ "timeout", timeout }
});
}
}
}
}