Rework ProductionTabsWidget getting/setting of the current queue.

This commit is contained in:
Paul Chote
2011-07-17 15:04:33 +12:00
parent 9fb72c9063
commit 1bafd35d61
2 changed files with 52 additions and 44 deletions

View File

@@ -9,6 +9,7 @@
#endregion
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Traits;
using OpenRA.Widgets;
using OpenRA.Mods.RA;
@@ -23,13 +24,15 @@ namespace OpenRA.Mods.Cnc.Widgets
class ProductionQueueFromSelection : INotifySelection
{
ProductionQueueFromSelectionInfo info;
Lazy<ProductionTabsWidget> tabsWidget;
readonly World world;
public ProductionQueueFromSelection(World world, ProductionQueueFromSelectionInfo info)
{
this.world = world;
this.info = info;
tabsWidget = new Lazy<ProductionTabsWidget>(() =>
Widget.RootWidget.GetWidget<ProductionTabsWidget>(info.ProductionTabsWidget));
}
public void SelectionChanged()
@@ -38,9 +41,8 @@ namespace OpenRA.Mods.Cnc.Widgets
var producer = world.Selection.Actors.FirstOrDefault(a => a.IsInWorld
&& a.World.LocalPlayer == a.Owner
&& a.HasTrait<ProductionQueue>());
if (producer != null)
Widget.RootWidget.GetWidget<ProductionTabsWidget>(info.ProductionTabsWidget)
.SelectQueue(producer.TraitsImplementing<ProductionQueue>().First());
if (producer != null)
tabsWidget.Value.CurrentQueue = producer.TraitsImplementing<ProductionQueue>().First();
}
}
}