Esempio n. 1
0
        private InMemDriver DeserializeWorldState(ArraySegment <byte> rawData)
        {
            InMemDriver memStream = new InMemDriver();

            memStream.SetBuffer(rawData.ToArray());
            return(memStream);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
 public static void SetBuffer(this InMemDriver driver, byte[] buffer)
 {
     Utils.SetPrivateField(typeof(InMemDriver), "_data", driver, buffer);
 }
Esempio n. 6
0
 public static byte[] GetBuffer(this InMemDriver driver)
 {
     return(Utils.GetPrivateField <byte[]>(typeof(InMemDriver), "_data", driver));
 }