Reset server after game
This commit is contained in:
@@ -626,7 +626,7 @@ namespace OpenRA
|
||||
|
||||
static void LogicTick()
|
||||
{
|
||||
delayedActions.PerformActions(RunTime);
|
||||
PerformDelayedActions();
|
||||
|
||||
if (OrderManager.Connection.ConnectionState != lastConnectionState)
|
||||
{
|
||||
@@ -639,6 +639,11 @@ namespace OpenRA
|
||||
InnerLogicTick(worldRenderer.World.OrderManager);
|
||||
}
|
||||
|
||||
public static void PerformDelayedActions()
|
||||
{
|
||||
delayedActions.PerformActions(RunTime);
|
||||
}
|
||||
|
||||
public static void TakeScreenshot()
|
||||
{
|
||||
takeScreenshot = true;
|
||||
|
||||
@@ -215,6 +215,10 @@ namespace OpenRA.Server
|
||||
|
||||
delayedActions.PerformActions(0);
|
||||
|
||||
// PERF: Dedicated servers need to drain the action queue to remove references blocking the GC from cleaning up disposed objects.
|
||||
if (dedicated)
|
||||
Game.PerformDelayedActions();
|
||||
|
||||
foreach (var t in serverTraits.WithInterface<ITick>())
|
||||
t.Tick(this);
|
||||
|
||||
|
||||
@@ -56,17 +56,17 @@ namespace OpenRA.Server
|
||||
|
||||
var mods = new InstalledMods(modSearchPaths, explicitModPaths);
|
||||
|
||||
Console.WriteLine("[{0}] Starting dedicated server for mod: {1}", DateTime.Now.ToString(settings.TimestampFormat), modID);
|
||||
while (true)
|
||||
{
|
||||
// HACK: The engine code *still* assumes that Game.ModData is set
|
||||
var modData = Game.ModData = new ModData(mods[modID], mods);
|
||||
modData.MapCache.LoadMaps();
|
||||
|
||||
settings.Map = modData.MapCache.ChooseInitialMap(settings.Map, new MersenneTwister());
|
||||
|
||||
Console.WriteLine("[{0}] Starting dedicated server for mod: {1}", DateTime.Now.ToString(settings.TimestampFormat), modID);
|
||||
while (true)
|
||||
{
|
||||
var server = new Server(new IPEndPoint(IPAddress.Any, settings.ListenPort), settings, modData, true);
|
||||
|
||||
GC.Collect();
|
||||
while (true)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
@@ -78,6 +78,7 @@ namespace OpenRA.Server
|
||||
}
|
||||
}
|
||||
|
||||
modData.Dispose();
|
||||
Console.WriteLine("[{0}] Starting a new server instance...", DateTime.Now.ToString(settings.TimestampFormat));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user