remove duplicated mod prerequisite chain walk; write it clearly
This commit is contained in:
@@ -47,5 +47,12 @@ namespace OpenRA.FileFormats
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public string[] WithPrerequisites()
|
||||
{
|
||||
return Id.Iterate(m => AllMods[m].Requires)
|
||||
.TakeWhile(m => m != null)
|
||||
.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,12 +50,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
|
||||
void LoadMod(string mod, Action onSwitch)
|
||||
{
|
||||
var mods = new List<string>();
|
||||
while (!string.IsNullOrEmpty(mod))
|
||||
{
|
||||
mods.Add(mod);
|
||||
mod = Mod.AllMods[mod].Requires;
|
||||
}
|
||||
var mods = Mod.AllMods[mod].WithPrerequisites();
|
||||
|
||||
Game.RunAfterTick(() =>
|
||||
{
|
||||
|
||||
@@ -46,12 +46,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
|
||||
static void LoadMod(string mod)
|
||||
{
|
||||
var mods = new List<string>();
|
||||
while (!string.IsNullOrEmpty(mod))
|
||||
{
|
||||
mods.Add(mod);
|
||||
mod = Mod.AllMods[mod].Requires;
|
||||
}
|
||||
var mods = Mod.AllMods[mod].WithPrerequisites();
|
||||
|
||||
if (Game.CurrentMods.Keys.ToArray().SymmetricDifference(mods.ToArray()).Any())
|
||||
Game.RunAfterTick(() => Game.InitializeWithMods(mods.ToArray()));
|
||||
|
||||
Reference in New Issue
Block a user