Skip to content

Commit 76b06c3

Browse files
authored
#524 - Fix reordering/deletion of construction orders
1 parent 66cef11 commit 76b06c3

4 files changed

Lines changed: 20 additions & 16 deletions

File tree

FrEee.Core.Domain/Objects/GameState/Game.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,12 @@ public void EnableAbilityCache()
789789
}
790790
else if (typeof(T).IsAssignableTo(typeof(IOrder)))
791791
{
792-
list = Galaxy?.SpaceObjects?.OfType<IOrderable>().SelectMany(q => q.Orders);
792+
IEnumerable<IOrderable> orderables =
793+
[
794+
..Galaxy?.SpaceObjects?.OfType<IOrderable>(),
795+
..Galaxy?.ConstructionQueues
796+
];
797+
list = orderables.SelectMany(q => q.Orders);
793798
}
794799
else if (typeof(T).IsAssignableTo(typeof(IDesign)))
795800
{

FrEee.Plugins.Default.Commands/Orders/OrderCommand.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ protected OrderCommand(IOrderable target, IOrder order)
2727
[DoNotSerialize]
2828
public virtual IOrder Order
2929
{
30-
get
31-
{
32-
return order.Value;
33-
}
34-
set
35-
{
36-
order = value.ReferViaGalaxy();
37-
}
30+
get => order.Value;
31+
set => order = value.ReferViaGalaxy();
3832
}
3933

4034
private GameReference<IOrder> order { get; set; }

FrEee.Plugins.Default.Processes/Construction/ConstructionQueue.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -444,11 +444,14 @@ public bool IsObsoleteMemory(Empire emp)
444444

445445
public void RearrangeOrder(IOrder order, int delta)
446446
{
447-
if (order is not null && order is not IConstructionOrder)
447+
if (order is null)
448+
{
449+
throw new NullReferenceException("Can't rearrange a null order in a construction queue's orders.");
450+
}
451+
if (order is not IConstructionOrder o)
448452
{
449-
throw new Exception("Can't rearrange a " + order.GetType() + " in a construction queue's orders.");
453+
throw new ArgumentException("Can't rearrange a " + order.GetType() + " in a construction queue's orders.");
450454
}
451-
var o = (IConstructionOrder)order;
452455
var newpos = Orders.IndexOf(o) + delta;
453456
if (newpos < 0)
454457
{

FrEee.UI.WinForms/Forms/ConstructionQueueForm.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,13 @@ public IEnumerable<IConstructionOrder> SelectedOrders
5858
{
5959
foreach (ListViewItem item in lstQueue.SelectedItems)
6060
{
61-
if (item.Tag is IConstructionOrder)
62-
yield return (IConstructionOrder)item.Tag;
63-
else if (item.Tag is IEnumerable<IConstructionOrder>)
61+
if (item.Tag is IConstructionOrder order)
6462
{
65-
foreach (var o in (IEnumerable<IConstructionOrder>)item.Tag)
63+
yield return order;
64+
}
65+
else if (item.Tag is IEnumerable<IConstructionOrder> orders)
66+
{
67+
foreach (var o in orders)
6668
yield return o;
6769
}
6870
}

0 commit comments

Comments
 (0)