private InMemDriver DeserializeWorldState(ArraySegment <byte> rawData) { InMemDriver memStream = new InMemDriver(); memStream.SetBuffer(rawData.ToArray()); return(memStream); }
private bool ReceiveWorldState(ArraySegment <byte> rawData) { Logger.Debug("Total: {sizeInMemory} bytes.", rawData.Count); InMemDriver stream = DeserializeWorldState(rawData); if (stream == null) { Logger.Error("Error during world state serialization. Abort."); return(false); } LoadGameResult loadResult = SaveLoad.LoadSaveGameData(stream); if (loadResult == null) { Logger.Error("Unable to load world state. Abort."); return(false); } if (loadResult.LoadResult.Successful) { Logger.Info(loadResult.ToFriendlyString()); } else { Logger.Error(loadResult.ToFriendlyString()); } GameLoopRunner.RunOnMainThread(() => SaveLoad.LoadGame(loadResult.LoadResult)); return(true); }
public byte[] SerializeInitialWorldState() { CampaignEventDispatcher.Instance.OnBeforeSave(); // Save to memory InMemDriver memStream = new InMemDriver(); SaveOutput save = null; GameLoopRunner.RunOnMainThread( () => save = SaveLoad.SaveGame(TaleWorlds.Core.Game.Current, memStream)); Logger.Info(save.ToFriendlyString()); // Write packet ByteWriter writer = new ByteWriter(); writer.Binary.Write((int)ECommand.InitialWorldState); writer.Binary.Write(save.Data.GetData()); return(writer.ToArray()); }
public byte[] SerializeInitialWorldState() { CampaignEventDispatcher.Instance.OnBeforeSave(); // Save to memory InMemDriver memStream = new InMemDriver(); SaveGameData save = null; GameLoopRunner.RunOnMainThread(() => save = SaveLoad.SaveGame(Game.Current, memStream)); if (save == null) { throw new Exception("Saving the game failed. Abort."); } Logger.Info(save); // Write packet ByteWriter writer = new ByteWriter(); writer.Binary.Write((int)ECommand.InitialWorldState); save.Serialize(writer); return(writer.ToArray()); }
public static void SetBuffer(this InMemDriver driver, byte[] buffer) { Utils.SetPrivateField(typeof(InMemDriver), "_data", driver, buffer); }
public static byte[] GetBuffer(this InMemDriver driver) { return(Utils.GetPrivateField <byte[]>(typeof(InMemDriver), "_data", driver)); }