slight cleanup of server commands
This commit is contained in:
@@ -243,6 +243,69 @@ namespace OpenRA.Server
|
|||||||
catch (EndOfStreamException) { }
|
catch (EndOfStreamException) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool InterpretCommand(Connection conn, string cmd)
|
||||||
|
{
|
||||||
|
var dict = new Dictionary<string, Func<string, bool>>
|
||||||
|
{
|
||||||
|
{ "name",
|
||||||
|
s =>
|
||||||
|
{
|
||||||
|
Console.WriteLine("Player@{0} is now known as {1}", conn.socket.RemoteEndPoint, s);
|
||||||
|
DispatchOrders( null, 0, new ServerOrder( conn.PlayerIndex, "SetName", s ).Serialize());
|
||||||
|
return true;
|
||||||
|
}},
|
||||||
|
{ "lag",
|
||||||
|
s =>
|
||||||
|
{
|
||||||
|
int lag;
|
||||||
|
if (!int.TryParse(s, out lag)) { Console.WriteLine("Invalid order lag: {0}", s); return false; }
|
||||||
|
|
||||||
|
Console.WriteLine("Order lag is now {0} frames.", lag);
|
||||||
|
|
||||||
|
DispatchOrders(null, 0,
|
||||||
|
new ServerOrder(0, "SetLag", lag.ToString()).Serialize());
|
||||||
|
return true;
|
||||||
|
}},
|
||||||
|
{ "race",
|
||||||
|
s =>
|
||||||
|
{
|
||||||
|
int race;
|
||||||
|
if (!int.TryParse(s, out race) || race < 0 || race > 1)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid race: {0}", s);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
DispatchOrders(null, 0,
|
||||||
|
new ServerOrder(conn.PlayerIndex, "SetRace", race.ToString()).Serialize());
|
||||||
|
return true;
|
||||||
|
}},
|
||||||
|
{ "pal",
|
||||||
|
s =>
|
||||||
|
{
|
||||||
|
int pal;
|
||||||
|
if (!int.TryParse(s, out pal) || pal < 0 || pal > 7)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid palette: {0}", s);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
DispatchOrders(null, 0,
|
||||||
|
new ServerOrder(conn.PlayerIndex, "SetPalette", pal.ToString()).Serialize());
|
||||||
|
return true;
|
||||||
|
}},
|
||||||
|
};
|
||||||
|
|
||||||
|
var cmdName = cmd.Split(' ').First();
|
||||||
|
var cmdValue = string.Join(" ", cmd.Split(' ').Skip(1).ToArray());
|
||||||
|
|
||||||
|
Func<string,bool> a;
|
||||||
|
if (!dict.TryGetValue(cmdName, out a))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return a(cmdValue);
|
||||||
|
}
|
||||||
|
|
||||||
static void InterpretServerOrder(Connection conn, ServerOrder so)
|
static void InterpretServerOrder(Connection conn, ServerOrder so)
|
||||||
{
|
{
|
||||||
switch (so.Name)
|
switch (so.Name)
|
||||||
@@ -263,60 +326,12 @@ namespace OpenRA.Server
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "Chat":
|
case "Chat":
|
||||||
if (so.Data.StartsWith("/name "))
|
if (so.Data.StartsWith("/"))
|
||||||
|
if (!InterpretCommand(conn, so.Data.Substring(1)))
|
||||||
{
|
{
|
||||||
var newName = so.Data.Substring(6);
|
Console.WriteLine("Bad server command: {0}", so.Data.Substring(1));
|
||||||
Console.WriteLine("Player @{0} is now known as {1}",
|
DispatchOrdersToClient(conn, 0, new ServerOrder(conn.PlayerIndex, "Chat", "Bad server command.").Serialize());
|
||||||
conn.socket.RemoteEndPoint, newName);
|
|
||||||
|
|
||||||
DispatchOrders(null, 0,
|
|
||||||
new ServerOrder(conn.PlayerIndex, "SetName", newName).Serialize());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (so.Data.StartsWith("/lag "))
|
|
||||||
{
|
|
||||||
int lag;
|
|
||||||
if (!int.TryParse(so.Data.Substring(5), out lag))
|
|
||||||
{
|
|
||||||
Console.WriteLine("Invalid order lag: {0}",
|
|
||||||
so.Data.Substring(5));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Console.WriteLine("Order lag is now {0} frames.", lag);
|
|
||||||
|
|
||||||
DispatchOrders(null, 0,
|
|
||||||
new ServerOrder(0, "SetLag", lag.ToString()).Serialize());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (so.Data.StartsWith("/pal "))
|
|
||||||
{
|
|
||||||
int pal;
|
|
||||||
if (!int.TryParse(so.Data.Substring(5), out pal) || pal < 0 || pal > 7)
|
|
||||||
{
|
|
||||||
Console.WriteLine("Invalid palette: {0}",
|
|
||||||
so.Data.Substring(5));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DispatchOrders(null, 0,
|
|
||||||
new ServerOrder(conn.PlayerIndex, "SetPalette", pal.ToString()).Serialize());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (so.Data.StartsWith("/race "))
|
|
||||||
{
|
|
||||||
int race;
|
|
||||||
if (!int.TryParse(so.Data.Substring(6), out race) || race < 0 || race > 1)
|
|
||||||
{
|
|
||||||
Console.WriteLine("Invalid race: {0}",
|
|
||||||
so.Data.Substring(6));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DispatchOrders(null, 0,
|
|
||||||
new ServerOrder(conn.PlayerIndex, "SetRace", race.ToString()).Serialize());
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user