Use the same mechanism for loading ingame and shellmap ui.
This commit is contained in:
@@ -113,6 +113,16 @@ namespace OpenRA
|
||||
});
|
||||
}
|
||||
|
||||
public static Widget LoadWidget(World world, string widget, Dictionary<string, object> args)
|
||||
{
|
||||
return Widget.LoadWidget(widget, new Dictionary<string,object>(args)
|
||||
{
|
||||
{ "world", world },
|
||||
{ "orderManager", orderManager },
|
||||
{ "worldRenderer", worldRenderer },
|
||||
});
|
||||
}
|
||||
|
||||
static ActionQueue afterTickActions = new ActionQueue();
|
||||
public static void RunAfterTick(Action a) { afterTickActions.Add(a); }
|
||||
|
||||
|
||||
@@ -91,11 +91,8 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
var onQuit = (Action)(() =>
|
||||
{
|
||||
Game.DisconnectOnly();
|
||||
|
||||
// This is stupid. It should be handled by the shellmap
|
||||
Game.LoadShellMap();
|
||||
Widget.RootWidget.RemoveChildren();
|
||||
Widget.LoadWidget("MENU_BACKGROUND", new Dictionary<string, object>());
|
||||
Game.LoadShellMap();
|
||||
});
|
||||
|
||||
var doNothing = (Action)(() => {});
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OpenRA.Mods.RA
|
||||
{
|
||||
// Legacy crap
|
||||
public class OpenWidgetAtGameStartInfo : ITraitInfo
|
||||
{
|
||||
public readonly string Widget = "INGAME_ROOT";
|
||||
@@ -40,4 +42,25 @@ namespace OpenRA.Mods.RA
|
||||
Game.OpenWindow(world, Info.ObserverWidget);
|
||||
}
|
||||
}
|
||||
|
||||
// New version
|
||||
public class LoadWidgetAtGameStartInfo : ITraitInfo
|
||||
{
|
||||
public readonly string Widget = null;
|
||||
public object Create(ActorInitializer init) { return new LoadWidgetAtGameStart(this); }
|
||||
}
|
||||
|
||||
public class LoadWidgetAtGameStart: IWorldLoaded
|
||||
{
|
||||
readonly LoadWidgetAtGameStartInfo Info;
|
||||
public LoadWidgetAtGameStart(LoadWidgetAtGameStartInfo Info)
|
||||
{
|
||||
this.Info = Info;
|
||||
}
|
||||
|
||||
public void WorldLoaded(World world)
|
||||
{
|
||||
Game.LoadWidget(world, Info.Widget, new Dictionary<string, object>());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -71,12 +71,12 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
if (FileSystem.Exists(Info.TestFile))
|
||||
{
|
||||
Game.LoadShellMap();
|
||||
if (Info.InstallMode != "cnc")
|
||||
{
|
||||
Widget.RootWidget.RemoveChildren();
|
||||
if (Info.InstallMode == "cnc")
|
||||
Widget.LoadWidget("MENU_BACKGROUND", new Dictionary<string, object>());
|
||||
else
|
||||
Widget.OpenWindow("MAINMENU_BG");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MainMenuButtonsDelegate.DisplayModSelector();
|
||||
|
||||
@@ -1014,7 +1014,8 @@ Rules:
|
||||
-CrateSpawner:
|
||||
CncShellmapScript:
|
||||
DesaturatedPaletteEffect:
|
||||
-OpenWidgetAtGameStart:
|
||||
LoadWidgetAtGameStart:
|
||||
Widget:MENU_BACKGROUND
|
||||
LST:
|
||||
Mobile:
|
||||
Speed: 3
|
||||
|
||||
@@ -44,9 +44,8 @@ Player:
|
||||
SurrenderOnDisconnect:
|
||||
|
||||
World:
|
||||
OpenWidgetAtGameStart:
|
||||
LoadWidgetAtGameStart:
|
||||
Widget: INGAME_ROOT
|
||||
ObserverWidget: OBSERVER_ROOT
|
||||
ScreenShaker:
|
||||
NukePaletteEffect:
|
||||
CncWaterPaletteRotation:
|
||||
|
||||
Reference in New Issue
Block a user