Minelayer: extract creating BeginMinefield order so it can be triggered from outside

This commit is contained in:
michaeldgg2
2023-07-08 20:15:34 +02:00
committed by Matthias Mailänder
parent ce6e73dc92
commit 8aa548f70c

View File

@@ -109,13 +109,7 @@ namespace OpenRA.Mods.Common.Traits
switch (order.OrderID) switch (order.OrderID)
{ {
case "BeginMinefield": case "BeginMinefield":
var start = self.World.Map.CellContaining(target.CenterPosition); return BeginMinefield(self, target, queued);
if (self.World.OrderGenerator is MinefieldOrderGenerator generator)
generator.AddMinelayer(self);
else
self.World.OrderGenerator = new MinefieldOrderGenerator(self, start, queued);
return new Order("BeginMinefield", self, Target.FromCell(self.World, start), queued);
case "PlaceMine": case "PlaceMine":
return new Order("PlaceMine", self, Target.FromCell(self.World, self.Location), queued); return new Order("PlaceMine", self, Target.FromCell(self.World, self.Location), queued);
default: default:
@@ -123,6 +117,17 @@ namespace OpenRA.Mods.Common.Traits
} }
} }
public static Order BeginMinefield(Actor self, Target target, bool queued)
{
var start = self.World.Map.CellContaining(target.CenterPosition);
if (self.World.OrderGenerator is MinefieldOrderGenerator generator)
generator.AddMinelayer(self);
else
self.World.OrderGenerator = new MinefieldOrderGenerator(self, start, queued);
return new Order("BeginMinefield", self, Target.FromCell(self.World, start), queued);
}
Order IIssueDeployOrder.IssueDeployOrder(Actor self, bool queued) Order IIssueDeployOrder.IssueDeployOrder(Actor self, bool queued)
{ {
return new Order("PlaceMine", self, Target.FromCell(self.World, self.Location), queued); return new Order("PlaceMine", self, Target.FromCell(self.World, self.Location), queued);