Add a mechanism for custom drop messages. Implement for kick.
This commit is contained in:
@@ -27,6 +27,7 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
public readonly string Host;
|
public readonly string Host;
|
||||||
public readonly int Port;
|
public readonly int Port;
|
||||||
|
public string ServerError;
|
||||||
|
|
||||||
public int NetFrameNumber { get; private set; }
|
public int NetFrameNumber { get; private set; }
|
||||||
public int LocalFrameNumber;
|
public int LocalFrameNumber;
|
||||||
|
|||||||
@@ -128,7 +128,9 @@ namespace OpenRA.Network
|
|||||||
orderManager.IssueOrder(Order.HandshakeResponse(response.Serialize()));
|
orderManager.IssueOrder(Order.HandshakeResponse(response.Serialize()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "ServerError":
|
||||||
|
orderManager.ServerError = order.TargetString;
|
||||||
|
break;
|
||||||
case "SyncInfo":
|
case "SyncInfo":
|
||||||
{
|
{
|
||||||
orderManager.LobbyInfo = Session.Deserialize(order.TargetString);
|
orderManager.LobbyInfo = Session.Deserialize(order.TargetString);
|
||||||
|
|||||||
@@ -309,9 +309,14 @@ namespace OpenRA.Server
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void SendChatTo(Connection conn, string text)
|
public void SendChatTo(Connection conn, string text)
|
||||||
|
{
|
||||||
|
SendOrderTo(conn, "Chat", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SendOrderTo(Connection conn, string order, string data)
|
||||||
{
|
{
|
||||||
DispatchOrdersToClient(conn, 0, 0,
|
DispatchOrdersToClient(conn, 0, 0,
|
||||||
new ServerOrder("Chat", text).Serialize());
|
new ServerOrder(order, data).Serialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendChat(Connection asConn, string text)
|
public void SendChat(Connection asConn, string text)
|
||||||
|
|||||||
@@ -242,6 +242,7 @@ namespace OpenRA.Mods.RA.Server
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server.SendOrderTo(connToKick, "ServerError", "You have been kicked from the server");
|
||||||
server.DropClient(connToKick);
|
server.DropClient(connToKick);
|
||||||
|
|
||||||
server.SyncLobbyInfo();
|
server.SyncLobbyInfo();
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
|||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public ConnectionFailedDelegate(
|
public ConnectionFailedDelegate(
|
||||||
[ObjectCreator.Param] Widget widget,
|
[ObjectCreator.Param] Widget widget,
|
||||||
[ObjectCreator.Param] string host,
|
[ObjectCreator.Param] OrderManager orderManager)
|
||||||
[ObjectCreator.Param] int port )
|
|
||||||
{
|
{
|
||||||
widget.GetWidget("CONNECTION_BUTTON_CANCEL").OnMouseUp = mi => {
|
widget.GetWidget("CONNECTION_BUTTON_CANCEL").OnMouseUp = mi => {
|
||||||
widget.GetWidget("CONNECTION_BUTTON_CANCEL").Parent.Visible = false;
|
widget.GetWidget("CONNECTION_BUTTON_CANCEL").Parent.Visible = false;
|
||||||
@@ -46,12 +45,12 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
widget.GetWidget("CONNECTION_BUTTON_RETRY").OnMouseUp = mi => {
|
widget.GetWidget("CONNECTION_BUTTON_RETRY").OnMouseUp = mi => {
|
||||||
Game.JoinServer(host, port);
|
Game.JoinServer(orderManager.Host, orderManager.Port);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
widget.GetWidget<LabelWidget>("CONNECTION_FAILED_DESC").GetText = () =>
|
widget.GetWidget<LabelWidget>("CONNECTION_FAILED_DESC").GetText = () => string.IsNullOrEmpty(orderManager.ServerError) ?
|
||||||
"Could not connect to {0}:{1}".F(host, port);
|
"Could not connect to {0}:{1}".F(orderManager.Host, orderManager.Port) : orderManager.ServerError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
|||||||
break;
|
break;
|
||||||
case ConnectionState.NotConnected:
|
case ConnectionState.NotConnected:
|
||||||
Widget.OpenWindow( "CONNECTION_FAILED_BG",
|
Widget.OpenWindow( "CONNECTION_FAILED_BG",
|
||||||
new Dictionary<string, object> { { "host", orderManager.Host }, { "port", orderManager.Port } } );
|
new Dictionary<string, object> { { "orderManager", orderManager } } );
|
||||||
break;
|
break;
|
||||||
case ConnectionState.Connected:
|
case ConnectionState.Connected:
|
||||||
var lobby = Widget.OpenWindow( "SERVER_LOBBY", new Dictionary<string, object> { { "orderManager", orderManager } } );
|
var lobby = Widget.OpenWindow( "SERVER_LOBBY", new Dictionary<string, object> { { "orderManager", orderManager } } );
|
||||||
|
|||||||
Reference in New Issue
Block a user