mirror of
https://github.com/hypervortex/VH-Bombsquad-Modded-Server-Files
synced 2026-08-15 13:04:50 +00:00
251 lines
11 KiB
Python
251 lines
11 KiB
Python
# Released under the MIT License. See LICENSE for details.
|
|
#
|
|
"""Settings UI functionality related to wiimote support."""
|
|
from __future__ import annotations
|
|
|
|
import _ba
|
|
import ba
|
|
|
|
|
|
class WiimoteSettingsWindow(ba.Window):
|
|
"""Window for setting up Wiimotes."""
|
|
|
|
def __init__(self) -> None:
|
|
self._r = 'wiimoteSetupWindow'
|
|
width = 600
|
|
height = 480
|
|
spacing = 40
|
|
super().__init__(root_widget=ba.containerwidget(size=(width, height),
|
|
transition='in_right'))
|
|
|
|
btn = ba.buttonwidget(parent=self._root_widget,
|
|
position=(55, height - 50),
|
|
size=(120, 60),
|
|
scale=0.8,
|
|
autoselect=True,
|
|
label=ba.Lstr(resource='backText'),
|
|
button_type='back',
|
|
on_activate_call=self._back)
|
|
|
|
ba.containerwidget(edit=self._root_widget, cancel_button=btn)
|
|
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(width * 0.5, height - 28),
|
|
size=(0, 0),
|
|
text=ba.Lstr(resource=self._r + '.titleText'),
|
|
maxwidth=270,
|
|
color=ba.app.ui.title_color,
|
|
h_align='center',
|
|
v_align='center')
|
|
|
|
ba.buttonwidget(edit=btn,
|
|
button_type='backSmall',
|
|
size=(60, 60),
|
|
label=ba.charstr(ba.SpecialChar.BACK))
|
|
|
|
v = height - 60.0
|
|
v -= spacing
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(width * 0.5, v - 80),
|
|
size=(0, 0),
|
|
color=(0.7, 0.9, 0.7, 1.0),
|
|
scale=0.75,
|
|
text=ba.Lstr(resource=self._r + '.macInstructionsText'),
|
|
maxwidth=width * 0.95,
|
|
max_height=height * 0.5,
|
|
h_align='center',
|
|
v_align='center')
|
|
v -= 230
|
|
button_width = 200
|
|
v -= 30
|
|
btn = ba.buttonwidget(parent=self._root_widget,
|
|
position=(width / 2 - button_width / 2, v + 1),
|
|
autoselect=True,
|
|
size=(button_width, 50),
|
|
label=ba.Lstr(resource=self._r + '.listenText'),
|
|
on_activate_call=WiimoteListenWindow)
|
|
ba.containerwidget(edit=self._root_widget, start_button=btn)
|
|
v -= spacing * 1.1
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(width * 0.5, v),
|
|
size=(0, 0),
|
|
color=(0.7, 0.9, 0.7, 1.0),
|
|
scale=0.8,
|
|
maxwidth=width * 0.95,
|
|
text=ba.Lstr(resource=self._r + '.thanksText'),
|
|
h_align='center',
|
|
v_align='center')
|
|
v -= 30
|
|
this_button_width = 200
|
|
ba.buttonwidget(parent=self._root_widget,
|
|
position=(width / 2 - this_button_width / 2, v - 14),
|
|
color=(0.45, 0.4, 0.5),
|
|
autoselect=True,
|
|
size=(this_button_width, 15),
|
|
label=ba.Lstr(resource=self._r + '.copyrightText'),
|
|
textcolor=(0.55, 0.5, 0.6),
|
|
text_scale=0.6,
|
|
on_activate_call=WiimoteLicenseWindow)
|
|
|
|
def _back(self) -> None:
|
|
from bastd.ui.settings import controls
|
|
ba.containerwidget(edit=self._root_widget, transition='out_right')
|
|
ba.app.ui.set_main_menu_window(
|
|
controls.ControlsSettingsWindow(
|
|
transition='in_left').get_root_widget())
|
|
|
|
|
|
class WiimoteListenWindow(ba.Window):
|
|
"""Window shown while listening for a wiimote connection."""
|
|
|
|
def __init__(self) -> None:
|
|
self._r = 'wiimoteListenWindow'
|
|
width = 650
|
|
height = 210
|
|
super().__init__(root_widget=ba.containerwidget(size=(width, height),
|
|
transition='in_right'))
|
|
btn = ba.buttonwidget(parent=self._root_widget,
|
|
position=(35, height - 60),
|
|
size=(140, 60),
|
|
autoselect=True,
|
|
label=ba.Lstr(resource='cancelText'),
|
|
scale=0.8,
|
|
on_activate_call=self._dismiss)
|
|
ba.containerwidget(edit=self._root_widget, cancel_button=btn)
|
|
_ba.start_listening_for_wii_remotes()
|
|
self._wiimote_connect_counter = 15
|
|
ba.app.ui.dismiss_wii_remotes_window_call = ba.WeakCall(self._dismiss)
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(15, height - 55),
|
|
size=(width - 30, 30),
|
|
text=ba.Lstr(resource=self._r + '.listeningText'),
|
|
color=ba.app.ui.title_color,
|
|
maxwidth=320,
|
|
h_align='center',
|
|
v_align='center')
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(15, height - 110),
|
|
size=(width - 30, 30),
|
|
scale=1.0,
|
|
text=ba.Lstr(resource=self._r + '.pressText'),
|
|
maxwidth=width * 0.9,
|
|
color=(0.7, 0.9, 0.7, 1.0),
|
|
h_align='center',
|
|
v_align='center')
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(15, height - 140),
|
|
size=(width - 30, 30),
|
|
color=(0.7, 0.9, 0.7, 1.0),
|
|
scale=0.55,
|
|
text=ba.Lstr(resource=self._r + '.pressText2'),
|
|
maxwidth=width * 0.95,
|
|
h_align='center',
|
|
v_align='center')
|
|
self._counter_text = ba.textwidget(parent=self._root_widget,
|
|
position=(15, 23),
|
|
size=(width - 30, 30),
|
|
scale=1.2,
|
|
text='15',
|
|
h_align='center',
|
|
v_align='top')
|
|
for i in range(1, 15):
|
|
ba.timer(1.0 * i,
|
|
ba.WeakCall(self._decrement),
|
|
timetype=ba.TimeType.REAL)
|
|
ba.timer(15.0, ba.WeakCall(self._dismiss), timetype=ba.TimeType.REAL)
|
|
|
|
def _decrement(self) -> None:
|
|
self._wiimote_connect_counter -= 1
|
|
ba.textwidget(edit=self._counter_text,
|
|
text=str(self._wiimote_connect_counter))
|
|
|
|
def _dismiss(self) -> None:
|
|
ba.containerwidget(edit=self._root_widget, transition='out_left')
|
|
_ba.stop_listening_for_wii_remotes()
|
|
|
|
|
|
class WiimoteLicenseWindow(ba.Window):
|
|
"""Window displaying the Darwiinremote software license."""
|
|
|
|
def __init__(self) -> None:
|
|
self._r = 'wiimoteLicenseWindow'
|
|
width = 750
|
|
height = 550
|
|
super().__init__(root_widget=ba.containerwidget(size=(width, height),
|
|
transition='in_right'))
|
|
btn = ba.buttonwidget(parent=self._root_widget,
|
|
position=(65, height - 50),
|
|
size=(120, 60),
|
|
scale=0.8,
|
|
autoselect=True,
|
|
label=ba.Lstr(resource='backText'),
|
|
button_type='back',
|
|
on_activate_call=self._close)
|
|
ba.containerwidget(edit=self._root_widget, cancel_button=btn)
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(0, height - 48),
|
|
size=(width, 30),
|
|
text=ba.Lstr(resource=self._r + '.titleText'),
|
|
h_align='center',
|
|
color=ba.app.ui.title_color,
|
|
v_align='center')
|
|
license_text = (
|
|
'Copyright (c) 2007, DarwiinRemote Team\n'
|
|
'All rights reserved.\n'
|
|
'\n'
|
|
' Redistribution and use in source and binary forms, with or '
|
|
'without modification,\n'
|
|
' are permitted provided that'
|
|
' the following conditions are met:\n'
|
|
'\n'
|
|
'1. Redistributions of source code must retain the above copyright'
|
|
' notice, this\n'
|
|
' list of conditions and the following disclaimer.\n'
|
|
'2. Redistributions in binary form must reproduce the above'
|
|
' copyright notice, this\n'
|
|
' list of conditions and the following disclaimer in the'
|
|
' documentation and/or other\n'
|
|
' materials provided with the distribution.\n'
|
|
'3. Neither the name of this project nor the names of its'
|
|
' contributors may be used to\n'
|
|
' endorse or promote products derived from this software'
|
|
' without specific prior\n'
|
|
' written permission.\n'
|
|
'\n'
|
|
'THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND'
|
|
' CONTRIBUTORS "AS IS"\n'
|
|
'AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT'
|
|
' LIMITED TO, THE\n'
|
|
'IMPLIED WARRANTIES OF MERCHANTABILITY'
|
|
' AND FITNESS FOR A PARTICULAR'
|
|
' PURPOSE\n'
|
|
'ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR'
|
|
' CONTRIBUTORS BE\n'
|
|
'LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,'
|
|
' OR\n'
|
|
'CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT'
|
|
' OF\n'
|
|
' SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;'
|
|
' OR BUSINESS\n'
|
|
'INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,'
|
|
' WHETHER IN\n'
|
|
'CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR'
|
|
' OTHERWISE)\n'
|
|
'ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF'
|
|
' ADVISED OF THE\n'
|
|
'POSSIBILITY OF SUCH DAMAGE.\n')
|
|
license_text_scale = 0.62
|
|
ba.textwidget(parent=self._root_widget,
|
|
position=(100, height * 0.45),
|
|
size=(0, 0),
|
|
h_align='left',
|
|
v_align='center',
|
|
padding=4,
|
|
color=(0.7, 0.9, 0.7, 1.0),
|
|
scale=license_text_scale,
|
|
maxwidth=width * 0.9 - 100,
|
|
max_height=height * 0.85,
|
|
text=license_text)
|
|
|
|
def _close(self) -> None:
|
|
ba.containerwidget(edit=self._root_widget, transition='out_right')
|