Remove save dialog when creating a new map.

This commit is contained in:
Paul Chote
2025-03-02 21:24:22 +00:00
committed by Gustas Kažukauskas
parent 1707dbd92b
commit 9913ecb42f
3 changed files with 18 additions and 23 deletions

View File

@@ -11,6 +11,7 @@
using System; using System;
using System.Linq; using System.Linq;
using OpenRA.FileSystem;
using OpenRA.Mods.Common.Terrain; using OpenRA.Mods.Common.Terrain;
using OpenRA.Widgets; using OpenRA.Widgets;
@@ -69,24 +70,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (map.Rules.TerrainInfo is ITerrainInfoNotifyMapCreated notifyMapCreated) if (map.Rules.TerrainInfo is ITerrainInfoNotifyMapCreated notifyMapCreated)
notifyMapCreated.MapCreated(map); notifyMapCreated.MapCreated(map);
Action<string> afterSave = uid => var package = new ZipFileLoader.ReadWriteZipFile();
{ map.Save(package);
map.Dispose(); map = new Map(modData, package);
Game.LoadEditor(uid); Game.LoadEditor(map);
Ui.CloseWindow();
Ui.CloseWindow(); onSelect(map.Uid);
onSelect(uid);
};
Ui.OpenWindow("SAVE_MAP_PANEL", new WidgetArgs()
{
{ "onSave", afterSave },
{ "onExit", () => { Ui.CloseWindow(); onExit(); } },
{ "map", map },
{ "world", world },
{ "playerDefinitions", map.PlayerDefinitions },
{ "actorDefinitions", map.ActorDefinitions }
});
}; };
} }
} }

View File

@@ -145,7 +145,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
} }
if (map.Package != null) if (!string.IsNullOrEmpty(map.Package?.Name))
{ {
selectedDirectory = writableDirectories.FirstOrDefault(k => k.Folder.Contains(map.Package.Name)); selectedDirectory = writableDirectories.FirstOrDefault(k => k.Folder.Contains(map.Package.Name));
selectedDirectory ??= writableDirectories.FirstOrDefault(k => Directory.GetDirectories(k.Folder.Name).Any(f => f.Contains(map.Package.Name))); selectedDirectory ??= writableDirectories.FirstOrDefault(k => Directory.GetDirectories(k.Folder.Name).Any(f => f.Contains(map.Package.Name)));

View File

@@ -519,8 +519,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return; return;
var actionManager = world.WorldActor.Trait<EditorActionManager>(); var actionManager = world.WorldActor.Trait<EditorActionManager>();
AddButton("PLAY_MAP", "Play Map") var button = AddButton("PLAY_MAP", "Play Map");
.OnClick = () => button.IsDisabled = () => leaving || string.IsNullOrEmpty(world.Map.Package.Name);
button.OnClick = () =>
{ {
hideMenu = true; hideMenu = true;
var uid = modData.MapCache.GetUpdatedMap(world.Map.Uid); var uid = modData.MapCache.GetUpdatedMap(world.Map.Uid);
@@ -618,8 +619,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void ExitEditor(EditorActionManager actionManager, Action onSuccess) void ExitEditor(EditorActionManager actionManager, Action onSuccess)
{ {
var map = modData.MapCache.GetUpdatedMap(world.Map.Uid); var deletedOrUnavailable = false;
var deletedOrUnavailable = map == null || modData.MapCache[map].Status != MapStatus.Available; if (!string.IsNullOrEmpty(world.Map.Package.Name))
{
var map = modData.MapCache.GetUpdatedMap(world.Map.Uid);
deletedOrUnavailable = map == null || modData.MapCache[map].Status != MapStatus.Available;
}
if (actionManager.HasUnsavedItems() || deletedOrUnavailable) if (actionManager.HasUnsavedItems() || deletedOrUnavailable)
{ {
hideMenu = true; hideMenu = true;