1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-11-10 06:16:27 -05:00
OpenDiablo2/d2core/d2config/d2config.go
Alex Yatskov 2953d2171b
Configuration improvements (#307)
* Configuration cleanup

* Cleanup
2020-02-20 08:41:41 -05:00

73 lines
1.3 KiB
Go

package d2config
import (
"log"
)
// Configuration defines the configuration for the engine, loaded from config.json
type Configuration struct {
Language string
FullScreen bool
Scale float64
RunInBackground bool
TicksPerSecond int
FpsCap int
VsyncEnabled bool
MpqPath string
MpqLoadOrder []string
SfxVolume float64
BgmVolume float64
}
var singleton *Configuration = getDefaultConfig()
func Load() error {
configPaths := []string{
getLocalConfigPath(),
getDefaultConfigPath(),
}
var loaded bool
for _, configPath := range configPaths {
log.Printf("loading configuration file from %s...", configPath)
if err := load(configPath); err == nil {
loaded = true
break
}
}
if !loaded {
log.Println("failed to load configuration file, saving default configuration...")
if err := Save(); err != nil {
return err
}
}
return nil
}
func Save() error {
configPath := getDefaultConfigPath()
log.Printf("saving configuration file to %s...", configPath)
var err error
if err = save(configPath); err != nil {
log.Printf("failed to write configuration file (%s)", err)
}
return err
}
func Set(config Configuration) {
temp := config
singleton = &temp
}
func Get() Configuration {
if singleton == nil {
panic("configuration is not initialized")
}
return *singleton
}