improve configs
This commit is contained in:
parent
82b73dc84d
commit
d344841a1a
7 changed files with 45 additions and 12 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -160,3 +160,4 @@ cython_debug/
|
|||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
conf/user*.json
|
|
@ -1 +1,6 @@
|
|||
game configuration goes here
|
||||
Various game configuration files go here
|
||||
|
||||
* `default.json` contains default settings for the game
|
||||
* `user.json` contains modifications of those defaults made through the UI
|
||||
|
||||
`engine/config.py` is designed to read, write, manage and otherwise handle these files.
|
||||
|
|
3
conf/default.json
Normal file
3
conf/default.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"fullscreen": true
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
{
|
||||
}
|
|
@ -11,8 +11,10 @@ class SettingsLoader(UserDict):
|
|||
self.reload()
|
||||
|
||||
def load_settings_file(self: object, file: str) -> None:
|
||||
if not data.exists('conf', file):
|
||||
return
|
||||
ext = os.path.splitext(file)[1]
|
||||
with data.data_open('conf', file) as fd:
|
||||
with data.fd_open('conf', file) as fd:
|
||||
if ext == '.json':
|
||||
self.data.update(json.load(fd))
|
||||
else:
|
||||
|
@ -30,6 +32,20 @@ class SettingsMutable(SettingsLoader):
|
|||
pass
|
||||
|
||||
class SettingsWritable(SettingsMutable):
|
||||
pass
|
||||
def __init__(self: object, files: list, outfile: str):
|
||||
super().__init__(files)
|
||||
self.outfile = outfile
|
||||
|
||||
def save(self: object):
|
||||
defaults = SettingsReadOnly([x for x in self.files if x != self.outfile])
|
||||
outdata = {}
|
||||
for k in self.data.keys():
|
||||
if not k in defaults:
|
||||
outdata[k] = self.data[k]
|
||||
if outdata or data.exists('conf', self.outfile):
|
||||
with data.fd_write('conf', self.outfile) as fd:
|
||||
json.dump(outdata, fd, indent=4)
|
||||
|
||||
|
||||
init = SettingsWritable(['default.json', 'user.json'], 'user.json')
|
||||
|
||||
init = SettingsWritable(['init.json'])
|
||||
|
|
|
@ -10,7 +10,15 @@ def program_path() -> str:
|
|||
|
||||
return g_pp
|
||||
|
||||
def data_open(vault: str, path: str) -> object:
|
||||
def exists(vault: str, path: str) -> bool:
|
||||
fp = os.path.join(program_path(), vault, path)
|
||||
return open(fp, 'r')
|
||||
|
||||
return os.path.exists(fp)
|
||||
|
||||
def fd_open(vault: str, path: str) -> object:
|
||||
fp = os.path.join(program_path(), vault, path)
|
||||
return open(fp, 'r')
|
||||
|
||||
def fd_write(vault: str, path: str) -> object:
|
||||
fp = os.path.join(program_path(), vault, path)
|
||||
os.makedirs(os.path.join(program_path(), vault), exist_ok=True)
|
||||
return open(fp, 'w')
|
||||
|
|
|
@ -47,6 +47,8 @@ def init_window() -> None:
|
|||
display = pyglet.display.get_display()
|
||||
screens = display.get_screens()
|
||||
windows = []
|
||||
for screen in screens:
|
||||
windows.append(pyglet.window.Window(fullscreen=True, screen=screen))
|
||||
window = pyglet.window.Window()
|
||||
# for screen in screens:
|
||||
# print(f"creating window on screen {screen}")
|
||||
# windows.append(pyglet.window.Window(fullscreen=True, screen=screen))
|
||||
window = pyglet.window.Window(fullscreen=fs, screen=screens[0])
|
||||
cfg.save()
|
Loading…
Add table
Reference in a new issue