Example #1
0
    void Update()
    {
        if (fbd.state == myFileBrowserDialog.BrowserState.Selected)
        {
            if (isNewProject)
            {
                InputField IFnewProject = transform.Find("Panel_LoadSaveMenu").Find("InputField_SelectOSM").GetComponent <InputField>();
                IFnewProject.text = fbd.selectedPath;
                isNewProject      = false;
            }
            else if (isLoadProject)
            {
                InputField IFloadProject = transform.Find("Panel_LoadSaveMenu").Find("InputField_SelectProject").GetComponent <InputField>();
                IFloadProject.text = fbd.selectedPath;
                isLoadProject      = false;
            }

            else if (isSaveProject)
            {
                string     path    = fbd.selectedPath + "/" + fbd.saveName;
                string     osmPath = scene.OSMPath;
                SaveConfig save    = new SaveConfig(path, scene);
                save.saveConfigurations();
                Debug.Log("Successfully Saved");
                isSaveProject = false;
            }
        }
    }
Example #2
0
        public void Save(Document input, Stream output, SaveConfig token, Surface scratchSurface,
                         ProgressEventHandler callback, bool rememberToken)
        {
            if (!this.SupportsSaving)
            {
                throw new NotImplementedException("Saving is not supported by this FileType");
            }
            else
            {
                Surface disposeMe = null;

                if (scratchSurface == null)
                {
                    disposeMe      = new Surface(input.Size);
                    scratchSurface = disposeMe;
                }
                else if (scratchSurface.Size != input.Size)
                {
                    throw new ArgumentException("scratchSurface.Size must equal input.Size");
                }

                OnSave(input, output, token, scratchSurface, callback);

                if (disposeMe != null)
                {
                    disposeMe.Dispose();
                }
            }
        }
