// This file is part of Gopher2600. // // Gopher2600 is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Gopher2600 is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Gopher2600. If not, see . package sdlaudio import ( "github.com/jetsetilly/gopher2600/prefs" "github.com/jetsetilly/gopher2600/resources" ) type Preferences struct { dsk *prefs.Disk Stereo prefs.Bool Separation prefs.Int } func (p *Preferences) String() string { return p.dsk.String() } // NewPreferences is the preferred method of initialisation for the Preferences type. func NewPreferences() (*Preferences, error) { p := &Preferences{} p.SetDefaults() pth, err := resources.JoinPath(prefs.DefaultPrefsFile) if err != nil { return nil, err } p.dsk, err = prefs.NewDisk(pth) if err != nil { return nil, err } err = p.dsk.Add("sdlaudio.stereo", &p.Stereo) if err != nil { return nil, err } err = p.dsk.Add("sdlaudio.separation", &p.Separation) if err != nil { return nil, err } err = p.dsk.Load(true) if err != nil { return nil, err } return p, nil } // SetDefaults reverts all audio settings to default values. func (p *Preferences) SetDefaults() { p.Stereo.Set(false) p.Separation.Set(1) } // Load disassembly preferences and apply to the current disassembly. func (p *Preferences) Load() error { return p.dsk.Load(false) } // Save current disassembly preferences to disk. func (p *Preferences) Save() error { return p.dsk.Save() }