Saner load code for cnc. Installing not yet implemented.

This commit is contained in:
Paul Chote
2011-05-09 20:39:26 +12:00
parent 3d347848f3
commit 372d2f5426
11 changed files with 170 additions and 97 deletions

View File

@@ -14,6 +14,8 @@ using System.Linq;
using OpenRA.Support;
using OpenRA.Graphics;
using OpenRA.Widgets;
using OpenRA.FileFormats;
using System;
namespace OpenRA.Mods.Cnc
{
@@ -25,6 +27,7 @@ namespace OpenRA.Mods.Cnc
"Splitting Atoms..."
};
Dictionary<string,string> Info;
Stopwatch lastLoadScreen = new Stopwatch();
Rectangle StripeRect, BgRect;
Sprite Stripe, Logo, Bg;
@@ -32,8 +35,9 @@ namespace OpenRA.Mods.Cnc
Renderer r;
SpriteFont Font;
public void Init()
public void Init(Dictionary<string, string> info)
{
Info = info;
// Avoid standard loading mechanisms so we
// can display loadscreen as early as possible
r = Game.Renderer;
@@ -73,8 +77,22 @@ namespace OpenRA.Mods.Cnc
public void StartGame()
{
Widget.RootWidget.RemoveChildren();
Game.modData.WidgetLoader.LoadWidget( new Dictionary<string,object>(), Widget.RootWidget, "INIT_SETUP" );
TestAndContinue();
}
void TestAndContinue()
{
if (!FileSystem.Exists(Info["TestFile"]))
{
var args = new Dictionary<string, object>()
{
{ "continueLoading", (Action)(() => TestAndContinue()) },
{ "installData", Info }
};
Game.modData.WidgetLoader.LoadWidget(args, Widget.RootWidget, Info["InstallerWidget"]);
}
else
Game.LoadShellMap();
}
}
}

View File

@@ -79,6 +79,7 @@
<Compile Include="Widgets\CncMapChooserLogic.cs" />
<Compile Include="Widgets\CncConnectionLogic.cs" />
<Compile Include="Widgets\CncIngameChromeLogic.cs" />
<Compile Include="Widgets\CncInstallLogic.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">

View File

@@ -0,0 +1,50 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Net;
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.Zip;
using OpenRA.FileFormats;
using OpenRA.Network;
using OpenRA.Widgets;
using System.Threading;
using OpenRA.Mods.RA.Widgets;
namespace OpenRA.Mods.Cnc.Widgets
{
public class CncInstallLogic : IWidgetDelegate
{
[ObjectCreator.UseCtor]
public CncInstallLogic([ObjectCreator.Param] Widget widget,
[ObjectCreator.Param] Dictionary<string,string> installData,
[ObjectCreator.Param] Action continueLoading)
{
var panel = widget.GetWidget("INSTALL_PANEL");
var args = new Dictionary<string, object>()
{
{ "continueLoading", continueLoading },
{ "installData", installData }
};
panel.GetWidget<CncMenuButtonWidget>("DOWNLOAD_BUTTON").OnClick = () =>
Widget.OpenWindow("INSTALL_DOWNLOAD_PANEL", args);
panel.GetWidget<CncMenuButtonWidget>("INSTALL_BUTTON").OnClick = () =>
Widget.OpenWindow("INSTALL_FROMCD_PANEL", args);
//panel.GetWidget<CncMenuButtonWidget>("MODS_BUTTON").OnClick = ShowModDialog;
panel.GetWidget<CncMenuButtonWidget>("QUIT_BUTTON").OnClick = Game.Exit;
}
}
}