예제 #1
0
        public void LoadPresetInfo()
        {
            XDocument xDocument;
            var       xRootNode = GetTopElement(out xDocument, true);

            if (xRootNode == null)
            {
                return;
            }

            PresetInfo.LoadPresetInfo(xRootNode);
        }
예제 #2
0
        public void SavePreset(string description = null, bool saveOptions = false)
        {
            try
            {
                var xRoot = GetTopElement(out var xDocument, false);
                if (xRoot == null)
                {
                    return;
                }

                // preset info
                PresetInfo.SavePresetInfo(xRoot);

                /*
                 * filters
                 */
                var xFilter = new XElement(FilterNode);
                xRoot.Add(xFilter);

                // Terrain
                var xTerrainFilters = new XElement(TerrainNode);
                xFilter.Add(xTerrainFilters);

                SaveDef(xTerrainFilters, "Biome", _gameData.UserData.ChosenBiome);
                SaveHilliness(xTerrainFilters, "Hilliness", _gameData.UserData.ChosenHilliness);
                SaveThreeStateItemContainer(xTerrainFilters, "Roads", "Road", _gameData.UserData.SelectedRoadDefs);
                SaveThreeStateItemContainer(xTerrainFilters, "Rivers", "River", _gameData.UserData.SelectedRiverDefs);
                SaveUsableMinMax(xTerrainFilters, "CurrentMovementTime", _gameData.UserData.CurrentMovementTime);
                SaveUsableMinMax(xTerrainFilters, "SummerMovementTime", _gameData.UserData.SummerMovementTime);
                SaveUsableMinMax(xTerrainFilters, "WinterMovementTime", _gameData.UserData.WinterMovementTime);
                if (_gameData.UserData.StoneTypesNumberOnly)
                {
                    SaveBoolean(xTerrainFilters, "StoneTypesNumberOnly", _gameData.UserData.StoneTypesNumberOnly);
                    Save(xTerrainFilters, "StoneTypesNumber", _gameData.UserData.StoneTypesNumber);
                }
                else
                {
                    SaveThreeStateItemContainerOrdered(xTerrainFilters, "Stones", "Stone",
                                                       _gameData.UserData.SelectedStoneDefs);
                }
                SaveThreeState(xTerrainFilters, "CoastalTile", _gameData.UserData.ChosenCoastalTileState);
                SaveThreeState(xTerrainFilters, "CoastalLakeTile", _gameData.UserData.ChosenCoastalLakeTileState);
                SaveUsableFromList(xTerrainFilters, "CoastalRotation", _gameData.UserData.CoastalRotation);
                SaveUsableMinMax(xTerrainFilters, "Elevation", _gameData.UserData.Elevation);
                SaveUsableMinMax(xTerrainFilters, "TimeZone", _gameData.UserData.TimeZone);

                SaveThreeState(xTerrainFilters, "HasCave", _gameData.UserData.HasCaveState);

                // Temperature
                var xTemperatureFilters = new XElement("Temperature");
                xFilter.Add(xTemperatureFilters);

                SaveUsableMinMax(xTemperatureFilters, "AverageTemperature", _gameData.UserData.AverageTemperature);
                SaveUsableMinMax(xTemperatureFilters, "SummerTemperature", _gameData.UserData.SummerTemperature);
                SaveUsableMinMax(xTemperatureFilters, "WinterTemperature", _gameData.UserData.WinterTemperature);
                SaveMinMaxFromRestrictedList(xTemperatureFilters, "GrowingPeriod", _gameData.UserData.GrowingPeriod);
                SaveUsableMinMax(xTemperatureFilters, "RainFall", _gameData.UserData.RainFall);
                SaveThreeState(xTemperatureFilters, "AnimalsCanGrazeNow", _gameData.UserData.ChosenAnimalsCanGrazeNowState);
                SaveMostLeastItem(xTemperatureFilters, "MostLeastFeature", _gameData.UserData.MostLeastItem);

                /*
                 * Options
                 */
                var xOption = new XElement(OptionNode);
                xRoot.Add(xOption);

                // save options if specifically asked for
                if (saveOptions)
                {
                    SaveBoolean(xOption, "AllowImpassableHilliness", _gameData.UserData.Options.AllowImpassableHilliness);
                    SaveBoolean(xOption, "AllowInvalidTilesForNewSettlement",
                                _gameData.UserData.Options.AllowInvalidTilesForNewSettlement);
                    SaveBoolean(xOption, "AllowLiveFiltering", _gameData.UserData.Options.AllowLiveFiltering);
                    SaveBoolean(xOption, "BypassMaxHighlightedTiles", _gameData.UserData.Options.BypassMaxHighlightedTiles);
                    SaveBoolean(xOption, "DisablePreFilterCheck", _gameData.UserData.Options.DisablePreFilterCheck);
                    SaveBoolean(xOption, "ViewPartialOffNoSelect", _gameData.UserData.Options.ViewPartialOffNoSelect);
                    SaveBoolean(xOption, "ResetAllFieldsOnNewGeneratedWorld", _gameData.UserData.Options.ResetAllFieldsOnNewGeneratedWorld);
                    SaveBoolean(xOption, "DisableTileHighlighting", _gameData.UserData.Options.DisableTileHighlighting);
                    SaveBoolean(xOption, "DisableTileBlinking", _gameData.UserData.Options.DisableTileBlinking);
                    SaveBoolean(xOption, "ShowDebugTileId", _gameData.UserData.Options.ShowDebugTileId);
                    SaveBoolean(xOption, "ShowFilterHeaviness", _gameData.UserData.Options.ShowFilterHeaviness);
                }

                // save the document
                xDocument.Save(PresetManager.FullPresetPathFromPresetName(PresetName, false));
            }
            catch (Exception e)
            {
                Log.Error($"Failed to save preset file. error:\n\t{e}\n\t{e.Message}");
                throw;
            }
        }
예제 #3
0
 public Preset(string presetName, GameData.GameData gameData)
 {
     PresetName = presetName;
     _gameData  = gameData;
     PresetInfo = new PresetInfo();
 }
예제 #4
0
 public Preset(string presetName, UserData userData)
 {
     PresetName = presetName;
     _userData  = userData;
     PresetInfo = new PresetInfo();
 }