vh-bombsquad-modded-server-.../dist/ba_data/python/bastd/ui/configerror.py
2024-02-26 00:17:10 +05:30

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)