Data/GenericData.dat specifies what the default values for some options should be. Respect them on startup if the options in config are unset.
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package assetstore
|
|
|
|
import (
|
|
"code.ur.gs/lupine/ordoor/internal/config"
|
|
"code.ur.gs/lupine/ordoor/internal/data"
|
|
)
|
|
|
|
// Generic returns a struct containing a grab-bag of otherwise-unrelated data
|
|
// TODO: it would be nice if this could be cleaner
|
|
func (a *AssetStore) Generic() (*data.Generic, error) {
|
|
if a.generic != nil {
|
|
return a.generic, nil
|
|
}
|
|
|
|
filename, err := a.lookup("GenericData", "dat", "Data")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
generic, err := data.LoadGeneric(filename)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
a.generic = generic
|
|
|
|
return generic, nil
|
|
}
|
|
|
|
func (a *AssetStore) DefaultOptions() (*config.Options, error) {
|
|
cfg := &config.Options{}
|
|
g, err := a.Generic()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
cfg.PlayMovies = intToBool(g.Options[data.OptionMovies])
|
|
cfg.PlayMusic = intToBool(g.Options[data.OptionMusic])
|
|
cfg.CombatVoices = intToBool(g.Options[data.OptionCombatVoices])
|
|
cfg.ShowGrid = intToBool(g.Options[data.OptionGrid])
|
|
cfg.ShowPaths = intToBool(g.Options[data.OptionShowPaths])
|
|
cfg.PointSaving = intToBool(g.Options[data.OptionPointSave])
|
|
cfg.AutoCutLevel = intToBool(g.Options[data.OptionAutoCutLevel])
|
|
cfg.Animations = intToBool(g.Options[data.OptionShowUnitAnimations])
|
|
|
|
// These are overrides of data.OptionCombatResolution. *This* default from
|
|
// 1998 is no good at all!
|
|
cfg.XRes = 1280
|
|
cfg.YRes = 1024
|
|
|
|
cfg.MusicVolume = g.Options[data.OptionMusicVolume]
|
|
cfg.SFXVolume = g.Options[data.OptionSoundEffectsVolume]
|
|
|
|
cfg.UnitSpeed = g.Options[data.OptionUnitAnimationSpeed]
|
|
cfg.AnimSpeed = g.Options[data.OptionEffectAnimationSpeed]
|
|
|
|
return cfg, nil
|
|
}
|
|
|
|
func intToBool(i int) bool {
|
|
return i > 0
|
|
}
|