63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package main
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/json"
|
||
|
|
"os"
|
||
|
|
"path/filepath"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Settings struct {
|
||
|
|
Detail float64 `json:"detail"`
|
||
|
|
Roughness float64 `json:"roughness"`
|
||
|
|
Width int `json:"width"`
|
||
|
|
Height int `json:"height"`
|
||
|
|
Lakes int `json:"lakes"`
|
||
|
|
LakeSize float64 `json:"lake_size"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *Settings) Save() error {
|
||
|
|
configDir, err := os.UserConfigDir()
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
appConfigDir := filepath.Join(configDir, "rpgcitymakerreborn")
|
||
|
|
if err := os.MkdirAll(appConfigDir, 0755); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
configFile := filepath.Join(appConfigDir, "settings.json")
|
||
|
|
file, err := os.Create(configFile)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
defer file.Close()
|
||
|
|
|
||
|
|
encoder := json.NewEncoder(file)
|
||
|
|
return encoder.Encode(s)
|
||
|
|
}
|
||
|
|
|
||
|
|
func LoadSettings() (*Settings, error) {
|
||
|
|
configDir, err := os.UserConfigDir()
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
configFile := filepath.Join(configDir, "rpgcitymakerreborn", "settings.json")
|
||
|
|
file, err := os.Open(configFile)
|
||
|
|
if err != nil {
|
||
|
|
if os.IsNotExist(err) {
|
||
|
|
return &Settings{Detail: 1, Roughness: 0, Width: 300, Height: 300, Lakes: 0, LakeSize: 1}, nil
|
||
|
|
}
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
defer file.Close()
|
||
|
|
|
||
|
|
var settings Settings
|
||
|
|
decoder := json.NewDecoder(file)
|
||
|
|
if err := decoder.Decode(&settings); err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return &settings, nil
|
||
|
|
}
|