Remove inconsistencies w.r.t the Surrender order

* Surrendering is now possible even in maps that do not use
  ConquestVictoryConditions.
* The Surrender button is greyed out instead of hidden when it cannot be
  used.
This commit is contained in:
Oliver Brakmann
2014-08-04 00:34:38 +02:00
parent dc33e0e1b0
commit d673520d82
3 changed files with 12 additions and 4 deletions

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA
public object Create(ActorInitializer init) { return new ConquestVictoryConditions(init.self, this); }
}
public class ConquestVictoryConditions : ITick, IResolveOrder, INotifyObjectivesUpdated
public class ConquestVictoryConditions : ITick, INotifyObjectivesUpdated
{
readonly ConquestVictoryConditionsInfo info;
readonly MissionObjectives mo;

View File

@@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA
public object Create(ActorInitializer init) { return new MissionObjectives(init.world, this); }
}
public class MissionObjectives : INotifyObjectivesUpdated, ISync
public class MissionObjectives : INotifyObjectivesUpdated, ISync, IResolveOrder
{
readonly MissionObjectivesInfo info;
readonly List<MissionObjective> objectives = new List<MissionObjective>();
@@ -202,6 +202,13 @@ namespace OpenRA.Mods.RA
public void OnObjectiveAdded(Player player, int id) {}
public void OnObjectiveCompleted(Player player, int id) {}
public void OnObjectiveFailed(Player player, int id) {}
public void ResolveOrder(Actor self, Order order)
{
if (order.OrderString == "Surrender")
for (var id = 0; id < objectives.Count; id++)
MarkFailed(self.Owner, id);
}
}
[Desc("Provides game mode progress information for players.",

View File

@@ -85,7 +85,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
hideMenu = true;
ConfirmationDialogs.PromptConfirmAction("Surrender", "Are you sure you want to surrender?", onSurrender, showMenu);
};
widget.Get("SURRENDER").IsVisible = () => world.LocalPlayer != null && world.LocalPlayer.WinState == WinState.Undefined;
surrenderButton.IsDisabled = () => world.LocalPlayer == null || world.LocalPlayer.WinState != WinState.Undefined;
menu.Get<ButtonWidget>("MUSIC").OnClick = () =>
{
@@ -97,7 +97,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
});
};
menu.Get<ButtonWidget>("SETTINGS").OnClick = () =>
var settingsButton = widget.Get<ButtonWidget>("SETTINGS");
settingsButton.OnClick = () =>
{
hideMenu = true;
Ui.OpenWindow("SETTINGS_PANEL", new WidgetArgs()