public static void InitializeWithMods(string[] mods)
{
// Clear static state if we have switched mods
LobbyInfoChanged = () => {};
AddChatLine = (a, b, c) => {};
ConnectionStateChanged = om => {};
BeforeGameStart = () => {};
Ui.ResetAll();
worldRenderer = null;
if (server != null)
{
server.Shutdown();
}
if (orderManager != null)
{
orderManager.Dispose();
}
// Discard any invalid mods
var mm = mods.Where(m => Mod.AllMods.ContainsKey(m)).ToArray();
Console.WriteLine("Loading mods: {0}", mm.JoinWith(","));
Settings.Game.Mods = mm;
Settings.Save();
Sound.StopMusic();
Sound.StopVideo();
Sound.Initialize();
modData = new ModData(mm);
Renderer.InitializeFonts(modData.Manifest);
modData.LoadInitialAssets();
PerfHistory.items["render"].hasNormalTick = false;
PerfHistory.items["batches"].hasNormalTick = false;
PerfHistory.items["render_widgets"].hasNormalTick = false;
PerfHistory.items["render_flip"].hasNormalTick = false;
JoinLocal();
viewport = new Viewport(new int2(Renderer.Resolution), Rectangle.Empty, Renderer);
modData.LoadScreen.StartGame();
}