Move internal/ordoor/flow to internal/flow
This commit is contained in:
109
internal/flow/options.go
Normal file
109
internal/flow/options.go
Normal file
@@ -0,0 +1,109 @@
|
||||
package flow
|
||||
|
||||
import (
|
||||
"log"
|
||||
)
|
||||
|
||||
func (f *Flow) linkOptions() {
|
||||
f.onClick(options, "2.8", f.setDriver(kbd)) // Keyboard settings button
|
||||
|
||||
f.configureSlider(options, "2.9", h3Slider) // Resolution slider
|
||||
f.configureSlider(options, "2.10", v10Slider) // Music volume slider
|
||||
f.configureSlider(options, "2.11", v10Slider) // SFX volume slider
|
||||
|
||||
f.onClick(options, "2.12", f.acceptOptions) // OK button
|
||||
f.onClick(options, "2.24", f.cancelOptions) // Cancel button
|
||||
|
||||
f.configureSlider(options, "2.26", h9Slider) // Unit speed slider
|
||||
f.configureSlider(options, "2.27", h9Slider) // Animation speed slider
|
||||
|
||||
// Keyboard settings
|
||||
// TODO: implement keybindings save/load behaviour
|
||||
f.onClick(kbd, "3.1", f.setDriver(options)) // Done button
|
||||
f.onClick(kbd, "3.2", f.setDriver(options)) // Cancel button
|
||||
f.onClick(kbd, "3.4", func() {}) // TODO: Reset to defaults button
|
||||
}
|
||||
|
||||
// FIXME: exiting is a bit OTT. Perhaps display "save failed"?
|
||||
func (f *Flow) acceptOptions() {
|
||||
if err := f.optionsIntoConfig(); err != nil {
|
||||
log.Printf("Saving options to config failed: %v", err)
|
||||
f.exit = err
|
||||
} else {
|
||||
f.setDriverNow(main)
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME: again, exiting is OTT. We're just resetting the state of
|
||||
// the interface to the values in config.
|
||||
func (f *Flow) cancelOptions() {
|
||||
if err := f.configIntoOptions(); err != nil {
|
||||
log.Printf("Saving options to config failed: %v", err)
|
||||
f.exit = err
|
||||
} else {
|
||||
f.exit = f.returnToLastDriverNow(options)
|
||||
}
|
||||
}
|
||||
|
||||
func (f *Flow) configIntoOptions() error {
|
||||
var err error
|
||||
|
||||
cfg := &f.config.Options
|
||||
optionsUI := f.drivers[options]
|
||||
|
||||
try(optionsUI.SetValueBool("2.1", cfg.PlayMovies), &err)
|
||||
try(optionsUI.SetValueBool("2.1", cfg.Animations), &err)
|
||||
try(optionsUI.SetValueBool("2.3", cfg.PlayMusic), &err)
|
||||
try(optionsUI.SetValueBool("2.4", cfg.CombatVoices), &err)
|
||||
try(optionsUI.SetValueBool("2.5", cfg.ShowGrid), &err)
|
||||
try(optionsUI.SetValueBool("2.6", cfg.ShowPaths), &err)
|
||||
try(optionsUI.SetValueBool("2.7", cfg.PointSaving), &err)
|
||||
try(optionsUI.SetValueInt("2.9", cfg.ResolutionIndex()), &err)
|
||||
try(optionsUI.SetValueInt("2.10", cfg.MusicVolume), &err)
|
||||
try(optionsUI.SetValueInt("2.11", cfg.SFXVolume), &err)
|
||||
try(optionsUI.SetValueBool("2.25", cfg.AutoCutLevel), &err)
|
||||
try(optionsUI.SetValueInt("2.26", cfg.UnitSpeed), &err)
|
||||
try(optionsUI.SetValueInt("2.27", cfg.AnimSpeed), &err)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (f *Flow) optionsIntoConfig() error {
|
||||
var resIdx int // needs handling manually
|
||||
var err error
|
||||
|
||||
cfg := &f.config.Options
|
||||
optionsUI := f.drivers[options]
|
||||
|
||||
try(optionsUI.ValueBool("2.1", &cfg.PlayMovies), &err)
|
||||
try(optionsUI.ValueBool("2.2", &cfg.Animations), &err)
|
||||
try(optionsUI.ValueBool("2.3", &cfg.PlayMusic), &err)
|
||||
try(optionsUI.ValueBool("2.4", &cfg.CombatVoices), &err)
|
||||
try(optionsUI.ValueBool("2.5", &cfg.ShowGrid), &err)
|
||||
try(optionsUI.ValueBool("2.6", &cfg.ShowPaths), &err)
|
||||
try(optionsUI.ValueBool("2.7", &cfg.PointSaving), &err)
|
||||
try(optionsUI.ValueInt("2.9", &resIdx), &err)
|
||||
try(optionsUI.ValueInt("2.10", &cfg.MusicVolume), &err)
|
||||
try(optionsUI.ValueInt("2.11", &cfg.SFXVolume), &err)
|
||||
try(optionsUI.ValueBool("2.25", &cfg.AutoCutLevel), &err)
|
||||
try(optionsUI.ValueInt("2.26", &cfg.UnitSpeed), &err)
|
||||
try(optionsUI.ValueInt("2.27", &cfg.AnimSpeed), &err)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cfg.SetResolutionIndex(resIdx)
|
||||
|
||||
if err := f.config.Save(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func try(result error, into *error) {
|
||||
if *into == nil {
|
||||
*into = result
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user