Move some mod-specific UI code out of Game
This commit is contained in:
@@ -230,33 +230,7 @@ namespace OpenRA
|
|||||||
JoinLocal();
|
JoinLocal();
|
||||||
StartGame(modData.Manifest.ShellmapUid);
|
StartGame(modData.Manifest.ShellmapUid);
|
||||||
|
|
||||||
Game.ConnectionStateChanged += orderManager =>
|
// TODO: unhardcode this
|
||||||
{
|
|
||||||
Widget.CloseWindow();
|
|
||||||
switch( orderManager.Connection.ConnectionState )
|
|
||||||
{
|
|
||||||
case ConnectionState.PreConnecting:
|
|
||||||
Widget.OpenWindow("MAINMENU_BG");
|
|
||||||
break;
|
|
||||||
case ConnectionState.Connecting:
|
|
||||||
Widget.OpenWindow( "CONNECTING_BG",
|
|
||||||
new Dictionary<string, object> { { "host", orderManager.Host }, { "port", orderManager.Port } } );
|
|
||||||
break;
|
|
||||||
case ConnectionState.NotConnected:
|
|
||||||
Widget.OpenWindow( "CONNECTION_FAILED_BG",
|
|
||||||
new Dictionary<string, object> { { "host", orderManager.Host }, { "port", orderManager.Port } } );
|
|
||||||
break;
|
|
||||||
case ConnectionState.Connected:
|
|
||||||
var lobby = Widget.OpenWindow( "SERVER_LOBBY", new Dictionary<string, object> { { "orderManager", orderManager } } );
|
|
||||||
lobby.GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
|
|
||||||
lobby.GetWidget("CHANGEMAP_BUTTON").Visible = true;
|
|
||||||
lobby.GetWidget("LOCKTEAMS_CHECKBOX").Visible = true;
|
|
||||||
lobby.GetWidget("DISCONNECT_BUTTON").Visible = true;
|
|
||||||
//r.GetWidget("INGAME_ROOT").GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
modData.WidgetLoader.LoadWidget( new Dictionary<string,object>(), Widget.RootWidget, "PERF_BG" );
|
modData.WidgetLoader.LoadWidget( new Dictionary<string,object>(), Widget.RootWidget, "PERF_BG" );
|
||||||
Widget.OpenWindow("MAINMENU_BG");
|
Widget.OpenWindow("MAINMENU_BG");
|
||||||
|
|
||||||
|
|||||||
@@ -10,11 +10,15 @@
|
|||||||
|
|
||||||
using OpenRA.FileFormats;
|
using OpenRA.FileFormats;
|
||||||
using OpenRA.Server;
|
using OpenRA.Server;
|
||||||
|
using OpenRA.Network;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace OpenRA.Widgets.Delegates
|
namespace OpenRA.Widgets.Delegates
|
||||||
{
|
{
|
||||||
public class MainMenuButtonsDelegate : IWidgetDelegate
|
public class MainMenuButtonsDelegate : IWidgetDelegate
|
||||||
{
|
{
|
||||||
|
static bool FirstInit = true;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public MainMenuButtonsDelegate( [ObjectCreator.Param] Widget widget )
|
public MainMenuButtonsDelegate( [ObjectCreator.Param] Widget widget )
|
||||||
{
|
{
|
||||||
@@ -48,6 +52,37 @@ namespace OpenRA.Widgets.Delegates
|
|||||||
MasterServerQuery.ClientVersion = version.Text;
|
MasterServerQuery.ClientVersion = version.Text;
|
||||||
|
|
||||||
MasterServerQuery.GetMOTD(Game.Settings.Server.MasterServer);
|
MasterServerQuery.GetMOTD(Game.Settings.Server.MasterServer);
|
||||||
|
|
||||||
|
if (FirstInit)
|
||||||
|
{
|
||||||
|
FirstInit = false;
|
||||||
|
Game.ConnectionStateChanged += orderManager =>
|
||||||
|
{
|
||||||
|
Widget.CloseWindow();
|
||||||
|
switch( orderManager.Connection.ConnectionState )
|
||||||
|
{
|
||||||
|
case ConnectionState.PreConnecting:
|
||||||
|
Widget.OpenWindow("MAINMENU_BG");
|
||||||
|
break;
|
||||||
|
case ConnectionState.Connecting:
|
||||||
|
Widget.OpenWindow( "CONNECTING_BG",
|
||||||
|
new Dictionary<string, object> { { "host", orderManager.Host }, { "port", orderManager.Port } } );
|
||||||
|
break;
|
||||||
|
case ConnectionState.NotConnected:
|
||||||
|
Widget.OpenWindow( "CONNECTION_FAILED_BG",
|
||||||
|
new Dictionary<string, object> { { "host", orderManager.Host }, { "port", orderManager.Port } } );
|
||||||
|
break;
|
||||||
|
case ConnectionState.Connected:
|
||||||
|
var lobby = Widget.OpenWindow( "SERVER_LOBBY", new Dictionary<string, object> { { "orderManager", orderManager } } );
|
||||||
|
lobby.GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
|
||||||
|
lobby.GetWidget("CHANGEMAP_BUTTON").Visible = true;
|
||||||
|
lobby.GetWidget("LOCKTEAMS_CHECKBOX").Visible = true;
|
||||||
|
lobby.GetWidget("DISCONNECT_BUTTON").Visible = true;
|
||||||
|
//r.GetWidget("INGAME_ROOT").GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user