Load the game into an intermediate state where RAInitDelegate can install packages, etc (an even bigger hack).

This commit is contained in:
Paul Chote
2011-01-19 22:51:18 +13:00
parent 6776d6f906
commit 6c14b78b7c
7 changed files with 44 additions and 45 deletions

View File

@@ -253,15 +253,17 @@ namespace OpenRA
JoinLocal();
viewport = new Viewport(new int2(Renderer.Resolution), Rectangle.Empty, Renderer);
//StartGame(ChooseShellmap());
// TODO: unhardcode this
modData.WidgetLoader.LoadWidget( new Dictionary<string,object>(), Widget.RootWidget, "PERF_BG" );
Widget.OpenWindow("MAINMENU_BG");
Widget.OpenWindow("MAINMENU_INIT");
Game.orderManager.LastTickTime = Environment.TickCount;
}
public static void LoadShellMap()
{
StartGame(ChooseShellmap());
}
static string ChooseShellmap()
{
var shellmaps = modData.AvailableMaps

View File

@@ -51,6 +51,9 @@ namespace OpenRA.Graphics
public void AddPalette(string name, Palette p)
{
if (palettes.ContainsKey(name))
throw new InvalidOperationException("Palette {0} has already been defined".F(name));
palettes.Add(name, p);
indices.Add(name, allocated++);
}

View File

@@ -26,7 +26,7 @@ namespace OpenRA
public SheetBuilder SheetBuilder;
public CursorSheetBuilder CursorSheetBuilder;
public SpriteLoader SpriteLoader;
public readonly HardwarePalette Palette;
public HardwarePalette Palette { get; private set; }
public ModData( params string[] mods )
{
@@ -38,7 +38,12 @@ namespace OpenRA
AvailableMaps = FindMaps( Manifest.Mods );
WidgetLoader = new WidgetLoader( this );
}
void LoadHackyPalettes()
{
Palette = new HardwarePalette();
Palette.AddPalette("cursor", new Palette( FileSystem.Open( "cursor.pal" ), false ));
}
public void Sucks()
@@ -48,15 +53,19 @@ namespace OpenRA
FileSystem.UnmountAll();
foreach (var dir in Manifest.Folders) FileSystem.Mount(dir);
//foreach (var pkg in Manifest.Packages) FileSystem.Mount(pkg);
Palette.AddPalette("cursor", new Palette( FileSystem.Open( "cursor.pal" ), false ));
ChromeProvider.Initialize( Manifest.Chrome );
SheetBuilder = new SheetBuilder( TextureChannel.Red );
CursorSheetBuilder = new CursorSheetBuilder( this );
SpriteLoader = new SpriteLoader(new[]{".shp"}, SheetBuilder);
CursorProvider.Initialize(Manifest.Cursors);
LoadHackyPalettes();
}
public void LoadPackages()
{
foreach (var pkg in Manifest.Packages) FileSystem.Mount(pkg);
}
public static IEnumerable<string> FindMapsIn(string dir)
@@ -124,6 +133,7 @@ namespace OpenRA
}
previousMapHadSequences = map.Sequences.Count > 0;
LoadHackyPalettes();
return map;
}