vh-bombsquad-modded-server-.../dist/ba_data/python/bastd/ui/settings/wiimote.py
2024-06-06 19:50:58 +05:30

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