Compare commits

...

2 commits

Author SHA1 Message Date
d344841a1a improve configs 2025-04-20 21:32:09 -04:00
82b73dc84d fixed to use latest version of pyglet 2025-04-20 17:14:32 -04:00
9 changed files with 51 additions and 17 deletions

1
.gitignore vendored
View file

@ -160,3 +160,4 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
conf/user*.json

View file

@ -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
View file

@ -0,0 +1,3 @@
{
"fullscreen": true
}

View file

@ -1,2 +0,0 @@
{
}

View file

@ -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'])

View file

@ -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')

View file

@ -44,9 +44,11 @@ def init_window() -> None:
# an available resolution
pass
display = pyglet.canvas.get_display()
display = pyglet.display.get_display()
screens = display.get_screens()
windows = []
for screen in screens:
windows.append(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()

View file

@ -7,6 +7,7 @@ unittest.main(exit=False)
print("Hello!!!")
engine.screen.init_window()
window = engine.screen.window
label = pyglet.text.Label('Hello, world',
font_name='Times New Roman',
@ -14,7 +15,7 @@ label = pyglet.text.Label('Hello, world',
x=window.width//2, y=window.height//2,
anchor_x='center', anchor_y='center')
@pyglet.window.event
@window.event
def on_draw():
engine.screen.window.clear()
label.draw()

View file

@ -1,3 +1,3 @@
patch==1.16
pyglet==2.0.10
unoconv==0.9.0
patch
pyglet
unoconv