Example #3
0
 protected virtual void OnSaveConfig()
 {
     SaveConfig?.Invoke(this, EventArgs.Empty);
     try
     {
         var log = SB.Logger.Entries.LastOrDefault();
         if (log == null || !log.LogString.StartsWith("Failed to save the config. Reason:") &&
             log.LogLevel != LogLevel.Error)
         {
             //green
             iconSave.Foreground = bc.ConvertFrom("#FF5DF5A7") as Brush;
             RestoreForegroundIconSave();
         }
         else
         {
             //red
             iconSave.Foreground = bc.ConvertFrom("#FFF5645D") as Brush;
             RestoreForegroundIconSave();
         }
     }
     catch
     {
         try
         {
             iconSave.Foreground = Brushes.White;
         }
         catch { }
     }
 }
        public void Save(Bitmap BmpFile, string key, SaveConfig config, bool temp = false)
        {
            try
            {
                switch (config)
                {
                case SaveConfig.QRCode:
                    if (!temp)
                    {
                        BmpFile.Save(TempFolder + key + @".tmp", ImageFormat.Bmp);
                    }
                    if (temp)
                    {
                        BmpFile.Save(TempFolder + @"tmp.bmp", ImageFormat.Bmp);
                    }
                    break;

                default:
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Example #5
0
 public void Load()
 {
     if (PlayerPrefs.HasKey("Save"))
     {
         var str = PlayerPrefs.GetString("Save");
         Cfg = JsonMapper.ToObject <SaveConfig>(str);
     }
 }
Example #6
0
    Enemy InstatiateUnitRandom(string name, Vector2 radius, Vector2 speed, Vector2 cellSize, Side side)         //спавн конкретного юнита с рандомными пар-ми
    {
        SaveConfig unitConfig = new SaveConfig();

        unitConfig.id     = name;
        unitConfig.radius = Random.Range(radius.x, radius.y);
        unitConfig.speed  = Random.Range(speed.x, speed.y);
        unitConfig.pos    = GetRandomPos(unitConfig.radius);
        unitConfig.side   = side;

        return(InstatiateUnit(unitConfig, cellSize));
    }
Example #7
0
    // Use this for initialization
    void Start()
    {
        sc = GetComponent <SaveConfig> ();

        if (save)
        {
            Save();
        }
        else
        {
        }
    }
Example #8
0
        /**
         * <summary>Saves the current events to the player's save file.</summary>
         * <remarks>
         *  This should be called after every player save.
         * </remarks>
         *
         * <param name="helper">The ModHelper to use for saving.</param>
         */
        public void SaveEvents(IModHelper helper)
        {
            // NOTE: In earlier versions of SMAPI, SaveEvents is called at the
            // end of "Day 0" - the intro date. Luckily, this isn't a big deal.

            var config = new SaveConfig()
            {
                Version = ModEntry.ModVersion,
                Events  = this.currentEvents ?? new List <EconEvent>(),
            };

            var filename = ModEntry.GetPerGameConfigFileName("events");

            config.Save(helper, filename);
        }
Example #9
0
    public static void WriteConfig(SaveConfig config)
    {
        string savePath = $"{Application.persistentDataPath}/{configFileName}{fileExtentionName}";

        Log($"Saving game configuration to : {savePath}");

        using (var writer = new BinaryWriter(File.Open(savePath, FileMode.Create)))
        {
            writer.Write(JsonUtility.ToJson(config));
        }

#if UNITY_WEBGL && !UNITY_EDITOR
        SyncFiles();
#endif
    }
Example #10
0
 protected override void Initialize()
 {
     if (IsHasSave)
     {
         Load();
     }
     else
     {
         Cfg               = new SaveConfig();
         Cfg.IsSkip        = false;
         Cfg.BgmVolume     = 100;
         Cfg.CharSpeed     = (int)(GlobalConfig.Instance.CharSpeed * 1000);
         Cfg.ForceTextWait = (int)(GlobalConfig.Instance.ForceTextWait * 1000);
     }
 }
Example #11
0
        /**
         * <summary>Attempts to load and apply the events last saved for the player's save.</summary>
         * <remarks>
         *  This should be called after the player loads the game, shortly after
         *  construction of this manager and before the first call to
         *  <see cref="UpdateEvents"/>.
         * </remarks>
         *
         * <param name="helper">The ModHelper to use for loading.</param>
         * <returns>True if the events were successfully loaded. False otherwise.</returns>
         */
        public bool LoadPlayerEvents(IModHelper helper)
        {
            // NOTE: This is called on Day 1 of Spring when gameplay starts.

            var filename = ModEntry.GetPerGameConfigFileName("events");
            var config   = SaveConfig.Load(helper, filename);

            if (config != null)
            {
                this.currentEvents = new List <EconEvent>(config.Events);
                this.currentEvents.ForEach(this.ApplyEvent);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #12
0
    public static SaveConfig LoadOrCreateConfig()
    {
#if UNITY_WEBGL && !UNITY_EDITOR
        SyncFiles();
#endif

        if (cachedSaveConfig != null)
        {
            return(cachedSaveConfig);
        }

        string[] filePaths = Directory.GetFiles(Application.persistentDataPath);

        string configPath = filePaths.FirstOrDefault(path => path.EndsWith($"{configFileName}{fileExtentionName}"));

        if (!string.IsNullOrEmpty(configPath))
        {
            using (var reader = new BinaryReader(File.Open(configPath, FileMode.Open)))
            {
                SaveConfig getSaveConfig = JsonUtility.FromJson <SaveConfig>(reader.ReadString());

                if (getSaveConfig != null)
                {
                    Log($"Loaded configuration from {configPath}");
                    cachedSaveConfig = getSaveConfig;
                }
                else
                {
                    getSaveConfig = new SaveConfig();
                }

                return(getSaveConfig);
            }
        }
        else
        {
            cachedSaveConfig = new SaveConfig();

            return(cachedSaveConfig);
        }
    }
Example #13
0
    Enemy InstatiateUnit(SaveConfig unitConfig, Vector2 cellSize)                                                   //спавн конкретного юнита с конкретными пар-ми
    {
        GameObject unit = Instantiate(_unitPref, _gameArea, false);

        unit.name = unitConfig.id;
        unit.transform.rotation = Quaternion.identity;

        Enemy enemy = unit.GetComponent <Enemy>();

        enemy.Init(
            unitConfig.radius,
            unitConfig.speed,
            unitConfig.side,
            unitConfig.pos,
            _areaSize,
            cellSize);

        unit.GetComponent <SpriteRenderer>().color = (enemy.Side == Side.Blue) ? Color.blue : Color.red;
        _units.Add(enemy);

        return(unit.GetComponent <Enemy>());
    }
        public void Save(string JsonFile, string key, SaveConfig config)
        {
            try
            {
                switch (config)
                {
                case SaveConfig.CustomerList:
                    File.WriteAllText(TempFolder + "b2y2dbqd87sa" + @".datxx", JsonFile);
                    break;

                case SaveConfig.CustomerInfomation:
                    File.WriteAllText(TempFolder + key + @".datxx", JsonFile);
                    break;

                case SaveConfig.CustomerLabels:
                    File.WriteAllText(TempFolder + key + @".datx", JsonFile);
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Example #15
0
 protected override void OnSave(Document input, Stream output, SaveConfig token, Surface scratchSurface, ProgressEventHandler callback)
 {
     base.OnSave(input, output, token, scratchSurface, callback);
 }
Example #16
0
 private void MBtnConfigSaveConnectionString_Click(object sender, EventArgs e)
 {
     ConnectionString = mTxtConfigConnectionString.Text;
     SaveConfig?.Invoke(this, null);
 }
Example #17
0
        public override void Execute()
        {
            RetCode rc;

            Globals.RevealContentCounter--;

            SaveFilesetsCount = Globals.Database.GetFilesetsCount();

            Debug.Assert(SaveFilesetsCount <= gEngine.NumSaveSlots);

            Debug.Assert(SaveSlot >= 1 && SaveSlot <= Math.Min(SaveFilesetsCount + 1, gEngine.NumSaveSlots));

            Debug.Assert(SaveName != null);

            if (SaveSlot == SaveFilesetsCount + 1)
            {
                SaveFileset = Globals.CreateInstance <IFileset>(x =>
                {
                    x.Uid  = Globals.Database.GetFilesetUid();
                    x.Name = "(none)";
                });

                rc = Globals.Database.AddFileset(SaveFileset);

                Debug.Assert(gEngine.IsSuccess(rc));
            }

            SaveFilesetList = Globals.Database.FilesetTable.Records.OrderBy(f => f.Uid).ToList();

            SaveFileset = SaveFilesetList[(int)SaveSlot - 1];

            if (SaveName.Length == 0)
            {
                if (!SaveFileset.Name.Equals("(none)", StringComparison.OrdinalIgnoreCase))
                {
                    gOut.Write("{0}Change name of save (Y/N): ", Environment.NewLine);

                    Globals.Buf.Clear();

                    rc = Globals.In.ReadField(Globals.Buf, Constants.BufSize02, null, ' ', '\0', false, null, gEngine.ModifyCharToUpper, gEngine.IsCharYOrN, null);

                    Debug.Assert(gEngine.IsSuccess(rc));

                    if (Globals.Buf.Length > 0 && Globals.Buf[0] == 'Y')
                    {
                        SaveFileset.Name = "(none)";
                    }
                }

                while (SaveFileset.Name.Equals("(none)", StringComparison.OrdinalIgnoreCase))
                {
                    gOut.Write("{0}Enter new name: ", Environment.NewLine);

                    Globals.Buf.Clear();

                    rc = Globals.In.ReadField(Globals.Buf, Constants.FsNameLen, null, ' ', '\0', false, null, null, null, null);

                    Debug.Assert(gEngine.IsSuccess(rc));

                    Globals.Buf.SetFormat("{0}", Regex.Replace(Globals.Buf.ToString(), @"\s+", " ").Trim());

                    SaveFileset.Name = gEngine.Capitalize(Globals.Buf.ToString());

                    if (SaveFileset.Name.Length == 0)
                    {
                        SaveFileset.Name = "(none)";
                    }
                }
            }
            else
            {
                if (!SaveFileset.Name.Equals("(none)", StringComparison.OrdinalIgnoreCase) && SaveName.Equals("Quick Saved Game", StringComparison.OrdinalIgnoreCase))
                {
                    SaveName = Globals.CloneInstance(SaveFileset.Name);
                }

                SaveName = gEngine.Capitalize(SaveName);

                SaveFileset.Name = Globals.CloneInstance(SaveName);

                gOut.Print("[QUICK SAVE {0}: {1}]", SaveSlot, SaveName);
            }

            SaveConfig = Globals.CreateInstance <IConfig>();

            SaveSlotString = SaveSlot.ToString("D3");

            SaveFileset.WorkDir = "NONE";

            SaveFileset.PluginFileName = "NONE";

            SaveFilePath = "";

            SaveFileName = "";

            SaveFileExtension = "";

            rc = gEngine.SplitPath(Globals.ConfigFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            SaveFileNameIndex = SaveFileName.IndexOf('_');

            if (SaveFileNameIndex >= 0)
            {
                SaveFileName = SaveFileName.Substring(0, (int)SaveFileNameIndex);
            }

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.ConfigFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            SaveFileset.FilesetFileName = "NONE";

            rc = gEngine.SplitPath(Globals.Config.RtCharacterFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.CharacterFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            rc = gEngine.SplitPath(Globals.Config.RtModuleFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.ModuleFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            rc = gEngine.SplitPath(Globals.Config.RtRoomFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.RoomFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            rc = gEngine.SplitPath(Globals.Config.RtArtifactFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.ArtifactFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            rc = gEngine.SplitPath(Globals.Config.RtEffectFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.EffectFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            rc = gEngine.SplitPath(Globals.Config.RtMonsterFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.MonsterFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            rc = gEngine.SplitPath(Globals.Config.RtHintFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.HintFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            if (!string.IsNullOrWhiteSpace(Globals.Config.RtTriggerFileName))                      // TODO: remove this check at some point
            {
                rc = gEngine.SplitPath(Globals.Config.RtTriggerFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

                Debug.Assert(gEngine.IsSuccess(rc));

                Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

                SaveFileset.TriggerFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);
            }

            if (!string.IsNullOrWhiteSpace(Globals.Config.RtScriptFileName))                      // TODO: remove this check at some point
            {
                rc = gEngine.SplitPath(Globals.Config.RtScriptFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

                Debug.Assert(gEngine.IsSuccess(rc));

                Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

                SaveFileset.ScriptFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);
            }

            rc = gEngine.SplitPath(Globals.Config.RtGameStateFileName, ref _saveFilePath, ref _saveFileName, ref _saveFileExtension);

            Debug.Assert(gEngine.IsSuccess(rc));

            Globals.Buf.SetFormat("{0}{1}_{2}{3}", SaveFilePath, SaveFileName, SaveSlotString, SaveFileExtension);

            SaveFileset.GameStateFileName = Globals.Buf.ToString().Truncate(Constants.FsFileNameLen);

            SaveConfig.RtFilesetFileName = Globals.CloneInstance(Globals.Config.RtFilesetFileName);

            SaveConfig.RtCharacterFileName = Globals.CloneInstance(SaveFileset.CharacterFileName);

            SaveConfig.RtModuleFileName = Globals.CloneInstance(SaveFileset.ModuleFileName);

            SaveConfig.RtRoomFileName = Globals.CloneInstance(SaveFileset.RoomFileName);

            SaveConfig.RtArtifactFileName = Globals.CloneInstance(SaveFileset.ArtifactFileName);

            SaveConfig.RtEffectFileName = Globals.CloneInstance(SaveFileset.EffectFileName);

            SaveConfig.RtMonsterFileName = Globals.CloneInstance(SaveFileset.MonsterFileName);

            SaveConfig.RtHintFileName = Globals.CloneInstance(SaveFileset.HintFileName);

            SaveConfig.RtTriggerFileName = Globals.CloneInstance(SaveFileset.TriggerFileName);

            SaveConfig.RtScriptFileName = Globals.CloneInstance(SaveFileset.ScriptFileName);

            SaveConfig.RtGameStateFileName = Globals.CloneInstance(SaveFileset.GameStateFileName);

            Globals.Config.DdFilesetFileName = SaveConfig.RtFilesetFileName;

            Globals.Config.DdCharacterFileName = SaveConfig.RtCharacterFileName;

            Globals.Config.DdModuleFileName = SaveConfig.RtModuleFileName;

            Globals.Config.DdRoomFileName = SaveConfig.RtRoomFileName;

            Globals.Config.DdArtifactFileName = SaveConfig.RtArtifactFileName;

            Globals.Config.DdEffectFileName = SaveConfig.RtEffectFileName;

            Globals.Config.DdMonsterFileName = SaveConfig.RtMonsterFileName;

            Globals.Config.DdHintFileName = SaveConfig.RtHintFileName;

            Globals.Config.DdTriggerFileName = SaveConfig.RtTriggerFileName;

            Globals.Config.DdScriptFileName = SaveConfig.RtScriptFileName;

            Globals.Config.DdEditingFilesets = true;

            Globals.Config.DdEditingCharacters = true;

            Globals.Config.DdEditingModules = true;

            Globals.Config.DdEditingRooms = true;

            Globals.Config.DdEditingArtifacts = true;

            Globals.Config.DdEditingEffects = true;

            Globals.Config.DdEditingMonsters = true;

            Globals.Config.DdEditingHints = true;

            Globals.Config.DdEditingTriggers = true;

            Globals.Config.DdEditingScripts = true;

            FullArtifactList = Globals.Database.ArtifactTable.Records.ToList();

            foreach (var artifact in FullArtifactList)
            {
                if (artifact.IsCarriedByCharacter())
                {
                    artifact.SetCarriedByMonsterUid(gGameState.Cm);
                }
                else if (artifact.IsWornByCharacter())
                {
                    artifact.SetWornByMonsterUid(gGameState.Cm);
                }
            }

            GameSaved = true;

            rc = SaveConfig.SaveGameDatabase(false);

            if (gEngine.IsFailure(rc))
            {
                Globals.Error.WriteLine("Error: SaveGameDatabase function call failed");

                GameSaved = false;
            }

            foreach (var artifact in FullArtifactList)
            {
                if (artifact.IsCarriedByMonsterUid(gGameState.Cm))
                {
                    artifact.SetCarriedByCharacter();
                }
                else if (artifact.IsWornByMonsterUid(gGameState.Cm))
                {
                    artifact.SetWornByCharacter();
                }
            }

            rc = Globals.Database.SaveConfigs(SaveFileset.ConfigFileName, false);

            if (gEngine.IsFailure(rc))
            {
                Globals.Error.WriteLine("Error: SaveConfigs function call failed");

                GameSaved = false;
            }

            SaveConfig.Dispose();

            gOut.Print(GameSaved ? "Game saved." : "Game not saved.");

            if (NextState == null)
            {
                NextState = Globals.CreateInstance <IStartState>();
            }

            Globals.RevealContentCounter++;
        }
Example #18
0
 protected virtual void OnSave(Document input, Stream output, SaveConfig token, Surface scratchSurface,
                               ProgressEventHandler callback)
 {
 }
Example #19
0
 protected override void OnSave(Document input, Stream output, SaveConfig token, Surface scratchSurface,
                                ProgressEventHandler callback)
 {
     Save(input, output, scratchSurface, this.ImageFormat, callback);
 }
    void Update()
    {
        if(fbd.state == myFileBrowserDialog.BrowserState.Selected)
        {
            if(isNewProject)
            {
                InputField IFnewProject = transform.Find("Panel_LoadSaveMenu").Find("InputField_SelectOSM").GetComponent<InputField>();
                IFnewProject.text = fbd.selectedPath;
                isNewProject = false;
            }
            else if(isLoadProject)
            {
                InputField IFloadProject = transform.Find("Panel_LoadSaveMenu").Find("InputField_SelectProject").GetComponent<InputField>();
                IFloadProject.text = fbd.selectedPath;
                isLoadProject = false;
            }

            else if(isSaveProject)
            {
                string path = fbd.selectedPath + "/" + fbd.saveName;
                string osmPath = scene.OSMPath;
                SaveConfig save = new SaveConfig(path, scene);
                save.saveConfigurations();
                Debug.Log("Successfully Saved");
                isSaveProject = false;
            }

        }
    }
 protected virtual void OnSaveConfig()
 {
     SaveConfig?.Invoke(this, EventArgs.Empty);
 }
Example #22
0
        public override void Execute()
        {
            RetCode rc;

            Globals.RevealContentCounter--;

            OrigCurrState = Globals.CurrState;

            SaveFilesetsCount = Globals.Database.GetFilesetsCount();

            Debug.Assert(SaveFilesetsCount <= gEngine.NumSaveSlots);

            Debug.Assert(SaveSlot >= 1 && SaveSlot <= SaveFilesetsCount);

            SaveFilesetList = Globals.Database.FilesetTable.Records.OrderBy(f => f.Uid).ToList();

            SaveFileset = SaveFilesetList[(int)SaveSlot - 1];

            SaveConfig = Globals.CreateInstance <IConfig>();

            try
            {
                rc = Globals.Database.LoadConfigs(SaveFileset.ConfigFileName, printOutput: false);

                if (gEngine.IsFailure(rc))
                {
                    Globals.Error.Write("Error: LoadConfigs function call failed");

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }

                Globals.Config = gEngine.GetConfig();

                if (Globals.Config == null || Globals.Config.Uid <= 0)
                {
                    Globals.Error.Write("{0}Error: {1}", Environment.NewLine, Globals.Config == null ? "Globals.Config == null" : "Globals.Config.Uid <= 0");

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }

                SaveConfig.RtFilesetFileName = Globals.CloneInstance(Globals.Config.RtFilesetFileName);

                SaveConfig.RtCharacterFileName = Globals.CloneInstance(SaveFileset.CharacterFileName);

                SaveConfig.RtModuleFileName = Globals.CloneInstance(SaveFileset.ModuleFileName);

                SaveConfig.RtRoomFileName = Globals.CloneInstance(SaveFileset.RoomFileName);

                SaveConfig.RtArtifactFileName = Globals.CloneInstance(SaveFileset.ArtifactFileName);

                SaveConfig.RtEffectFileName = Globals.CloneInstance(SaveFileset.EffectFileName);

                SaveConfig.RtMonsterFileName = Globals.CloneInstance(SaveFileset.MonsterFileName);

                SaveConfig.RtHintFileName = Globals.CloneInstance(SaveFileset.HintFileName);

                SaveConfig.RtTriggerFileName = Globals.CloneInstance(SaveFileset.TriggerFileName);

                SaveConfig.RtScriptFileName = Globals.CloneInstance(SaveFileset.ScriptFileName);

                SaveConfig.RtGameStateFileName = Globals.CloneInstance(SaveFileset.GameStateFileName);

                rc = SaveConfig.LoadGameDatabase(printOutput: false);

                if (gEngine.IsFailure(rc))
                {
                    Globals.Error.Write("Error: LoadGameDatabase function call failed");

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }

                // fileset is now invalid

                Globals.Character = Globals.Database.CharacterTable.Records.FirstOrDefault();

                if (gCharacter == null || gCharacter.Uid <= 0 || gCharacter.Status != Status.Adventuring || string.IsNullOrWhiteSpace(gCharacter.Name) || gCharacter.Name.Equals("NONE", StringComparison.OrdinalIgnoreCase))
                {
                    Globals.Error.Write("{0}Error: {1}",
                                        Environment.NewLine,
                                        gCharacter == null ? "gCharacter == null" :
                                        gCharacter.Uid <= 0 ? "gCharacter.Uid <= 0" :
                                        gCharacter.Status != Status.Adventuring ? "gCharacter.Status != Status.Adventuring" :
                                        string.IsNullOrWhiteSpace(gCharacter.Name) ? "string.IsNullOrWhiteSpace(gCharacter.Name)" :
                                        "gCharacter.Name.Equals(\"NONE\", StringComparison.OrdinalIgnoreCase)");

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }

                Globals.Module = gEngine.GetModule();

                if (Globals.Module == null || Globals.Module.Uid <= 0)
                {
                    Globals.Error.Write("{0}Error: {1}", Environment.NewLine, Globals.Module == null ? "Globals.Module == null" : "Globals.Module.Uid <= 0");

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }

                Globals.GameState = gEngine.GetGameState();

                if (gGameState == null || gGameState.Uid <= 0)
                {
                    Globals.Error.Write("{0}Error: {1}", Environment.NewLine, gGameState == null ? "gGameState == null" : "gGameState.Uid <= 0");

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }

                CharacterRoom = gRDB[gGameState.Ro];

                if (CharacterRoom == null)
                {
                    Globals.Error.Write("{0}Error: room == null", Environment.NewLine);

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }

                FullArtifactList = Globals.Database.ArtifactTable.Records.ToList();

                foreach (var artifact in FullArtifactList)
                {
                    if (artifact.IsCarriedByMonsterUid(gGameState.Cm))
                    {
                        artifact.SetCarriedByCharacter();
                    }
                    else if (artifact.IsWornByMonsterUid(gGameState.Cm))
                    {
                        artifact.SetWornByCharacter();
                    }
                }

                FullMonsterList = Globals.Database.MonsterTable.Records.ToList();

                foreach (var monster in FullMonsterList)
                {
                    monster.InitGroupCount = monster.CurrGroupCount;

                    if (!Enum.IsDefined(typeof(Friendliness), monster.Reaction))
                    {
                        monster.ResolveReaction(gCharacter);
                    }
                }

                rc = gEngine.ValidateRecordsAfterDatabaseLoaded();

                if (gEngine.IsFailure(rc))
                {
                    Globals.Error.Write("Error: ValidateRecordsAfterDatabaseLoaded function call failed");

                    Globals.ExitType = ExitType.Error;

                    Globals.MainLoop.ShouldShutdown = false;

                    goto Cleanup;
                }
            }
            finally
            {
                SaveConfig.Dispose();
            }

            gSentenceParser.LastInputStr = "";

            gSentenceParser.Clear();

            gCommandParser.LastInputStr = "";

            gCommandParser.LastHimNameStr = "";

            gCommandParser.LastHerNameStr = "";

            gCommandParser.LastItNameStr = "";

            gCommandParser.LastThemNameStr = "";

            gGameState.R2 = gGameState.Ro;

            gOut.Print("Game restored.");

            gEngine.CreateInitialState(true);

            NextState = Globals.CurrState;

            Globals.CurrState = OrigCurrState;

Cleanup:

            Globals.RevealContentCounter++;
        }