Allow hotkeying completed buildings whose icons are not visible on the production palette

This commit is contained in:
tjk-ws
2024-06-16 21:57:30 -05:00
committed by Gustas
parent 0d97f3374c
commit 387e594f4a

View File

@@ -292,13 +292,16 @@ namespace OpenRA.Mods.Common.Widgets
return HandleEvent(icon, mi.Button, mi.Modifiers); return HandleEvent(icon, mi.Button, mi.Modifiers);
} }
protected bool PickUpCompletedBuildingIcon(ProductionIcon icon, ProductionItem item) protected bool PickUpCompletedBuildingIcon(ProductionItem item)
{ {
var actor = World.Map.Rules.Actors[icon.Name]; if (item == null)
return false;
if (item != null && item.Done && actor.HasTraitInfo<BuildingInfo>()) var actor = World.Map.Rules.Actors[item.Item];
if (item.Done && actor.HasTraitInfo<BuildingInfo>())
{ {
World.OrderGenerator = new PlaceBuildingOrderGenerator(CurrentQueue, icon.Name, worldRenderer); World.OrderGenerator = new PlaceBuildingOrderGenerator(CurrentQueue, item.Item, worldRenderer);
return true; return true;
} }
@@ -307,17 +310,12 @@ namespace OpenRA.Mods.Common.Widgets
public void PickUpCompletedBuilding() public void PickUpCompletedBuilding()
{ {
foreach (var icon in icons.Values) PickUpCompletedBuildingIcon(CurrentQueue.CurrentItem());
{
var item = icon.Queued.FirstOrDefault();
if (PickUpCompletedBuildingIcon(icon, item))
break;
}
} }
bool HandleLeftClick(ProductionItem item, ProductionIcon icon, int handleCount, Modifiers modifiers) bool HandleLeftClick(ProductionItem item, ProductionIcon icon, int handleCount, Modifiers modifiers)
{ {
if (PickUpCompletedBuildingIcon(icon, item)) if (PickUpCompletedBuildingIcon(item))
{ {
Game.Sound.PlayNotification(World.Map.Rules, World.LocalPlayer, "Sounds", ClickSound, null); Game.Sound.PlayNotification(World.Map.Rules, World.LocalPlayer, "Sounds", ClickSound, null);
return true; return true;