Prevent saving and starting a map when max player count is exceeded.

This commit is contained in:
abc013
2021-07-03 12:15:39 +01:00
committed by Smittytron
parent 347a09e6cf
commit 2742985520
4 changed files with 26 additions and 4 deletions

View File

@@ -351,12 +351,27 @@ namespace OpenRA.Mods.Common.Widgets.Logic
hideMenu = true;
var editorActorLayer = world.WorldActor.Trait<EditorActorLayer>();
var actionManager = world.WorldActor.Trait<EditorActionManager>();
var playerDefinitions = editorActorLayer.Players.ToMiniYaml();
var playerCount = new MapPlayers(playerDefinitions).Players.Count;
if (playerCount > MapPlayers.MaximumPlayerCount)
{
ConfirmationDialogs.ButtonPrompt(
title: "Error: Max player count exceeded",
text: $"There are too many players defined ({playerCount}/{MapPlayers.MaximumPlayerCount}).",
onConfirm: ShowMenu,
confirmText: "Back");
return;
}
Ui.OpenWindow("SAVE_MAP_PANEL", new WidgetArgs()
{
{ "onSave", (Action<string>)(_ => { hideMenu = false; actionManager.Modified = false; }) },
{ "onExit", () => hideMenu = false },
{ "map", world.Map },
{ "playerDefinitions", editorActorLayer.Players.ToMiniYaml() },
{ "playerDefinitions", playerDefinitions },
{ "actorDefinitions", editorActorLayer.Save() }
});
};