Skip to content

Commit 80df685

Browse files
authored
#632 - add new vehicle designs to the game when they are being added to construction queues if they don't exist there already
1 parent a4f4afb commit 80df685

4 files changed

Lines changed: 31 additions & 11 deletions

File tree

FrEee.Core.Domain/Objects/Civilization/Orders/ConstructionOrder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public string Name
7070
{
7171
get
7272
{
73-
return Template.Name;
73+
return Template?.Name ?? "(no template)";
7474
}
7575
}
7676

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,32 @@ public Image FirstItemIcon
143143
{
144144
get
145145
{
146-
return Orders.FirstOrDefault()?.Template.Icon ?? Pictures.GetSolidColorImage(Color.Transparent);
146+
var blankImage = Pictures.GetSolidColorImage(Color.Transparent);
147+
try
148+
{
149+
return Orders?.FirstOrDefault()?.Template?.Icon ?? blankImage;
150+
}
151+
catch (Exception ex)
152+
{
153+
Console.Error.WriteLine(ex);
154+
return blankImage;
155+
}
147156
}
148157
}
149158

150159
public string? FirstItemName
151160
{
152161
get
153162
{
154-
return Orders.FirstOrDefault()?.Template.Name;
163+
try
164+
{
165+
return Orders?.FirstOrDefault()?.Template?.Name;
166+
}
167+
catch (Exception ex)
168+
{
169+
Console.Error.WriteLine(ex);
170+
return null;
171+
}
155172
}
156173
}
157174

FrEee.Plugins.Default.Vehicles/Design.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -629,11 +629,8 @@ public void Clean()
629629

630630
public IConstructionOrder CreateConstructionOrder(IConstructionQueue queue)
631631
{
632-
var dtype = GetType();
633-
var vtype = dtype.GetGenericArguments()[0];
634-
var ordertype = typeof(ConstructionOrder<,>).MakeGenericType(vtype, dtype);
635-
var o = (IConstructionOrder)Activator.CreateInstance(ordertype);
636-
o.GetType().GetProperty("Template").SetValue(o, this, new object[] { });
632+
var o = new ConstructionOrder<T, Design<T>>();
633+
o.Template = this;
637634
return o;
638635
}
639636

FrEee.UI.WinForms/Forms/ConstructionQueueForm.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ private void BindQueueListView(IEnumerable<IConstructionOrder> selected = null)
231231
fore = lstQueue.BackColor;
232232
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, firstEta.CeilingString(1) + "(" + eta.CeilingString(1) + ")", fore, back, lstQueue.Font));
233233
item.ImageIndex = i;
234-
il.Images.Add(order.Template.Icon);
234+
il.Images.Add(order.Template?.Icon ?? Pictures.GetSolidColorImage(Color.Transparent));
235235
lstQueue.Items.Add(item);
236236
i++;
237237
}
@@ -751,12 +751,18 @@ private void lstShips_MouseDown(object sender, MouseEventArgs e)
751751
amount *= 100;
752752

753753
// is this a new design we've never built before? then tell the server about it
754+
var isNewDesign = false;
754755
if (design.ID <= 0)
755756
{
756757
Game.Current.AssignID(design);
757-
design.IsNew = true;
758+
design.IsNew = isNewDesign = true;
759+
}
760+
if (!Game.Current.Designs.Contains(design))
761+
{
762+
Game.Current.Designs.Add(design);
763+
design.IsNew = isNewDesign = true;
758764
}
759-
if (design.IsNew && !BuildingAnywhere(design))
765+
if (isNewDesign)
760766
{
761767
Empire.Current.Commands.Add(design.CreateCreationCommand());
762768
}

0 commit comments

Comments
 (0)