public void OnEnable()
 {
     if (TwitchSettingsSaver.CurrentProgramSettings == null)
     {
         TwitchSettingsSaver.LoadProgramSettings();
     }
     ReloadOptions();
     if (TwitchSettingsSaver.CurrentProgramSettings != null && !string.IsNullOrEmpty(TwitchSettingsSaver.CurrentProgramSettings.LastProfile))
     {
         OnLoadPressed(true);
     }
 }
 public void OnSaveNewPressed()
 {
     if (string.IsNullOrEmpty(SaveName.text) || TwitchSettingsSaver.SavedProfiles.ContainsKey(SaveName.text))
     {
         return;
     }
     _savingNew = false;
     TwitchChatTester.Instance.AddSystemNotice("Adding saved settings " + SaveName.text);
     TwitchSettingsSaver.SavedProfiles.Add(SaveName.text, ConvertToTwitchSettings(OverlayToSave));
     TwitchSettingsSaver.SaveProfiles();
     SaveName.text = "";
     ReloadOptions();
 }
 public void OnDeletePressed()
 {
     if (!_confirmingDelete)
     {
         _confirmingDelete      = true;
         DeleteButtonText.color = Color.red;
         OnDeleteButtonTooltip();
     }
     else
     {
         TwitchSettingsSaver.DeleteProfile(Dropdown.options[Dropdown.value].text);
         CancelConfirmingDelete();
         ReloadOptions();
     }
 }
    /// <summary>
    /// Overwrite an existing save, or save a new one
    /// </summary>
    public void OnSavePressed()
    {
        CancelConfirmingDelete();
        if (Dropdown.options[Dropdown.value].text == NewString) // Start creating a new save
        {
            _savingNew = true;
            OnValueChanges();
        }
        else // Overwrite an existing save
        {
            TwitchSettings settings;
            if (!TwitchSettingsSaver.SavedProfiles.TryGetValue(Dropdown.options[Dropdown.value].text, out settings))
            {
                return;
            }
            TwitchChatTester.Instance.AddSystemNotice("Overwriting saved settings " + Dropdown.options[Dropdown.value].text);
            settings.SaveFileVersion = TwitchSettings.CurrentSaveVersion;

            settings.Username = UsernameField.text;
            settings.Channel  = ChannelField.text;
            settings.X        = OverlayToSave.AnchorOffset.x; settings.Y = OverlayToSave.AnchorOffset.y; settings.Z = OverlayToSave.AnchorOffset.z;
            settings.RX       = OverlayToSave.transform.eulerAngles.x; settings.RY = OverlayToSave.transform.eulerAngles.y; settings.RZ = OverlayToSave.transform.eulerAngles.z;

            settings.ChatSound = ChatSoundDropdown.Dropdown.options[ChatSoundDropdown.Dropdown.value].text;
            settings.Volume    = VolumeSlider.Slider.value;
            settings.Pitch     = PitchSlider.Slider.value;

            settings.FollowerSound  = NewFollowerSoundDropdown.Dropdown.options[NewFollowerSoundDropdown.Dropdown.value].text;
            settings.FollowerVolume = NewFollowerVolumeSlider.Slider.value;
            settings.FollowerPitch  = NewFollowerPitchSlider.Slider.value;

            settings.Device    = OverlayToSave.AnchorDevice;
            settings.Point     = OverlayToSave.AnchorPoint;
            settings.Animation = OverlayToSave.AnimateOnGaze;

            var backgroundColor = GetMaterialTexture().GetPixel(0, 0);
            settings.BackgroundR = backgroundColor.r;
            settings.BackgroundG = backgroundColor.g;
            settings.BackgroundB = backgroundColor.b;
            settings.BackgroundA = backgroundColor.a;

            settings.AlphaStart = OverlayToSave.Alpha; settings.AlphaEnd = OverlayToSave.Alpha2; settings.AlphaSpeed = OverlayToSave.AlphaSpeed;
            settings.ScaleStart = OverlayToSave.Scale; settings.ScaleEnd = OverlayToSave.Scale2; settings.ScaleSpeed = OverlayToSave.ScaleSpeed;
            TwitchSettingsSaver.SaveProfiles();
        }
    }
    public void OnLoadPressed(bool startup = false) // Loads an existing save
    {
        CancelConfirmingDelete();
        TwitchSettings settings;

        if (!TwitchSettingsSaver.SavedProfiles.TryGetValue(Dropdown.options[Dropdown.value].text, out settings))
        {
            return;
        }
        TwitchChatTester.Instance.AddSystemNotice(startup ? "Loading last used settings " + Dropdown.options[Dropdown.value].text : "Loading saved settings " + Dropdown.options[Dropdown.value].text);
        TwitchSettingsSaver.Current = Dropdown.options[Dropdown.value].text;
        if (!startup)
        {
            TwitchSettingsSaver.SaveProgramSettings();
        }
        if (!TwitchChatTester.Instance.Connected)
        {
            UsernameField.text = settings.Username;
        }
        if (!TwitchChatTester.Instance.Connected)
        {
            ChannelField.text = settings.Channel;
        }

        XSlider.Slider.value = settings.X;
        YSlider.Slider.value = settings.Y;
        ZSlider.Slider.value = settings.Z;

        RXSlider.Slider.value = settings.RX;
        RYSlider.Slider.value = settings.RY;
        RZSlider.Slider.value = settings.RZ;

        if (settings.SaveFileVersion >= 1) // Save File compatability
        {
            VolumeSlider.Slider.value = settings.Volume;
            VolumeSlider.OnSliderEndDrag(false);
            PitchSlider.Slider.value = settings.Pitch;
            PitchSlider.OnSliderEndDrag(false);
        }
        ChatSoundDropdown.SetToOption(settings.SaveFileVersion >= 1 ? (settings.SaveFileVersion >= 2 ? settings.ChatSound : settings.ChatSound + ".wav") : "gui-sound-effects-031.wav", !startup); // Save File compatability

        if (settings.SaveFileVersion >= 4)                                                                                                                                                         // Save File compatability
        {
            NewFollowerVolumeSlider.Slider.value = settings.FollowerVolume;
            NewFollowerVolumeSlider.OnSliderEndDrag(false);
            NewFollowerPitchSlider.Slider.value = settings.FollowerPitch;
            NewFollowerPitchSlider.OnSliderEndDrag(false);
        }
        NewFollowerSoundDropdown.SetToOption(settings.SaveFileVersion >= 4 ? settings.FollowerSound : "gui-sound-effects-038.wav"); // Save File compatability

        DeviceDropdown.SetToOption(settings.Device.ToString());
        PointDropdown.SetToOption(settings.Point.ToString());
        AnimationDropdown.SetToOption(settings.Animation.ToString());

        RSlider.Slider.value = settings.BackgroundR;
        GSlider.Slider.value = settings.BackgroundG;
        BSlider.Slider.value = settings.BackgroundB;
        ASlider.Slider.value = (settings.SaveFileVersion >= 3 ? settings.BackgroundA : 1.0f); // Save File compatability

        AlphaStartField.text = settings.AlphaStart.ToString();
        AlphaEndField.text   = settings.AlphaEnd.ToString();
        AlphaSpeedField.text = settings.AlphaSpeed.ToString();
        ScaleStartField.text = settings.ScaleStart.ToString();
        ScaleEndField.text   = settings.ScaleEnd.ToString();
        ScaleSpeedField.text = settings.ScaleSpeed.ToString();

        AlphaStartField.onEndEdit.Invoke("");
        AlphaEndField.onEndEdit.Invoke("");
        AlphaSpeedField.onEndEdit.Invoke("");
        ScaleStartField.onEndEdit.Invoke("");
        ScaleEndField.onEndEdit.Invoke("");
        ScaleSpeedField.onEndEdit.Invoke("");
    }