Untitled

 avatar
unknown
csharp
4 days ago
2.9 kB
9
Indexable
// Global settings (JSON)
private void SaveSettings()
{
    Settings settings = new Settings
    {
        BaselineDepth = baselineSlider.value,
        XAxisScale = xAxisScaleSlider.value,
        ZAxisScale = zAxisScaleSlider.value,
        XAxisFlipped = distanceShader.isXAxisFlipped,
        YAxisFlipped = distanceShader.isYAxisFlipped
    };

    string json = JsonConvert.SerializeObject(settings, Formatting.Indented);
    Directory.CreateDirectory(Path.GetDirectoryName(SettingsPath));
    File.WriteAllText(SettingsPath, json);
}

// PlayerPrefs
private void SaveAllPlayerPrefs()
{
    PlayerPrefs.SetFloat(YPositionKey, yPositionSlider.value);
    PlayerPrefs.SetFloat(FossilScaleKey, fossilScaleSlider.value);
    PlayerPrefs.SetInt(ItemCountKey, Mathf.RoundToInt(itemCountSlider.value));
    PlayerPrefs.SetFloat(RangeKey, rangeSlider.value);
    PlayerPrefs.SetString(LastSavedTimestampKey, System.DateTime.Now.ToString());
    PlayerPrefs.Save();
}

private void LoadSettings()
{
    // Load global settings from JSON
    if (File.Exists(SettingsPath))
    {
        string json = File.ReadAllText(SettingsPath);
        Settings settings = JsonConvert.DeserializeObject<Settings>(json);

        // Apply settings to UI and components
        LoadSliderValue(baselineSlider, settings.BaselineDepth, distanceShader.OnBaselineSliderChanged);
        LoadSliderValue(xAxisScaleSlider, settings.XAxisScale, distanceShader.SetXAxisScale);
        LoadSliderValue(zAxisScaleSlider, settings.ZAxisScale, distanceShader.SetZAxisScale);
        
        distanceShader.isXAxisFlipped = settings.XAxisFlipped;
        distanceShader.isYAxisFlipped = settings.YAxisFlipped;
        UpdateButtonColor(xAxisFlipButton, settings.XAxisFlipped);
        UpdateButtonColor(yAxisFlipButton, settings.YAxisFlipped);
    }

    // Load instance-specific settings from PlayerPrefs
    float yPosition = PlayerPrefs.GetFloat(YPositionKey, yPositionSlider.value);
    float fossilScale = PlayerPrefs.GetFloat(FossilScaleKey, 1.0f);
    int itemCount = PlayerPrefs.GetInt(ItemCountKey, 5);
    float range = PlayerPrefs.GetFloat(RangeKey, rangeSlider.value);
    
    // Apply PlayerPrefs values
    LoadSliderValue(yPositionSlider, yPosition, ApplyYPositionChange);
    LoadSliderValue(fossilScaleSlider, fossilScale, ApplyFossilScaleChange);
    LoadSliderValue(itemCountSlider, itemCount, ApplyItemCountChange);
    LoadSliderValue(rangeSlider, range, ApplyRangeChange);
}

// Helper method to apply slider values without triggering events
private void LoadSliderValue(Slider slider, float value, System.Action<float> setterMethod)
{
    if (slider != null)
    {
        slider.SetValueWithoutNotify(value);  // Prevent unwanted callbacks during loading
        setterMethod?.Invoke(value);
        // Update the appropriate label if needed
    }
}
Editor is loading...
Leave a Comment