Add support for disabling IIssueDeployOrders.
This commit is contained in:
@@ -129,6 +129,8 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
return new Order("Detonate", self, false);
|
||||
}
|
||||
|
||||
bool IIssueDeployOrder.CanIssueDeployOrder(Actor self) { return true; }
|
||||
|
||||
string IOrderVoice.VoicePhraseForOrder(Actor self, Order order)
|
||||
{
|
||||
return info.Voice;
|
||||
|
||||
@@ -86,6 +86,8 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
return new Order("PlaceMine", self, Target.FromCell(self.World, self.Location), false);
|
||||
}
|
||||
|
||||
bool IIssueDeployOrder.CanIssueDeployOrder(Actor self) { return true; }
|
||||
|
||||
void IResolveOrder.ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (order.OrderString == "BeginMinefield")
|
||||
|
||||
@@ -669,6 +669,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new Order("ReturnToBase", self, false);
|
||||
}
|
||||
|
||||
bool IIssueDeployOrder.CanIssueDeployOrder(Actor self) { return Info.RearmBuildings.Any(); }
|
||||
|
||||
public string VoicePhraseForOrder(Actor self, Order order)
|
||||
{
|
||||
if (!Info.MoveIntoShroud && !self.Owner.Shroud.IsExplored(order.TargetLocation))
|
||||
|
||||
@@ -58,6 +58,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new Order("Detonate", self, false);
|
||||
}
|
||||
|
||||
bool IIssueDeployOrder.CanIssueDeployOrder(Actor self) { return true; }
|
||||
|
||||
public string VoicePhraseForOrder(Actor self, Order order)
|
||||
{
|
||||
return info.Voice;
|
||||
|
||||
@@ -178,6 +178,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new Order("Unload", self, false);
|
||||
}
|
||||
|
||||
bool IIssueDeployOrder.CanIssueDeployOrder(Actor self) { return true; }
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (order.OrderString == "Unload")
|
||||
|
||||
@@ -138,6 +138,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new Order("GrantConditionOnDeploy", self, false);
|
||||
}
|
||||
|
||||
bool IIssueDeployOrder.CanIssueDeployOrder(Actor self) { return true; }
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (order.OrderString != "GrantConditionOnDeploy" || deployState == DeployState.Deploying || deployState == DeployState.Undeploying)
|
||||
|
||||
@@ -105,6 +105,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new Order("DeployTransform", self, false);
|
||||
}
|
||||
|
||||
bool IIssueDeployOrder.CanIssueDeployOrder(Actor self) { return !IsTraitPaused && !IsTraitDisabled; }
|
||||
|
||||
public void DeployTransform(bool queued)
|
||||
{
|
||||
if (!queued && !CanDeploy())
|
||||
|
||||
@@ -323,6 +323,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public interface IIssueDeployOrder
|
||||
{
|
||||
Order IssueDeployOrder(Actor self);
|
||||
bool CanIssueDeployOrder(Actor self);
|
||||
}
|
||||
|
||||
public enum ActorPreviewType { PlaceBuilding, ColorPicker, MapEditorSidebar }
|
||||
|
||||
@@ -155,7 +155,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
BindButtonIcon(deployButton);
|
||||
|
||||
deployButton.IsDisabled = () => { UpdateStateIfNecessary(); return !selectedDeploys.Any(pair => pair.Trait.IsTraitEnabled()); };
|
||||
deployButton.IsDisabled = () => { UpdateStateIfNecessary(); return !selectedDeploys.Any(pair => pair.Trait.CanIssueDeployOrder(pair.Actor)); };
|
||||
deployButton.IsHighlighted = () => deployHighlighted > 0;
|
||||
deployButton.OnClick = () =>
|
||||
{
|
||||
@@ -307,7 +307,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
UpdateStateIfNecessary();
|
||||
|
||||
var orders = selectedDeploys
|
||||
.Where(pair => pair.Trait.IsTraitEnabled())
|
||||
.Where(pair => pair.Trait.CanIssueDeployOrder(pair.Actor))
|
||||
.Select(d => d.Trait.IssueDeployOrder(d.Actor))
|
||||
.Where(d => d != null)
|
||||
.ToArray();
|
||||
|
||||
Reference in New Issue
Block a user