1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-20 14:15:23 +00:00
OpenDiablo2/d2core/d2config/config.go
Haashi 5e1725dd7d
385/lintissues (#391)
* camera offset for ui panels :

added maprenderer viewport to be aligned left or right

calling alignement on keyPress in game_controls

* check if already aligned

* fix bugs

-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment

* remove config.json and replace go.mod line

* removing duplicate import of d2common

replacing all dh to d2common

* remove useless breaks from switch statement

* better range when value unused + prettying import

* item_affix rewrite

using return values instead of pointer references in arguments

* ebiten deprecated calls

* small fixes
2020-06-22 11:53:44 -04:00

120 lines
2.3 KiB
Go

package d2config
import (
"encoding/json"
"io/ioutil"
"os"
"os/user"
"path"
"runtime"
)
func getDefaultConfig() *Configuration {
config := &Configuration{
Language: "ENG",
FullScreen: false,
TicksPerSecond: -1,
RunInBackground: true,
VsyncEnabled: true,
SfxVolume: 1.0,
BgmVolume: 0.3,
MpqPath: "C:/Program Files (x86)/Diablo II",
MpqLoadOrder: []string{
"Patch_D2.mpq",
"d2exp.mpq",
"d2xmusic.mpq",
"d2xtalk.mpq",
"d2xvideo.mpq",
"d2data.mpq",
"d2char.mpq",
"d2music.mpq",
"d2sfx.mpq",
"d2video.mpq",
"d2speech.mpq",
},
}
switch runtime.GOOS {
case "windows":
switch runtime.GOARCH {
case "386":
config.MpqPath = "C:/Program Files/Diablo II"
}
case "darwin":
config.MpqPath = "/Applications/Diablo II/"
config.MpqLoadOrder = []string{
"Diablo II Patch",
"Diablo II Expansion Data",
"Diablo II Expansion Movies",
"Diablo II Expansion Music",
"Diablo II Expansion Speech",
"Diablo II Game Data",
"Diablo II Graphics",
"Diablo II Movies",
"Diablo II Music",
"Diablo II Sounds",
"Diablo II Speech",
}
case "linux":
if usr, err := user.Current(); err == nil {
config.MpqPath = path.Join(usr.HomeDir, ".wine/drive_c/Program Files (x86)/Diablo II")
}
}
return config
}
func getDefaultConfigPath() string {
if configDir, err := os.UserConfigDir(); err == nil {
return path.Join(configDir, "OpenDiablo2", "config.json")
}
return getLocalConfigPath()
}
func getLocalConfigPath() string {
return path.Join(path.Dir(os.Args[0]), "config.json")
}
func load(configPath string) error {
configFile, err := os.Open(configPath)
if err != nil {
return err
}
defer configFile.Close()
data, err := ioutil.ReadAll(configFile)
if err != nil {
return err
}
if err := json.Unmarshal(data, &singleton); err != nil {
return err
}
return nil
}
func save(configPath string) error {
configDir := path.Dir(configPath)
if err := os.MkdirAll(configDir, 0755); err != nil {
return err
}
configFile, err := os.Create(configPath)
if err != nil {
return err
}
defer configFile.Close()
data, err := json.MarshalIndent(singleton, "", " ")
if err != nil {
return err
}
if _, err := configFile.Write(data); err != nil {
return err
}
return nil
}