Ejemplo n.º 1
0
        public static SaveOutput SaveGame(TaleWorlds.Core.Game game, ISaveDriver driver)
        {
            EntitySystem <GameHandler> entitySystem =
                Utils.GetPrivateField <EntitySystem <GameHandler> >(
                    typeof(TaleWorlds.Core.Game),
                    "_gameEntitySystem",
                    game);
            MetaData metaData = GetMetaData();

            // Code copied from TaleWorlds.Game.Save(MetaData, ISaveDriver)
            foreach (GameHandler gameHandler in entitySystem.Components)
            {
                gameHandler.OnBeforeSave();
            }

            SaveOutput saveOutput = SaveManager.Save(game, metaData, driver);

            saveOutput.PrintStatus();
            foreach (GameHandler gameHandler2 in entitySystem.Components)
            {
                gameHandler2.OnAfterSave();
            }
            // End code copy

            return(saveOutput);
        }
Ejemplo n.º 2
0
        public static LoadGameResult LoadSaveGameData(
            string saveName,
            string[] loadedModuleNames)
        {
            List <ModuleInfo> modules = MBSaveLoad.GetModules(loadedModuleNames);

            MBSaveLoad.InitializeAutoSaveIndex(saveName);
            string      fileName = saveName + ".sav";
            ISaveDriver driver   = MBSaveLoad._saveDriver;

            driver.SetFileName(fileName);
            ApplicationVersion applicationVersion = driver.LoadMetaData().GetApplicationVersion();

            if (applicationVersion.Major <= 1 && applicationVersion.Minor <= 4 && applicationVersion.Revision < 2)
            {
                driver = (ISaveDriver) new OldFileDriver();
                driver.SetFileName(fileName);
            }
            LoadResult loadResult = SaveManager.Load(driver, true);

            if (loadResult.Successful)
            {
                MBSaveLoad.ActiveSaveSlotName = !MBSaveLoad.IsSaveFileNameReserved(saveName) ? saveName : (string)null;
                return(new LoadGameResult(loadResult, MBSaveLoad.CheckModules(loadResult.MetaData, modules)));
            }
            Debug.Print("Error: Could not load the game!");
            return((LoadGameResult)null);
        }
Ejemplo n.º 3
0
        public static LoadResult Load(ISaveDriver driver, bool loadAsLateInitialize)
        {
            DefinitionContext definitionContext = new DefinitionContext();

            definitionContext.FillWithCurrentTypes();
            LoadContext loadContext = new LoadContext(definitionContext, driver);
            LoadData    loadData    = driver.Load();
            LoadResult  loadResult;

            if (loadContext.Load(loadData, loadAsLateInitialize))
            {
                LoadCallbackInitializator loadCallbackInitializator = (LoadCallbackInitializator)null;
                if (loadAsLateInitialize)
                {
                    loadCallbackInitializator = loadContext.CreateLoadCallbackInitializator(loadData);
                }
                loadResult = LoadResult.CreateSuccessful(loadContext.RootObject, loadData.MetaData, loadCallbackInitializator);
            }
            else
            {
                loadResult = LoadResult.CreateFailed((IEnumerable <LoadError>) new LoadError[1]
                {
                    new LoadError("Not implemented")
                });
            }
            return(loadResult);
        }
 public LoadContext(DefinitionContext definitionContext, ISaveDriver driver)
 {
     this.DefinitionContext         = definitionContext;
     this._objectHeaderLoadDatas    = (ObjectHeaderLoadData[])null;
     this._containerHeaderLoadDatas = (ContainerHeaderLoadData[])null;
     this._strings = (string[])null;
     this.Driver   = driver;
 }
Ejemplo n.º 5
0
        public static LoadGameResult LoadSaveGameData(ISaveDriver driver)
        {
            List <ModuleInfo> currentModules = GetModules();
            LoadResult        loadResult     = SaveManager.Load(driver, true);

            if (loadResult.Successful)
            {
                return(new LoadGameResult(
                           loadResult,
                           CheckModules(driver.LoadMetaData(), currentModules)));
            }

            return(null);
        }
Ejemplo n.º 6
0
 public static SaveOutput Save(object target, MetaData metaData, ISaveDriver driver)
 {
     if (SaveManager._definitionContext == null)
     {
         SaveManager.InitializeGlobalDefinitionContext();
     }
     if (SaveManager._definitionContext.GotError)
     {
         List <SaveError> saveErrorList = new List <SaveError>();
         foreach (string error in SaveManager._definitionContext.Errors)
         {
             saveErrorList.Add(new SaveError(error));
         }
         return(SaveOutput.CreateFailed((IEnumerable <SaveError>)saveErrorList));
     }
     using (new PerformanceTestBlock("Save Context"))
     {
         Debug.Print("Saving with new context");
         SaveContext saveContext = new SaveContext(SaveManager._definitionContext);
         if (saveContext.Save(target, metaData))
         {
             try
             {
                 driver.Save(1, metaData, saveContext.SaveData);
                 return(SaveOutput.CreateSuccessful(saveContext.SaveData));
             }
             catch (Exception ex)
             {
                 return(SaveOutput.CreateFailed((IEnumerable <SaveError>) new SaveError[1]
                 {
                     new SaveError(ex.Message)
                 }));
             }
         }
         else
         {
             return(SaveOutput.CreateFailed((IEnumerable <SaveError>) new SaveError[1]
             {
                 new SaveError("Not implemented")
             }));
         }
     }
 }
Ejemplo n.º 7
0
        private static bool SaveGame(string saveName, MetaData metaData)
        {
            string      fileName   = saveName + ".sav";
            ISaveDriver saveDriver = MBSaveLoad._saveDriver;

            saveDriver.SetFileName(fileName);
            bool flag = false;

            try
            {
                flag = Game.Current.Save(metaData, saveDriver);
            }
            catch (Exception ex)
            {
                Debug.Print("Unable to create save game data");
                Debug.Print(ex.Message);
                Debug.SilentAssert(ModuleHelper.GetModules().Any <ModuleInfo>((Func <ModuleInfo, bool>)(m => !m.IsOfficial)), ex.Message, callerFile: "C:\\Develop\\mb3\\Source\\Bannerlord\\TaleWorlds.Core\\MBSaveLoad.cs", callerMethod: nameof(SaveGame), callerLine: 334);
            }
            return(flag);
        }
Ejemplo n.º 8
0
        public static SaveGameData SaveGame(Game game, ISaveDriver driver)
        {
            EntitySystem <GameHandler> entitySystem =
                Utils.GetPrivateField <EntitySystem <GameHandler> >(
                    typeof(Game),
                    "_gameEntitySystem",
                    game);
            MetaData metaData = GetMetaData();

            foreach (GameHandler gameHandler in entitySystem.Components)
            {
                gameHandler.OnBeforeSave();
            }

            SaveOutput saveOutput = SaveManager.Save(game, metaData, driver);

            saveOutput.PrintStatus();
            foreach (GameHandler gameHandler2 in entitySystem.Components)
            {
                gameHandler2.OnAfterSave();
            }

            return(new SaveGameData(metaData, saveOutput));
        }
Ejemplo n.º 9
0
 public static void SetSaveDriver(ISaveDriver saveDriver) => MBSaveLoad._saveDriver = saveDriver;
Ejemplo n.º 10
0
 public static LoadResult Load(ISaveDriver driver) => SaveManager.Load(driver, false);
Ejemplo n.º 11
0
 public static MetaData LoadMetaData(ISaveDriver driver) => driver.LoadMetaData();