Add map update tracking to MapCache and fix crash when restarting a game
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user