Add map update tracking to MapCache and fix crash when restarting a game

This commit is contained in:
Gustas
2022-05-08 22:53:38 +03:00
committed by abcdefg30
parent a1a50d6c98
commit 6bcf194874
2 changed files with 32 additions and 1 deletions

View File

@@ -46,6 +46,7 @@ namespace OpenRA
/// Event is not called when map is deleted
/// </summary>
public event Action<string, string> MapUpdated = (oldUID, newUID) => { };
readonly Dictionary<string, string> mapUpdates = new Dictionary<string, string>();
public MapCache(ModData modData)
{
@@ -125,7 +126,10 @@ namespace OpenRA
previews[uid].UpdateFromMap(mapPackage, package, classification, modData.Manifest.MapCompatibility, mapGrid.Type);
if (oldMap != uid)
MapUpdated(oldMap, uid);
{
if (oldMap != null)
mapUpdates.Add(oldMap, uid);
}
}
}
}
@@ -310,6 +314,22 @@ namespace OpenRA
Log.Write("debug", "MapCache.LoadAsyncInternal ended");
}
public string GetUpdatedMap(string uid)
{
if (uid == null)
return null;
while (this[uid].Status != MapStatus.Available)
{
if (mapUpdates.ContainsKey(uid))
uid = mapUpdates[uid];
else
return null;
}
return uid;
}
public void CacheMinimap(MapPreview preview)
{
bool launchPreviewLoaderThread;