Added async /save command for admins+ and server console.

Redesigned TorchBase.SaveGameAsync to take a callback function for error/success handling. Also removed local host checks as we are hosting a dedicated server.
This commit is contained in:
Alexander Qvist-Hellum
2017-07-06 16:18:10 +02:00
parent 79fe6a08ab
commit 1251b945bc
4 changed files with 67 additions and 11 deletions

View File

@@ -221,5 +221,35 @@ namespace Torch.Server
_stopHandle.Set();
State = ServerState.Stopped;
}
public override void Save(long callerId)
{
base.SaveGameAsync((statusCode) => SaveCompleted(statusCode, callerId));
}
private void SaveCompleted(SaveGameStatus statusCode, long callerId)
{
switch (statusCode)
{
case SaveGameStatus.Success:
Log.Info("Save completed.");
Multiplayer.SendMessage("Saved game.", playerId: callerId);
break;
case SaveGameStatus.SaveInProgress:
Log.Error("Save failed, a save is already in progress.");
Multiplayer.SendMessage("Save failed, a save is already in progress.", playerId: callerId, font: MyFontEnum.Red);
break;
case SaveGameStatus.GameNotReady:
Log.Error("Save failed, game was not ready.");
Multiplayer.SendMessage("Save failed, game was not ready.", playerId: callerId, font: MyFontEnum.Red);
break;
case SaveGameStatus.TimedOut:
Log.Error("Save failed, save timed out.");
Multiplayer.SendMessage("Save failed, save timed out.", playerId: callerId, font: MyFontEnum.Red);
break;
default:
break;
}
}
}
}