mirror of
https://github.com/hypervortex/VH-Bombsquad-Modded-Server-Files
synced 2025-11-07 17:36:08 +00:00
88 lines
2.8 KiB
Python
88 lines
2.8 KiB
Python
# Released under the MIT License. See LICENSE for details.
|
|
#
|
|
"""UI for dealing with broken config files."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
import ba
|
|
import ba.internal
|
|
|
|
if TYPE_CHECKING:
|
|
pass
|
|
|
|
|
|
class ConfigErrorWindow(ba.Window):
|
|
"""Window for dealing with a broken config."""
|
|
|
|
def __init__(self) -> None:
|
|
self._config_file_path = ba.app.config_file_path
|
|
width = 800
|
|
super().__init__(
|
|
ba.containerwidget(size=(width, 400), transition='in_right')
|
|
)
|
|
padding = 20
|
|
ba.textwidget(
|
|
parent=self._root_widget,
|
|
position=(padding, 220 + 60),
|
|
size=(width - 2 * padding, 100 - 2 * padding),
|
|
h_align='center',
|
|
v_align='top',
|
|
scale=0.73,
|
|
text=(
|
|
f'Error reading {ba.internal.appnameupper()} config file'
|
|
':\n\n\nCheck the console'
|
|
' (press ~ twice) for details.\n\nWould you like to quit and'
|
|
' try to fix it by hand\nor overwrite it with defaults?\n\n'
|
|
'(high scores, player profiles, etc will be lost if you'
|
|
' overwrite)'
|
|
),
|
|
)
|
|
ba.textwidget(
|
|
parent=self._root_widget,
|
|
position=(padding, 198 + 60),
|
|
size=(width - 2 * padding, 100 - 2 * padding),
|
|
h_align='center',
|
|
v_align='top',
|
|
scale=0.5,
|
|
text=self._config_file_path,
|
|
)
|
|
quit_button = ba.buttonwidget(
|
|
parent=self._root_widget,
|
|
position=(35, 30),
|
|
size=(240, 54),
|
|
label='Quit and Edit',
|
|
on_activate_call=self._quit,
|
|
)
|
|
ba.buttonwidget(
|
|
parent=self._root_widget,
|
|
position=(width - 370, 30),
|
|
size=(330, 54),
|
|
label='Overwrite with Defaults',
|
|
on_activate_call=self._defaults,
|
|
)
|
|
ba.containerwidget(
|
|
edit=self._root_widget,
|
|
cancel_button=quit_button,
|
|
selected_child=quit_button,
|
|
)
|
|
|
|
def _quit(self) -> None:
|
|
ba.timer(0.001, self._edit_and_quit, timetype=ba.TimeType.REAL)
|
|
ba.internal.lock_all_input()
|
|
|
|
def _edit_and_quit(self) -> None:
|
|
ba.internal.open_file_externally(self._config_file_path)
|
|
ba.timer(0.1, ba.quit, timetype=ba.TimeType.REAL)
|
|
|
|
def _defaults(self) -> None:
|
|
from ba.internal import commit_app_config
|
|
|
|
ba.containerwidget(edit=self._root_widget, transition='out_left')
|
|
ba.playsound(ba.getsound('gunCocking'))
|
|
ba.screenmessage('settings reset.', color=(1, 1, 0))
|
|
|
|
# At this point settings are already set; lets just commit them
|
|
# to disk.
|
|
commit_app_config(force=True)
|