Extract ExitMapEditor in IngameMenuLogic

This commit is contained in:
Gustas
2022-09-09 16:12:06 +03:00
committed by Matthias Mailänder
parent 5cc59ae3ac
commit 0e5ed6a30c

View File

@@ -484,29 +484,29 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return; return;
var actionManager = world.WorldActor.Trait<EditorActionManager>(); var actionManager = world.WorldActor.Trait<EditorActionManager>();
var button = AddButton("EXIT_EDITOR", ExitMapButton); AddButton("EXIT_EDITOR", ExitMapButton)
.OnClick = () => ExitEditor(actionManager, () => OnQuit(world));
}
// Show dialog only if updated since last save void ExitEditor(EditorActionManager actionManager, Action onSuccess)
button.OnClick = () => {
var map = modData.MapCache.GetUpdatedMap(world.Map.Uid);
var deletedOrUnavailable = map == null || modData.MapCache[map].Status != MapStatus.Available;
if (actionManager.HasUnsavedItems() || deletedOrUnavailable)
{ {
var map = modData.MapCache.GetUpdatedMap(world.Map.Uid); hideMenu = true;
var deletedOrUnavailable = map == null || modData.MapCache[map].Status != MapStatus.Available; ConfirmationDialogs.ButtonPrompt(modData,
if (actionManager.HasUnsavedItems() || deletedOrUnavailable) title: ExitMapEditorTitle,
{ text: deletedOrUnavailable ? ExitMapEditorPromptDeleted : ExitMapEditorPromptUnsaved,
hideMenu = true; confirmText: deletedOrUnavailable ? ExitMapEditorAnywayConfirm : ExitMapEditorConfirm,
ConfirmationDialogs.ButtonPrompt(modData, onConfirm: () => { onSuccess(); leaving = true; },
title: ExitMapEditorTitle, onCancel: ShowMenu);
text: deletedOrUnavailable ? ExitMapEditorPromptDeleted : ExitMapEditorPromptUnsaved, }
confirmText: deletedOrUnavailable ? ExitMapEditorAnywayConfirm : ExitMapEditorConfirm, else
onConfirm: () => { OnQuit(world); leaving = true; }, {
onCancel: ShowMenu); onSuccess();
} leaving = true;
else }
{
OnQuit(world);
leaving = true;
}
};
} }
} }
} }