mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-07 16:13:23 +08:00
Cleaned up co-op score screen and text actor
This commit is contained in:
parent
c28966dbfa
commit
98c8fcf61d
@ -382,18 +382,20 @@ class Achievement:
|
|||||||
if style == 'post_game':
|
if style == 'post_game':
|
||||||
in_game_colors = False
|
in_game_colors = False
|
||||||
in_main_menu = False
|
in_main_menu = False
|
||||||
h_attach = v_attach = attach = 'center'
|
h_attach = Text.HAttach.CENTER
|
||||||
|
v_attach = Text.VAttach.CENTER
|
||||||
|
attach = 'center'
|
||||||
elif style == 'in_game':
|
elif style == 'in_game':
|
||||||
in_game_colors = True
|
in_game_colors = True
|
||||||
in_main_menu = False
|
in_main_menu = False
|
||||||
h_attach = 'left'
|
h_attach = Text.HAttach.LEFT
|
||||||
v_attach = 'top'
|
v_attach = Text.VAttach.TOP
|
||||||
attach = 'topLeft'
|
attach = 'topLeft'
|
||||||
elif style == 'news':
|
elif style == 'news':
|
||||||
in_game_colors = True
|
in_game_colors = True
|
||||||
in_main_menu = True
|
in_main_menu = True
|
||||||
h_attach = 'center'
|
h_attach = Text.HAttach.CENTER
|
||||||
v_attach = 'top'
|
v_attach = Text.VAttach.TOP
|
||||||
attach = 'topCenter'
|
attach = 'topCenter'
|
||||||
else:
|
else:
|
||||||
raise Exception('invalid style "' + style + '"')
|
raise Exception('invalid style "' + style + '"')
|
||||||
@ -449,7 +451,7 @@ class Achievement:
|
|||||||
host_only=True,
|
host_only=True,
|
||||||
maxwidth=txt_max_w,
|
maxwidth=txt_max_w,
|
||||||
position=(x, y + 2),
|
position=(x, y + 2),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=txt_s,
|
scale=txt_s,
|
||||||
flatness=0.6,
|
flatness=0.6,
|
||||||
shadow=0.5,
|
shadow=0.5,
|
||||||
@ -466,7 +468,7 @@ class Achievement:
|
|||||||
host_only=True,
|
host_only=True,
|
||||||
maxwidth=txt2_max_w,
|
maxwidth=txt2_max_w,
|
||||||
position=(x, y - 14),
|
position=(x, y - 14),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
vr_depth=-5,
|
vr_depth=-5,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
@ -483,19 +485,18 @@ class Achievement:
|
|||||||
host_only=True,
|
host_only=True,
|
||||||
maxwidth=txt2_max_w * 0.7,
|
maxwidth=txt2_max_w * 0.7,
|
||||||
position=(x + 60, y + 5),
|
position=(x + 60, y + 5),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
vr_depth=-5,
|
vr_depth=-5,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
scale=txt_s * 0.8,
|
scale=txt_s * 0.8,
|
||||||
flatness=1.0,
|
flatness=1.0,
|
||||||
shadow=0.5,
|
shadow=0.5,
|
||||||
color=(1, 1, 0.6, 1),
|
color=(1, 1, 0.6, 1),
|
||||||
transition_delay=delay + 0.1,
|
transition_delay=delay + 0.1,
|
||||||
transition_out_delay=out_delay_fin).autoretain()
|
transition_out_delay=out_delay_fin).autoretain()
|
||||||
assert txtactor.node
|
|
||||||
txtactor.node.rotate = 10
|
txtactor.node.rotate = 10
|
||||||
objs.append(txtactor)
|
objs.append(txtactor)
|
||||||
|
|
||||||
@ -505,12 +506,12 @@ class Achievement:
|
|||||||
Text(_ba.charstr(SpecialChar.TICKET),
|
Text(_ba.charstr(SpecialChar.TICKET),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
position=(x + award_x + 33, y + 7),
|
position=(x + award_x + 33, y + 7),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=1.5,
|
scale=1.5,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=(1, 1, 1, 0.2 if hmo else 0.4),
|
color=(1, 1, 1, 0.2 if hmo else 0.4),
|
||||||
transition_delay=delay + 0.05,
|
transition_delay=delay + 0.05,
|
||||||
transition_out_delay=out_delay_fin).autoretain())
|
transition_out_delay=out_delay_fin).autoretain())
|
||||||
@ -518,13 +519,13 @@ class Achievement:
|
|||||||
Text('+' + str(self.get_award_ticket_value()),
|
Text('+' + str(self.get_award_ticket_value()),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
position=(x + award_x + 28, y + 16),
|
position=(x + award_x + 28, y + 16),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
flatness=1,
|
flatness=1,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=cl2,
|
color=cl2,
|
||||||
transition_delay=delay + 0.05,
|
transition_delay=delay + 0.05,
|
||||||
transition_out_delay=out_delay_fin).autoretain())
|
transition_out_delay=out_delay_fin).autoretain())
|
||||||
@ -566,12 +567,12 @@ class Achievement:
|
|||||||
Text(_ba.charstr(SpecialChar.TICKET),
|
Text(_ba.charstr(SpecialChar.TICKET),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
position=(x + award_x + 33, y + 7),
|
position=(x + award_x + 33, y + 7),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
scale=1.5,
|
scale=1.5,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=(1, 1, 1, 0.4) if complete else
|
color=(1, 1, 1, 0.4) if complete else
|
||||||
(1, 1, 1, (0.1 if hmo else 0.2)),
|
(1, 1, 1, (0.1 if hmo else 0.2)),
|
||||||
transition_delay=delay + 0.05,
|
transition_delay=delay + 0.05,
|
||||||
@ -580,13 +581,13 @@ class Achievement:
|
|||||||
Text('+' + str(self.get_award_ticket_value()),
|
Text('+' + str(self.get_award_ticket_value()),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
position=(x + award_x + 28, y + 16),
|
position=(x + award_x + 28, y + 16),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
flatness=1,
|
flatness=1,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=((0.8, 0.93, 0.8, 1.0) if complete else
|
color=((0.8, 0.93, 0.8, 1.0) if complete else
|
||||||
(0.6, 0.6, 0.6, (0.2 if hmo else 0.4))),
|
(0.6, 0.6, 0.6, (0.2 if hmo else 0.4))),
|
||||||
transition_delay=delay + 0.05,
|
transition_delay=delay + 0.05,
|
||||||
@ -595,23 +596,25 @@ class Achievement:
|
|||||||
# Show 'hard-mode-only' only over incomplete achievements
|
# Show 'hard-mode-only' only over incomplete achievements
|
||||||
# when that's the case.
|
# when that's the case.
|
||||||
if hmo:
|
if hmo:
|
||||||
|
print('DOING HMO WITH STYLE', style)
|
||||||
txtactor = Text(
|
txtactor = Text(
|
||||||
Lstr(resource='difficultyHardOnlyText'),
|
Lstr(resource='difficultyHardOnlyText'),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
maxwidth=300 * 0.7,
|
maxwidth=300 * 0.7,
|
||||||
position=(x + 60, y + 5),
|
position=(x + 60, y + 5),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
vr_depth=-5,
|
vr_depth=-5,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
scale=0.85 * 0.8,
|
scale=0.85 * 0.8,
|
||||||
flatness=1.0,
|
flatness=1.0,
|
||||||
shadow=0.5,
|
shadow=0.5,
|
||||||
color=(1, 1, 0.6, 1),
|
color=(1, 1, 0.6, 1),
|
||||||
transition_delay=delay + 0.05,
|
transition_delay=delay + 0.05,
|
||||||
transition_out_delay=None).autoretain()
|
transition_out_delay=None).autoretain()
|
||||||
|
print('DID HMO')
|
||||||
assert txtactor.node
|
assert txtactor.node
|
||||||
txtactor.node.rotate = 10
|
txtactor.node.rotate = 10
|
||||||
objs.append(txtactor)
|
objs.append(txtactor)
|
||||||
@ -621,7 +624,7 @@ class Achievement:
|
|||||||
host_only=True,
|
host_only=True,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
position=(x, y + 2),
|
position=(x, y + 2),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
scale=0.85,
|
scale=0.85,
|
||||||
flatness=0.6,
|
flatness=0.6,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
@ -636,7 +639,7 @@ class Achievement:
|
|||||||
host_only=True,
|
host_only=True,
|
||||||
maxwidth=400,
|
maxwidth=400,
|
||||||
position=(x, y - 14),
|
position=(x, y - 14),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
vr_depth=-5,
|
vr_depth=-5,
|
||||||
h_attach=h_attach,
|
h_attach=h_attach,
|
||||||
v_attach=v_attach,
|
v_attach=v_attach,
|
||||||
@ -862,9 +865,9 @@ class Achievement:
|
|||||||
subs=[('${A}', Lstr(resource='achievementText'))]),
|
subs=[('${A}', Lstr(resource='achievementText'))]),
|
||||||
position=(-120, 91 + y_offs),
|
position=(-120, 91 + y_offs),
|
||||||
front=True,
|
front=True,
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
vr_depth=base_vr_depth - 10,
|
vr_depth=base_vr_depth - 10,
|
||||||
transition='in_bottom',
|
transition=Text.Transition.IN_BOTTOM,
|
||||||
flatness=0.5,
|
flatness=0.5,
|
||||||
transition_delay=in_time,
|
transition_delay=in_time,
|
||||||
transition_out_delay=out_time,
|
transition_out_delay=out_time,
|
||||||
@ -877,8 +880,8 @@ class Achievement:
|
|||||||
objt = Text(self.display_name,
|
objt = Text(self.display_name,
|
||||||
position=(-120, 50 + y_offs),
|
position=(-120, 50 + y_offs),
|
||||||
front=True,
|
front=True,
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
transition='in_bottom',
|
transition=Text.Transition.IN_BOTTOM,
|
||||||
vr_depth=base_vr_depth,
|
vr_depth=base_vr_depth,
|
||||||
flatness=0.5,
|
flatness=0.5,
|
||||||
transition_delay=in_time,
|
transition_delay=in_time,
|
||||||
@ -893,10 +896,10 @@ class Achievement:
|
|||||||
objt = Text(_ba.charstr(SpecialChar.TICKET),
|
objt = Text(_ba.charstr(SpecialChar.TICKET),
|
||||||
position=(-120 - 170 + 5, 75 + y_offs - 20),
|
position=(-120 - 170 + 5, 75 + y_offs - 20),
|
||||||
front=True,
|
front=True,
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='in_bottom',
|
transition=Text.Transition.IN_BOTTOM,
|
||||||
vr_depth=base_vr_depth,
|
vr_depth=base_vr_depth,
|
||||||
transition_delay=in_time,
|
transition_delay=in_time,
|
||||||
transition_out_delay=out_time,
|
transition_out_delay=out_time,
|
||||||
@ -909,11 +912,11 @@ class Achievement:
|
|||||||
|
|
||||||
objt = Text('+' + str(self.get_award_ticket_value()),
|
objt = Text('+' + str(self.get_award_ticket_value()),
|
||||||
position=(-120 - 180 + 5, 80 + y_offs - 20),
|
position=(-120 - 180 + 5, 80 + y_offs - 20),
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
front=True,
|
front=True,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='in_bottom',
|
transition=Text.Transition.IN_BOTTOM,
|
||||||
vr_depth=base_vr_depth,
|
vr_depth=base_vr_depth,
|
||||||
flatness=0.5,
|
flatness=0.5,
|
||||||
shadow=1.0,
|
shadow=1.0,
|
||||||
@ -930,11 +933,11 @@ class Achievement:
|
|||||||
if _account.have_pro():
|
if _account.have_pro():
|
||||||
objt = Text('x 2',
|
objt = Text('x 2',
|
||||||
position=(-120 - 180 + 45, 80 + y_offs - 50),
|
position=(-120 - 180 + 45, 80 + y_offs - 50),
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
front=True,
|
front=True,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='in_bottom',
|
transition=Text.Transition.IN_BOTTOM,
|
||||||
vr_depth=base_vr_depth,
|
vr_depth=base_vr_depth,
|
||||||
flatness=0.5,
|
flatness=0.5,
|
||||||
shadow=1.0,
|
shadow=1.0,
|
||||||
@ -950,8 +953,8 @@ class Achievement:
|
|||||||
objt = Text(self.description_complete,
|
objt = Text(self.description_complete,
|
||||||
position=(-120, 30 + y_offs),
|
position=(-120, 30 + y_offs),
|
||||||
front=True,
|
front=True,
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
transition='in_bottom',
|
transition=Text.Transition.IN_BOTTOM,
|
||||||
vr_depth=base_vr_depth - 10,
|
vr_depth=base_vr_depth - 10,
|
||||||
flatness=0.5,
|
flatness=0.5,
|
||||||
transition_delay=in_time,
|
transition_delay=in_time,
|
||||||
|
|||||||
@ -179,7 +179,7 @@ class ScoreScreenActivity(Activity):
|
|||||||
|
|
||||||
def on_begin(self) -> None:
|
def on_begin(self) -> None:
|
||||||
# pylint: disable=cyclic-import
|
# pylint: disable=cyclic-import
|
||||||
from bastd.actor import text
|
from bastd.actor.text import Text
|
||||||
from ba import _lang
|
from ba import _lang
|
||||||
super().on_begin()
|
super().on_begin()
|
||||||
|
|
||||||
@ -193,16 +193,16 @@ class ScoreScreenActivity(Activity):
|
|||||||
else:
|
else:
|
||||||
sval = _lang.Lstr(resource='pressAnyButtonText')
|
sval = _lang.Lstr(resource='pressAnyButtonText')
|
||||||
|
|
||||||
text.Text(self._custom_continue_message
|
Text(self._custom_continue_message
|
||||||
if self._custom_continue_message is not None else sval,
|
if self._custom_continue_message is not None else sval,
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
flash=True,
|
flash=True,
|
||||||
vr_depth=50,
|
vr_depth=50,
|
||||||
position=(0, 10),
|
position=(0, 10),
|
||||||
scale=0.8,
|
scale=0.8,
|
||||||
color=(0.5, 0.7, 0.5, 0.5),
|
color=(0.5, 0.7, 0.5, 0.5),
|
||||||
transition='in_bottom_slow',
|
transition=Text.Transition.IN_BOTTOM_SLOW,
|
||||||
transition_delay=self._min_view_time).autoretain()
|
transition_delay=self._min_view_time).autoretain()
|
||||||
|
|
||||||
def _player_press(self) -> None:
|
def _player_press(self) -> None:
|
||||||
|
|||||||
@ -27,18 +27,18 @@ from typing import TYPE_CHECKING, TypeVar
|
|||||||
|
|
||||||
from ba._messages import DieMessage, DeathType, OutOfBoundsMessage
|
from ba._messages import DieMessage, DeathType, OutOfBoundsMessage
|
||||||
from ba import _error
|
from ba import _error
|
||||||
|
|
||||||
import _ba
|
import _ba
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
import ba
|
import ba
|
||||||
|
|
||||||
T = TypeVar('T', bound='Actor')
|
T = TypeVar('T', bound='Actor')
|
||||||
|
|
||||||
|
|
||||||
class Actor:
|
class Actor:
|
||||||
"""High level logical entities in a game/activity.
|
"""High level logical entities in a ba.Activity.
|
||||||
|
|
||||||
Category: Gameplay Classes
|
Category: Gameplay Classes
|
||||||
|
|
||||||
@ -86,9 +86,6 @@ class Actor:
|
|||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
"""Instantiates an Actor in the current ba.Activity."""
|
"""Instantiates an Actor in the current ba.Activity."""
|
||||||
|
|
||||||
# FIXME: Actor should not be assumed to have a 'node' attr.
|
|
||||||
# self.node: Optional[ba.Node] = None
|
|
||||||
|
|
||||||
if __debug__:
|
if __debug__:
|
||||||
self._root_actor_init_called = True
|
self._root_actor_init_called = True
|
||||||
activity = _ba.getactivity()
|
activity = _ba.getactivity()
|
||||||
|
|||||||
@ -163,10 +163,10 @@ class CoopGameActivity(GameActivity):
|
|||||||
Text(_lang.Lstr(resource='achievementsRemainingText'),
|
Text(_lang.Lstr(resource='achievementsRemainingText'),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
position=(ts_h_offs - 10 + 40, v_offs - 10),
|
position=(ts_h_offs - 10 + 40, v_offs - 10),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=1.1,
|
scale=1.1,
|
||||||
h_attach="left",
|
h_attach=Text.HAttach.LEFT,
|
||||||
v_attach="top",
|
v_attach=Text.VAttach.TOP,
|
||||||
color=(1, 1, 1.2, 1) if vrmode else (0.8, 0.8, 1.0, 1.0),
|
color=(1, 1, 1.2, 1) if vrmode else (0.8, 0.8, 1.0, 1.0),
|
||||||
flatness=1.0 if vrmode else 0.6,
|
flatness=1.0 if vrmode else 0.6,
|
||||||
shadow=1.0 if vrmode else 0.5,
|
shadow=1.0 if vrmode else 0.5,
|
||||||
|
|||||||
@ -57,10 +57,10 @@ class CoopJoiningActivity(JoiningActivity):
|
|||||||
Text(self.session.campaign.get_level(
|
Text(self.session.campaign.get_level(
|
||||||
self.session.campaign_state['level']).displayname,
|
self.session.campaign_state['level']).displayname,
|
||||||
scale=1.3,
|
scale=1.3,
|
||||||
h_attach='center',
|
h_attach=Text.HAttach.CENTER,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_attach='top',
|
v_attach=Text.VAttach.TOP,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=4.0,
|
transition_delay=4.0,
|
||||||
color=(1, 1, 1, 0.6),
|
color=(1, 1, 1, 0.6),
|
||||||
position=(0, -95)).autoretain()
|
position=(0, -95)).autoretain()
|
||||||
@ -106,10 +106,10 @@ class CoopJoiningActivity(JoiningActivity):
|
|||||||
) -> None:
|
) -> None:
|
||||||
Text(text,
|
Text(text,
|
||||||
scale=scale * 0.76,
|
scale=scale * 0.76,
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
h_attach='left',
|
h_attach=Text.HAttach.LEFT,
|
||||||
v_attach='top',
|
v_attach=Text.VAttach.TOP,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=delay,
|
transition_delay=delay,
|
||||||
color=color,
|
color=color,
|
||||||
position=(60 + h_offs, vpos)).autoretain()
|
position=(60 + h_offs, vpos)).autoretain()
|
||||||
@ -179,10 +179,10 @@ class CoopJoiningActivity(JoiningActivity):
|
|||||||
Text(ba.Lstr(resource='achievementsRemainingText'),
|
Text(ba.Lstr(resource='achievementsRemainingText'),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
position=(ts_h_offs - 10, vpos),
|
position=(ts_h_offs - 10, vpos),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=1.1 * 0.76,
|
scale=1.1 * 0.76,
|
||||||
h_attach="left",
|
h_attach=Text.HAttach.LEFT,
|
||||||
v_attach="top",
|
v_attach=Text.VAttach.TOP,
|
||||||
color=(1, 1, 1.2, 1) if vrmode else (0.8, 0.8, 1, 1),
|
color=(1, 1, 1.2, 1) if vrmode else (0.8, 0.8, 1, 1),
|
||||||
shadow=1.0,
|
shadow=1.0,
|
||||||
flatness=1.0 if vrmode else 0.6,
|
flatness=1.0 if vrmode else 0.6,
|
||||||
@ -197,9 +197,9 @@ class CoopJoiningActivity(JoiningActivity):
|
|||||||
Text(ba.Lstr(resource='noAchievementsRemainingText'),
|
Text(ba.Lstr(resource='noAchievementsRemainingText'),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
position=(ts_h_offs + 15, vpos + 10),
|
position=(ts_h_offs + 15, vpos + 10),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
h_attach="left",
|
h_attach=Text.HAttach.LEFT,
|
||||||
v_attach="top",
|
v_attach=Text.VAttach.TOP,
|
||||||
color=(1, 1, 1, 0.5),
|
color=(1, 1, 1, 0.5),
|
||||||
transition_delay=delay + 0.5).autoretain()
|
transition_delay=delay + 0.5).autoretain()
|
||||||
|
|||||||
@ -140,8 +140,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
self._score: Optional[int] = settings['score']
|
self._score: Optional[int] = settings['score']
|
||||||
assert isinstance(self._score, (int, type(None)))
|
assert isinstance(self._score, (int, type(None)))
|
||||||
|
|
||||||
self._fail_message: Optional[str] = settings['fail_message']
|
self._fail_message: Optional[ba.Lstr] = settings['fail_message']
|
||||||
assert isinstance(self._fail_message, (str, type(None)))
|
assert isinstance(self._fail_message, (ba.Lstr, type(None)))
|
||||||
|
|
||||||
self._begin_time = ba.time()
|
self._begin_time = ba.time()
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
flash=True,
|
flash=True,
|
||||||
maxwidth=360,
|
maxwidth=360,
|
||||||
scale=0.54,
|
scale=0.54,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
color=(0.5, 0.7, 0.5, 1),
|
color=(0.5, 0.7, 0.5, 1),
|
||||||
position=(300, -235))
|
position=(300, -235))
|
||||||
ba.playsound(ba.getsound('error'))
|
ba.playsound(ba.getsound('error'))
|
||||||
@ -555,20 +555,20 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
]) if self._newly_complete else
|
]) if self._newly_complete else
|
||||||
ba.Lstr(value='${A}:\n',
|
ba.Lstr(value='${A}:\n',
|
||||||
subs=[('${A}', ba.Lstr(resource='nextLevelText'))]),
|
subs=[('${A}', ba.Lstr(resource='nextLevelText'))]),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=5.2,
|
transition_delay=5.2,
|
||||||
flash=self._newly_complete,
|
flash=self._newly_complete,
|
||||||
scale=0.54,
|
scale=0.54,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
maxwidth=270,
|
maxwidth=270,
|
||||||
color=(0.5, 0.7, 0.5, 1),
|
color=(0.5, 0.7, 0.5, 1),
|
||||||
position=(270, -235)).autoretain()
|
position=(270, -235)).autoretain()
|
||||||
Text(ba.Lstr(translate=('coopLevelNames', self._next_level_name)),
|
Text(ba.Lstr(translate=('coopLevelNames', self._next_level_name)),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=5.2,
|
transition_delay=5.2,
|
||||||
flash=self._newly_complete,
|
flash=self._newly_complete,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
maxwidth=205,
|
maxwidth=205,
|
||||||
color=(0.5, 0.7, 0.5, 1),
|
color=(0.5, 0.7, 0.5, 1),
|
||||||
position=(270, -255)).autoretain()
|
position=(270, -255)).autoretain()
|
||||||
@ -599,10 +599,10 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
jitter=1.0).autoretain()
|
jitter=1.0).autoretain()
|
||||||
Text(pstr,
|
Text(pstr,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=(0.5, 0.7, 0.5, 1),
|
color=(0.5, 0.7, 0.5, 1),
|
||||||
position=(0, 230)).autoretain()
|
position=(0, 230)).autoretain()
|
||||||
|
|
||||||
@ -610,11 +610,11 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
txt = Text(ba.Lstr(resource='waitingForHostText',
|
txt = Text(ba.Lstr(resource='waitingForHostText',
|
||||||
subs=[('${HOST}', adisp)]),
|
subs=[('${HOST}', adisp)]),
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=8.0,
|
transition_delay=8.0,
|
||||||
scale=0.85,
|
scale=0.85,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=(1, 1, 0, 1),
|
color=(1, 1, 0, 1),
|
||||||
position=(0, -230)).autoretain()
|
position=(0, -230)).autoretain()
|
||||||
assert txt.node
|
assert txt.node
|
||||||
@ -636,19 +636,19 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
[p['name'] for p in self._player_info])
|
[p['name'] for p in self._player_info])
|
||||||
|
|
||||||
if self._show_friend_scores:
|
if self._show_friend_scores:
|
||||||
self._friends_loading_status = Text(ba.Lstr(
|
self._friends_loading_status = Text(
|
||||||
value='${A}...',
|
ba.Lstr(value='${A}...',
|
||||||
subs=[('${A}', ba.Lstr(resource='loadingText'))]),
|
subs=[('${A}', ba.Lstr(resource='loadingText'))]),
|
||||||
position=(-405, 150 + 30),
|
position=(-405, 150 + 30),
|
||||||
color=(1, 1, 1, 0.4),
|
color=(1, 1, 1, 0.4),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
transition_delay=2.0)
|
transition_delay=2.0)
|
||||||
self._score_loading_status = Text(ba.Lstr(
|
self._score_loading_status = Text(ba.Lstr(
|
||||||
value='${A}...', subs=[('${A}', ba.Lstr(resource='loadingText'))]),
|
value='${A}...', subs=[('${A}', ba.Lstr(resource='loadingText'))]),
|
||||||
position=(280, 150 + 30),
|
position=(280, 150 + 30),
|
||||||
color=(1, 1, 1, 0.4),
|
color=(1, 1, 1, 0.4),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
transition_delay=2.0)
|
transition_delay=2.0)
|
||||||
|
|
||||||
@ -732,8 +732,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
resource='worldsBestTimesText'),
|
resource='worldsBestTimesText'),
|
||||||
maxwidth=210,
|
maxwidth=210,
|
||||||
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
|
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
scale=1.2,
|
scale=1.2,
|
||||||
transition_delay=2.2).autoretain()
|
transition_delay=2.2).autoretain()
|
||||||
|
|
||||||
@ -753,8 +753,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
maxwidth=210,
|
maxwidth=210,
|
||||||
position=(ts_h_offs - 10,
|
position=(ts_h_offs - 10,
|
||||||
ts_height / 2 + 25 + v_offs + 20),
|
ts_height / 2 + 25 + v_offs + 20),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
scale=1.2,
|
scale=1.2,
|
||||||
transition_delay=1.8).autoretain()
|
transition_delay=1.8).autoretain()
|
||||||
assert txt.node
|
assert txt.node
|
||||||
@ -769,8 +769,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
resource='yourBestTimesText'),
|
resource='yourBestTimesText'),
|
||||||
maxwidth=210,
|
maxwidth=210,
|
||||||
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
|
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
scale=1.2,
|
scale=1.2,
|
||||||
transition_delay=1.8).autoretain()
|
transition_delay=1.8).autoretain()
|
||||||
|
|
||||||
@ -825,11 +825,11 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
position=(ts_h_offs + 20 + h_offs_extra,
|
position=(ts_h_offs + 20 + h_offs_extra,
|
||||||
v_offs_extra + ts_height / 2 + -ts_height *
|
v_offs_extra + ts_height / 2 + -ts_height *
|
||||||
(i + 1) / 10 + v_offs + 11.0),
|
(i + 1) / 10 + v_offs + 11.0),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=color0,
|
color=color0,
|
||||||
flash=flash,
|
flash=flash,
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=tdelay1).autoretain()
|
transition_delay=tdelay1).autoretain()
|
||||||
|
|
||||||
Text(ba.Lstr(value=name_str),
|
Text(ba.Lstr(value=name_str),
|
||||||
@ -837,11 +837,11 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
v_offs_extra + ts_height / 2 + -ts_height *
|
v_offs_extra + ts_height / 2 + -ts_height *
|
||||||
(i + 1) / 10 + v_offs_names + v_offs + 11.0),
|
(i + 1) / 10 + v_offs_names + v_offs + 11.0),
|
||||||
maxwidth=80.0 + 100.0 * len(self._player_info),
|
maxwidth=80.0 + 100.0 * len(self._player_info),
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=color1,
|
color=color1,
|
||||||
flash=flash,
|
flash=flash,
|
||||||
scale=scale,
|
scale=scale,
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=tdelay2).autoretain()
|
transition_delay=tdelay2).autoretain()
|
||||||
|
|
||||||
# Show achievements for this level.
|
# Show achievements for this level.
|
||||||
@ -859,8 +859,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
ts_height / 2 + 25 + v_offs + 3),
|
ts_height / 2 + 25 + v_offs + 3),
|
||||||
maxwidth=210,
|
maxwidth=210,
|
||||||
host_only=True,
|
host_only=True,
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
scale=1.2,
|
scale=1.2,
|
||||||
transition_delay=2.8).autoretain()
|
transition_delay=2.8).autoretain()
|
||||||
|
|
||||||
@ -905,7 +905,7 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
maxwidth=330,
|
maxwidth=330,
|
||||||
position=(-475, 150 + v_offs),
|
position=(-475, 150 + v_offs),
|
||||||
color=(1, 1, 1, 0.4),
|
color=(1, 1, 1, 0.4),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=base_delay + 0.8,
|
transition_delay=base_delay + 0.8,
|
||||||
scale=0.7)
|
scale=0.7)
|
||||||
return
|
return
|
||||||
@ -976,11 +976,11 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
position=(ts_h_offs + 20 + h_offs_extra,
|
position=(ts_h_offs + 20 + h_offs_extra,
|
||||||
v_offs_extra + ts_height / 2 + -ts_height *
|
v_offs_extra + ts_height / 2 + -ts_height *
|
||||||
(i + 1) / 10 + v_offs + 11.0),
|
(i + 1) / 10 + v_offs + 11.0),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=color0,
|
color=color0,
|
||||||
flash=flash,
|
flash=flash,
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=tdelay1).autoretain()
|
transition_delay=tdelay1).autoretain()
|
||||||
else:
|
else:
|
||||||
if is_me:
|
if is_me:
|
||||||
@ -992,10 +992,10 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
(i + 1) / 10 + v_offs_names + v_offs + 11.0),
|
(i + 1) / 10 + v_offs_names + v_offs + 11.0),
|
||||||
color=color1,
|
color=color1,
|
||||||
maxwidth=160.0,
|
maxwidth=160.0,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
flash=flash,
|
flash=flash,
|
||||||
scale=scale,
|
scale=scale,
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=tdelay2).autoretain()
|
transition_delay=tdelay2).autoretain()
|
||||||
|
|
||||||
def _got_score_results(self, results: Optional[Dict[str, Any]]) -> None:
|
def _got_score_results(self, results: Optional[Dict[str, Any]]) -> None:
|
||||||
@ -1020,7 +1020,7 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
ba.Lstr(resource='worldScoresUnavailableText'),
|
ba.Lstr(resource='worldScoresUnavailableText'),
|
||||||
position=(230, 150 + v_offs),
|
position=(230, 150 + v_offs),
|
||||||
color=(1, 1, 1, 0.4),
|
color=(1, 1, 1, 0.4),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=base_delay + 0.3,
|
transition_delay=base_delay + 0.3,
|
||||||
scale=0.7)
|
scale=0.7)
|
||||||
else:
|
else:
|
||||||
@ -1071,7 +1071,7 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
ts_height / 2 + 6 + v_offs),
|
ts_height / 2 + 6 + v_offs),
|
||||||
color=(0.4, 0.4, 0.4, 1.0),
|
color=(0.4, 0.4, 0.4, 1.0),
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=base_delay + 0.3).autoretain()
|
transition_delay=base_delay + 0.3).autoretain()
|
||||||
else:
|
else:
|
||||||
v_offs += 20
|
v_offs += 20
|
||||||
@ -1129,22 +1129,22 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
position=(ts_h_offs + 20 + h_offs_extra,
|
position=(ts_h_offs + 20 + h_offs_extra,
|
||||||
ts_height / 2 + -ts_height *
|
ts_height / 2 + -ts_height *
|
||||||
(i + 1) / 10 + v_offs + 11.0),
|
(i + 1) / 10 + v_offs + 11.0),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=color0,
|
color=color0,
|
||||||
flash=flash,
|
flash=flash,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay1).autoretain()
|
transition_delay=tdelay1).autoretain()
|
||||||
Text(ba.Lstr(value=name_str),
|
Text(ba.Lstr(value=name_str),
|
||||||
position=(ts_h_offs + 35 + h_offs_extra,
|
position=(ts_h_offs + 35 + h_offs_extra,
|
||||||
ts_height / 2 + -ts_height * (i + 1) / 10 +
|
ts_height / 2 + -ts_height * (i + 1) / 10 +
|
||||||
v_offs_names + v_offs + 11.0),
|
v_offs_names + v_offs + 11.0),
|
||||||
maxwidth=80.0 + 100.0 * len(self._player_info),
|
maxwidth=80.0 + 100.0 * len(self._player_info),
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=color1,
|
color=color1,
|
||||||
flash=flash,
|
flash=flash,
|
||||||
scale=scale,
|
scale=scale,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay2).autoretain()
|
transition_delay=tdelay2).autoretain()
|
||||||
|
|
||||||
def _show_tips(self) -> None:
|
def _show_tips(self) -> None:
|
||||||
@ -1222,9 +1222,9 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
Text(ba.Lstr(resource='coopSelectWindow.prizesText'),
|
Text(ba.Lstr(resource='coopSelectWindow.prizesText'),
|
||||||
position=(-360, -70 + 77),
|
position=(-360, -70 + 77),
|
||||||
color=(1, 1, 1, 0.7),
|
color=(1, 1, 1, 0.7),
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=1.0,
|
scale=1.0,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
transition_delay=2.0).autoretain()
|
transition_delay=2.0).autoretain()
|
||||||
@ -1233,18 +1233,18 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
Text(rng,
|
Text(rng,
|
||||||
position=(-410 + 10, vval),
|
position=(-410 + 10, vval),
|
||||||
color=(1, 1, 1, 0.7),
|
color=(1, 1, 1, 0.7),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.6,
|
scale=0.6,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
transition_delay=2.0).autoretain()
|
transition_delay=2.0).autoretain()
|
||||||
Text(val,
|
Text(val,
|
||||||
position=(-390 + 10, vval),
|
position=(-390 + 10, vval),
|
||||||
color=(0.7, 0.7, 0.7, 1.0),
|
color=(0.7, 0.7, 0.7, 1.0),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.8,
|
scale=0.8,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
transition_delay=2.0).autoretain()
|
transition_delay=2.0).autoretain()
|
||||||
@ -1266,9 +1266,9 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
Text(ba.Lstr(translate=('serverResponses', error)),
|
Text(ba.Lstr(translate=('serverResponses', error)),
|
||||||
position=(0, -140),
|
position=(0, -140),
|
||||||
color=(1, 1, 1, 0.7),
|
color=(1, 1, 1, 0.7),
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.9,
|
scale=0.9,
|
||||||
maxwidth=400,
|
maxwidth=400,
|
||||||
transition_delay=1.0).autoretain()
|
transition_delay=1.0).autoretain()
|
||||||
@ -1288,9 +1288,9 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
subs=[('${A}', ba.Lstr(resource='rankText'))]),
|
subs=[('${A}', ba.Lstr(resource='rankText'))]),
|
||||||
position=(0, 36),
|
position=(0, 36),
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition_delay=0).autoretain()
|
transition_delay=0).autoretain()
|
||||||
if best_player_rank is not None:
|
if best_player_rank is not None:
|
||||||
Text(ba.Lstr(resource='currentStandingText',
|
Text(ba.Lstr(resource='currentStandingText',
|
||||||
@ -1298,8 +1298,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
subs=[('${RANK}', str(best_player_rank))]),
|
subs=[('${RANK}', str(best_player_rank))]),
|
||||||
position=(0, -155),
|
position=(0, -155),
|
||||||
color=(1, 1, 1, 0.7),
|
color=(1, 1, 1, 0.7),
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
transition_delay=1.0).autoretain()
|
transition_delay=1.0).autoretain()
|
||||||
else:
|
else:
|
||||||
@ -1360,9 +1360,9 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
Text(score + ' =',
|
Text(score + ' =',
|
||||||
position=(xval, -64 + offs_y),
|
position=(xval, -64 + offs_y),
|
||||||
color=(0.6, 0.6, 0.6, 0.6),
|
color=(0.6, 0.6, 0.6, 0.6),
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.4,
|
scale=0.4,
|
||||||
transition_delay=1.0).autoretain()
|
transition_delay=1.0).autoretain()
|
||||||
stx = xval + 20
|
stx = xval + 20
|
||||||
@ -1398,8 +1398,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
]),
|
]),
|
||||||
position=(0, -155 if self._newly_complete else -145),
|
position=(0, -155 if self._newly_complete else -145),
|
||||||
color=(1, 1, 1, 0.7),
|
color=(1, 1, 1, 0.7),
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.55,
|
scale=0.55,
|
||||||
transition_delay=1.0).autoretain()
|
transition_delay=1.0).autoretain()
|
||||||
|
|
||||||
@ -1418,8 +1418,9 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
position=(0, -165),
|
position=(0, -165),
|
||||||
color=(1, 1, 1, 0.7),
|
color=(1, 1, 1, 0.7),
|
||||||
flash=new_best,
|
flash=new_best,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
transition='in_right' if new_best else 'fade_in',
|
transition=(Text.Transition.IN_RIGHT
|
||||||
|
if new_best else Text.Transition.FADE_IN),
|
||||||
scale=0.5,
|
scale=0.5,
|
||||||
transition_delay=1.0).autoretain()
|
transition_delay=1.0).autoretain()
|
||||||
|
|
||||||
@ -1427,9 +1428,9 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
subs=[('${A}', ba.Lstr(resource='ratingText'))]),
|
subs=[('${A}', ba.Lstr(resource='ratingText'))]),
|
||||||
position=(0, 36),
|
position=(0, 36),
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition_delay=0).autoretain()
|
transition_delay=0).autoretain()
|
||||||
|
|
||||||
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))
|
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))
|
||||||
@ -1449,11 +1450,11 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
jitter=1.0).autoretain()
|
jitter=1.0).autoretain()
|
||||||
if self._fail_message is not None:
|
if self._fail_message is not None:
|
||||||
Text(self._fail_message,
|
Text(self._fail_message,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
position=(0, -130),
|
position=(0, -130),
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
color=(1, 1, 1, 0.5),
|
color=(1, 1, 1, 0.5),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=1.0).autoretain()
|
transition_delay=1.0).autoretain()
|
||||||
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))
|
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))
|
||||||
|
|
||||||
@ -1480,8 +1481,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
subs=[('${A}', ba.Lstr(resource='finalTimeText'))]),
|
subs=[('${A}', ba.Lstr(resource='finalTimeText'))]),
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
position=(0, 200),
|
position=(0, 200),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
transition_delay=0).autoretain()
|
transition_delay=0).autoretain()
|
||||||
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))
|
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))
|
||||||
|
|||||||
@ -97,8 +97,8 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
scale=scale * extrascale,
|
scale=scale * extrascale,
|
||||||
color=((1.0, 0.7, 0.3, 1.0) if highlight else
|
color=((1.0, 0.7, 0.3, 1.0) if highlight else
|
||||||
(0.7, 0.7, 0.7, 0.7)),
|
(0.7, 0.7, 0.7, 0.7)),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay + delay,
|
transition_delay=tdelay + delay,
|
||||||
flash=flash).autoretain()
|
flash=flash).autoretain()
|
||||||
|
|
||||||
@ -115,9 +115,9 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
scale=1.05 * scale,
|
scale=1.05 * scale,
|
||||||
position=(ts_h_offs - 0.0 * scale,
|
position=(ts_h_offs - 0.0 * scale,
|
||||||
y_base + (v_offs + 50.0) * scale),
|
y_base + (v_offs + 50.0) * scale),
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
color=(0.5, 0.5, 0.5, 0.5),
|
color=(0.5, 0.5, 0.5, 0.5),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
|
|
||||||
v_offs -= 25
|
v_offs -= 25
|
||||||
@ -163,10 +163,10 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
scale=0.75 * scale,
|
scale=0.75 * scale,
|
||||||
position=(ts_h_offs - 50.0 * scale,
|
position=(ts_h_offs - 50.0 * scale,
|
||||||
y_base + (v_offs + 15.0) * scale),
|
y_base + (v_offs + 15.0) * scale),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=ba.safecolor(player.team.color + (1, )),
|
color=ba.safecolor(player.team.color + (1, )),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
ba.timer(
|
ba.timer(
|
||||||
tdelay + delay2,
|
tdelay + delay2,
|
||||||
@ -187,9 +187,9 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
scale=0.55 * scale,
|
scale=0.55 * scale,
|
||||||
position=(ts_h_offs - 95.0 * scale,
|
position=(ts_h_offs - 95.0 * scale,
|
||||||
y_base + (v_offs + 8.0) * scale),
|
y_base + (v_offs + 8.0) * scale),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
color=(0.6, 0.6, 0.6, 0.6),
|
color=(0.6, 0.6, 0.6, 0.6),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
ba.timer(
|
ba.timer(
|
||||||
tdelay + delay3,
|
tdelay + delay3,
|
||||||
|
|||||||
@ -132,13 +132,13 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
])
|
])
|
||||||
|
|
||||||
Text(txt,
|
Text(txt,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
position=(0, 220),
|
position=(0, 220),
|
||||||
scale=1.2,
|
scale=1.2,
|
||||||
transition='inTopSlow',
|
transition=Text.Transition.IN_TOP_SLOW,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
transition_delay=t_incr * 4).autoretain()
|
transition_delay=t_incr * 4).autoretain()
|
||||||
|
|
||||||
win_score = (session.get_series_length() - 1) / 2 + 1
|
win_score = (session.get_series_length() - 1) / 2 + 1
|
||||||
@ -153,11 +153,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
('${LOSECOUNT}', str(lose_score))]),
|
('${LOSECOUNT}', str(lose_score))]),
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
maxwidth=160,
|
maxwidth=160,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
position=(0, -215),
|
position=(0, -215),
|
||||||
scale=1.8,
|
scale=1.8,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
transition_delay=4.8 + t_incr * 4).autoretain()
|
transition_delay=4.8 + t_incr * 4).autoretain()
|
||||||
|
|
||||||
if self._is_ffa:
|
if self._is_ffa:
|
||||||
@ -179,11 +179,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
if mvp is not None:
|
if mvp is not None:
|
||||||
Text(ba.Lstr(resource='mostValuablePlayerText'),
|
Text(ba.Lstr(resource='mostValuablePlayerText'),
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
position=(180, ts_height / 2 + 15),
|
position=(180, ts_height / 2 + 15),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
tval += 4 * t_incr
|
tval += 4 * t_incr
|
||||||
|
|
||||||
@ -194,12 +194,12 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
Text(ba.Lstr(value=mvp_name),
|
Text(ba.Lstr(value=mvp_name),
|
||||||
position=(280, ts_height / 2 - 55 + 15 - 5),
|
position=(280, ts_height / 2 - 55 + 15 - 5),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=170,
|
maxwidth=170,
|
||||||
scale=1.3,
|
scale=1.3,
|
||||||
color=ba.safecolor(mvp.team.color + (1, )),
|
color=ba.safecolor(mvp.team.color + (1, )),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
tval += 4 * t_incr
|
tval += 4 * t_incr
|
||||||
|
|
||||||
@ -213,11 +213,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
if mvp is not None:
|
if mvp is not None:
|
||||||
Text(ba.Lstr(resource='mostViolentPlayerText'),
|
Text(ba.Lstr(resource='mostViolentPlayerText'),
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
position=(180, ts_height / 2 - 150 + v_extra + 15),
|
position=(180, ts_height / 2 - 150 + v_extra + 15),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
Text(ba.Lstr(value='(${A})',
|
Text(ba.Lstr(value='(${A})',
|
||||||
subs=[('${A}',
|
subs=[('${A}',
|
||||||
@ -227,8 +227,8 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
position=(260, ts_height / 2 - 150 - 15 + v_extra),
|
position=(260, ts_height / 2 - 150 - 15 + v_extra),
|
||||||
color=(0.3, 0.3, 0.3, 1.0),
|
color=(0.3, 0.3, 0.3, 1.0),
|
||||||
scale=0.6,
|
scale=0.6,
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
tval += 4 * t_incr
|
tval += 4 * t_incr
|
||||||
|
|
||||||
@ -239,11 +239,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
Text(ba.Lstr(value=mvp_name),
|
Text(ba.Lstr(value=mvp_name),
|
||||||
position=(270, ts_height / 2 - 150 - 30 - 36 + v_extra + 15),
|
position=(270, ts_height / 2 - 150 - 30 - 36 + v_extra + 15),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=180,
|
maxwidth=180,
|
||||||
color=ba.safecolor(mvp.team.color + (1, )),
|
color=ba.safecolor(mvp.team.color + (1, )),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
tval += 4 * t_incr
|
tval += 4 * t_incr
|
||||||
|
|
||||||
@ -258,11 +258,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
if mkp is not None:
|
if mkp is not None:
|
||||||
Text(ba.Lstr(resource='mostViolatedPlayerText'),
|
Text(ba.Lstr(resource='mostViolatedPlayerText'),
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=300,
|
maxwidth=300,
|
||||||
position=(180, ts_height / 2 - 300 + v_extra + 15),
|
position=(180, ts_height / 2 - 300 + v_extra + 15),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
Text(ba.Lstr(value='(${A})',
|
Text(ba.Lstr(value='(${A})',
|
||||||
subs=[('${A}',
|
subs=[('${A}',
|
||||||
@ -270,10 +270,10 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
subs=[('${COUNT}', str(most_killed))]))
|
subs=[('${COUNT}', str(most_killed))]))
|
||||||
]),
|
]),
|
||||||
position=(260, ts_height / 2 - 300 - 15 + v_extra),
|
position=(260, ts_height / 2 - 300 - 15 + v_extra),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
scale=0.6,
|
scale=0.6,
|
||||||
color=(0.3, 0.3, 0.3, 1.0),
|
color=(0.3, 0.3, 0.3, 1.0),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
tval += 4 * t_incr
|
tval += 4 * t_incr
|
||||||
Image(mkp.get_icon(),
|
Image(mkp.get_icon(),
|
||||||
@ -283,11 +283,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
Text(ba.Lstr(value=mkp_name),
|
Text(ba.Lstr(value=mkp_name),
|
||||||
position=(270, ts_height / 2 - 300 - 30 - 36 + v_extra + 15),
|
position=(270, ts_height / 2 - 300 - 30 - 36 + v_extra + 15),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=ba.safecolor(mkp.team.color + (1, )),
|
color=ba.safecolor(mkp.team.color + (1, )),
|
||||||
maxwidth=180,
|
maxwidth=180,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tval).autoretain()
|
transition_delay=tval).autoretain()
|
||||||
tval += 4 * t_incr
|
tval += 4 * t_incr
|
||||||
|
|
||||||
@ -296,7 +296,7 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
Text(ba.Lstr(resource='finalScoresText'),
|
Text(ba.Lstr(resource='finalScoresText'),
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
position=(ts_h_offs, ts_height / 2),
|
position=(ts_h_offs, ts_height / 2),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
tdelay += 4 * t_incr
|
tdelay += 4 * t_incr
|
||||||
|
|
||||||
@ -309,8 +309,8 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
if self._is_ffa else str(prec.score),
|
if self._is_ffa else str(prec.score),
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
position=(ts_h_offs + 230, ts_height / 2 + v_offs),
|
position=(ts_h_offs + 230, ts_height / 2 + v_offs),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
tdelay -= 4 * t_incr
|
tdelay -= 4 * t_incr
|
||||||
|
|
||||||
@ -321,11 +321,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
|
|||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
Text(ba.Lstr(value=name),
|
Text(ba.Lstr(value=name),
|
||||||
position=(ts_h_offs - 50, ts_height / 2 + v_offs + 15),
|
position=(ts_h_offs - 50, ts_height / 2 + v_offs + 15),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=180,
|
maxwidth=180,
|
||||||
color=ba.safecolor(prec.team.color + (1, )),
|
color=ba.safecolor(prec.team.color + (1, )),
|
||||||
transition='in_right',
|
transition=Text.Transition.IN_RIGHT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
|
|
||||||
ba.timer(15.0, ba.WeakCall(self._show_tips))
|
ba.timer(15.0, ba.WeakCall(self._show_tips))
|
||||||
|
|||||||
@ -26,7 +26,7 @@ from typing import TYPE_CHECKING
|
|||||||
|
|
||||||
import ba
|
import ba
|
||||||
from ba.internal import JoiningActivity
|
from ba.internal import JoiningActivity
|
||||||
from bastd.actor import text as textactor
|
from bastd.actor.text import Text
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Any, Dict, Optional
|
from typing import Any, Dict, Optional
|
||||||
@ -37,7 +37,7 @@ class TeamJoiningActivity(JoiningActivity):
|
|||||||
|
|
||||||
def __init__(self, settings: Dict[str, Any]):
|
def __init__(self, settings: Dict[str, Any]):
|
||||||
super().__init__(settings)
|
super().__init__(settings)
|
||||||
self._next_up_text: Optional[textactor.Text] = None
|
self._next_up_text: Optional[Text] = None
|
||||||
|
|
||||||
def on_transition_in(self) -> None:
|
def on_transition_in(self) -> None:
|
||||||
from bastd.actor.controlsguide import ControlsGuide
|
from bastd.actor.controlsguide import ControlsGuide
|
||||||
@ -49,18 +49,18 @@ class TeamJoiningActivity(JoiningActivity):
|
|||||||
assert isinstance(session, ba.TeamBaseSession)
|
assert isinstance(session, ba.TeamBaseSession)
|
||||||
|
|
||||||
# Show info about the next up game.
|
# Show info about the next up game.
|
||||||
self._next_up_text = textactor.Text(ba.Lstr(
|
self._next_up_text = Text(ba.Lstr(
|
||||||
value='${1} ${2}',
|
value='${1} ${2}',
|
||||||
subs=[('${1}', ba.Lstr(resource='upFirstText')),
|
subs=[('${1}', ba.Lstr(resource='upFirstText')),
|
||||||
('${2}', session.get_next_game_description())]),
|
('${2}', session.get_next_game_description())]),
|
||||||
h_attach='center',
|
h_attach=Text.HAttach.CENTER,
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
v_attach='top',
|
v_attach=Text.VAttach.TOP,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
position=(0, -70),
|
position=(0, -70),
|
||||||
flash=False,
|
flash=False,
|
||||||
color=(0.5, 0.5, 0.5, 1.0),
|
color=(0.5, 0.5, 0.5, 1.0),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=5.0)
|
transition_delay=5.0)
|
||||||
|
|
||||||
# In teams mode, show our two team names.
|
# In teams mode, show our two team names.
|
||||||
@ -72,28 +72,26 @@ class TeamJoiningActivity(JoiningActivity):
|
|||||||
]
|
]
|
||||||
if len(team_names) == 2:
|
if len(team_names) == 2:
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
textactor.Text(team_names[i],
|
Text(team_names[i],
|
||||||
scale=0.7,
|
scale=0.7,
|
||||||
h_attach='center',
|
h_attach=Text.HAttach.CENTER,
|
||||||
v_attach='top',
|
v_attach=Text.VAttach.TOP,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
position=(-200 + 350 * i, -100),
|
position=(-200 + 350 * i, -100),
|
||||||
color=team_colors[i],
|
color=team_colors[i],
|
||||||
transition='fade_in').autoretain()
|
transition=Text.Transition.FADE_IN).autoretain()
|
||||||
|
|
||||||
textactor.Text(ba.Lstr(resource='mustInviteFriendsText',
|
Text(ba.Lstr(resource='mustInviteFriendsText',
|
||||||
subs=[
|
subs=[('${GATHER}',
|
||||||
('${GATHER}',
|
ba.Lstr(resource='gatherWindow.titleText'))]),
|
||||||
ba.Lstr(resource='gatherWindow.titleText'))
|
h_attach=Text.HAttach.CENTER,
|
||||||
]),
|
|
||||||
h_attach='center',
|
|
||||||
scale=0.8,
|
scale=0.8,
|
||||||
host_only=True,
|
host_only=True,
|
||||||
v_attach='center',
|
v_attach=Text.VAttach.CENTER,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
position=(0, 0),
|
position=(0, 0),
|
||||||
flash=False,
|
flash=False,
|
||||||
color=(0, 1, 0, 1.0),
|
color=(0, 1, 0, 1.0),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=2.0,
|
transition_delay=2.0,
|
||||||
transition_out_delay=7.0).autoretain()
|
transition_out_delay=7.0).autoretain()
|
||||||
|
|||||||
@ -59,14 +59,14 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
|
|||||||
])
|
])
|
||||||
Text(txt,
|
Text(txt,
|
||||||
maxwidth=900,
|
maxwidth=900,
|
||||||
h_attach='center',
|
h_attach=Text.HAttach.CENTER,
|
||||||
v_attach='bottom',
|
v_attach=Text.VAttach.BOTTOM,
|
||||||
h_align='center',
|
h_align=Text.HAlign.CENTER,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
position=(0, 53),
|
position=(0, 53),
|
||||||
flash=False,
|
flash=False,
|
||||||
color=(0.3, 0.3, 0.35, 1.0),
|
color=(0.3, 0.3, 0.35, 1.0),
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
transition_delay=2.0).autoretain()
|
transition_delay=2.0).autoretain()
|
||||||
|
|
||||||
def show_player_scores(self,
|
def show_player_scores(self,
|
||||||
@ -150,7 +150,7 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
|
|||||||
def _txt(x_offs: float,
|
def _txt(x_offs: float,
|
||||||
y_offs: float,
|
y_offs: float,
|
||||||
text: ba.Lstr,
|
text: ba.Lstr,
|
||||||
h_align: str = 'right',
|
h_align: Text.HAlign = Text.HAlign.RIGHT,
|
||||||
extrascale: float = 1.0,
|
extrascale: float = 1.0,
|
||||||
maxwidth: Optional[float] = 120.0) -> None:
|
maxwidth: Optional[float] = 120.0) -> None:
|
||||||
Text(text,
|
Text(text,
|
||||||
@ -158,18 +158,23 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
|
|||||||
position=(ts_h_offs + x_offs * scale,
|
position=(ts_h_offs + x_offs * scale,
|
||||||
ts_v_offset + (v_offs + y_offs + 4.0) * scale),
|
ts_v_offset + (v_offs + y_offs + 4.0) * scale),
|
||||||
h_align=h_align,
|
h_align=h_align,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
scale=0.8 * scale * extrascale,
|
scale=0.8 * scale * extrascale,
|
||||||
maxwidth=maxwidth,
|
maxwidth=maxwidth,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
|
|
||||||
session = self.session
|
session = self.session
|
||||||
assert isinstance(session, ba.TeamBaseSession)
|
assert isinstance(session, ba.TeamBaseSession)
|
||||||
tval = ba.Lstr(resource='gameLeadersText',
|
tval = ba.Lstr(resource='gameLeadersText',
|
||||||
subs=[('${COUNT}', str(session.get_game_number()))])
|
subs=[('${COUNT}', str(session.get_game_number()))])
|
||||||
_txt(180, 43, tval, h_align='center', extrascale=1.4, maxwidth=None)
|
_txt(180,
|
||||||
_txt(-15, 4, ba.Lstr(resource='playerText'), h_align='left')
|
43,
|
||||||
|
tval,
|
||||||
|
h_align=Text.HAlign.CENTER,
|
||||||
|
extrascale=1.4,
|
||||||
|
maxwidth=None)
|
||||||
|
_txt(-15, 4, ba.Lstr(resource='playerText'), h_align=Text.HAlign.LEFT)
|
||||||
_txt(180, 4, ba.Lstr(resource='killsText'))
|
_txt(180, 4, ba.Lstr(resource='killsText'))
|
||||||
_txt(280, 4, ba.Lstr(resource='deathsText'), maxwidth=100)
|
_txt(280, 4, ba.Lstr(resource='deathsText'), maxwidth=100)
|
||||||
|
|
||||||
@ -198,10 +203,10 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
|
|||||||
scale=scale,
|
scale=scale,
|
||||||
color=(1.0, 0.9, 0.5, 1.0) if highlight else
|
color=(1.0, 0.9, 0.5, 1.0) if highlight else
|
||||||
(0.5, 0.5, 0.6, 0.5),
|
(0.5, 0.5, 0.6, 0.5),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
maxwidth=maxwidth,
|
maxwidth=maxwidth,
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay + delay2).autoretain()
|
transition_delay=tdelay + delay2).autoretain()
|
||||||
|
|
||||||
for playerrec in player_records:
|
for playerrec in player_records:
|
||||||
@ -218,10 +223,10 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
|
|||||||
scale=0.75 * scale,
|
scale=0.75 * scale,
|
||||||
position=(ts_h_offs + 10.0 * scale,
|
position=(ts_h_offs + 10.0 * scale,
|
||||||
ts_v_offset + (v_offs + 15) * scale),
|
ts_v_offset + (v_offs + 15) * scale),
|
||||||
h_align='left',
|
h_align=Text.HAlign.LEFT,
|
||||||
v_align='center',
|
v_align=Text.VAlign.CENTER,
|
||||||
color=ba.safecolor(playerrec.team.color + (1, )),
|
color=ba.safecolor(playerrec.team.color + (1, )),
|
||||||
transition='in_left',
|
transition=Text.Transition.IN_LEFT,
|
||||||
transition_delay=tdelay).autoretain()
|
transition_delay=tdelay).autoretain()
|
||||||
_scoretxt(str(playerrec.accum_kill_count), 180,
|
_scoretxt(str(playerrec.accum_kill_count), 180,
|
||||||
playerrec.accum_kill_count == topkillcount, 100)
|
playerrec.accum_kill_count == topkillcount, 100)
|
||||||
|
|||||||
@ -146,7 +146,7 @@ class Image(ba.Actor):
|
|||||||
cmb.input0 = position[0]
|
cmb.input0 = position[0]
|
||||||
ba.animate(cmb, 'input1', keys)
|
ba.animate(cmb, 'input1', keys)
|
||||||
ba.animate(self.node, 'opacity', o_keys)
|
ba.animate(self.node, 'opacity', o_keys)
|
||||||
elif transition == 'inTopSlow':
|
elif transition == 'in_top_slow':
|
||||||
keys = {transition_delay: 400, transition_delay + 3.5: position[1]}
|
keys = {transition_delay: 400, transition_delay + 3.5: position[1]}
|
||||||
o_keys = {transition_delay: 0.0, transition_delay + 1.0: 1.0}
|
o_keys = {transition_delay: 0.0, transition_delay + 1.0: 1.0}
|
||||||
cmb.input0 = position[0]
|
cmb.input0 = position[0]
|
||||||
|
|||||||
@ -21,29 +21,62 @@
|
|||||||
"""Defines Actor(s)."""
|
"""Defines Actor(s)."""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
import ba
|
import ba
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Any, Union, Tuple, Sequence
|
from typing import Any, Union, Tuple, Sequence, Optional
|
||||||
|
|
||||||
|
|
||||||
class Text(ba.Actor):
|
class Text(ba.Actor):
|
||||||
""" Text with some tricks """
|
"""Text with some tricks."""
|
||||||
|
|
||||||
|
class Transition(Enum):
|
||||||
|
"""Transition types for text."""
|
||||||
|
FADE_IN = 'fade_in'
|
||||||
|
IN_RIGHT = 'in_right'
|
||||||
|
IN_LEFT = 'in_left'
|
||||||
|
IN_BOTTOM = 'in_bottom'
|
||||||
|
IN_BOTTOM_SLOW = 'in_bottom_slow'
|
||||||
|
IN_TOP_SLOW = 'in_top_slow'
|
||||||
|
|
||||||
|
class HAlign(Enum):
|
||||||
|
"""Horizontal alignment type."""
|
||||||
|
LEFT = 'left'
|
||||||
|
CENTER = 'center'
|
||||||
|
RIGHT = 'right'
|
||||||
|
|
||||||
|
class VAlign(Enum):
|
||||||
|
"""Vertical alignment type."""
|
||||||
|
NONE = 'none'
|
||||||
|
CENTER = 'center'
|
||||||
|
|
||||||
|
class HAttach(Enum):
|
||||||
|
"""Horizontal attach type."""
|
||||||
|
LEFT = 'left'
|
||||||
|
CENTER = 'center'
|
||||||
|
RIGHT = 'right'
|
||||||
|
|
||||||
|
class VAttach(Enum):
|
||||||
|
"""Vertical attach type."""
|
||||||
|
BOTTOM = 'bottom'
|
||||||
|
CENTER = 'center'
|
||||||
|
TOP = 'top'
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
text: Union[str, ba.Lstr],
|
text: Union[str, ba.Lstr],
|
||||||
position: Tuple[float, float] = (0.0, 0.0),
|
position: Tuple[float, float] = (0.0, 0.0),
|
||||||
h_align: str = 'left',
|
h_align: HAlign = HAlign.LEFT,
|
||||||
v_align: str = 'none',
|
v_align: VAlign = VAlign.NONE,
|
||||||
color: Sequence[float] = (1.0, 1.0, 1.0, 1.0),
|
color: Sequence[float] = (1.0, 1.0, 1.0, 1.0),
|
||||||
transition: str = None,
|
transition: Optional[Transition] = None,
|
||||||
transition_delay: float = 0.0,
|
transition_delay: float = 0.0,
|
||||||
flash: bool = False,
|
flash: bool = False,
|
||||||
v_attach: str = 'center',
|
v_attach: VAttach = VAttach.CENTER,
|
||||||
h_attach: str = 'center',
|
h_attach: HAttach = HAttach.CENTER,
|
||||||
scale: float = 1.0,
|
scale: float = 1.0,
|
||||||
transition_out_delay: float = None,
|
transition_out_delay: float = None,
|
||||||
maxwidth: float = None,
|
maxwidth: float = None,
|
||||||
@ -63,11 +96,11 @@ class Text(ba.Actor):
|
|||||||
'text': text,
|
'text': text,
|
||||||
'color': color,
|
'color': color,
|
||||||
'position': position,
|
'position': position,
|
||||||
'h_align': h_align,
|
'h_align': h_align.value,
|
||||||
'vr_depth': vr_depth,
|
'vr_depth': vr_depth,
|
||||||
'v_align': v_align,
|
'v_align': v_align.value,
|
||||||
'h_attach': h_attach,
|
'h_attach': h_attach.value,
|
||||||
'v_attach': v_attach,
|
'v_attach': v_attach.value,
|
||||||
'shadow': shadow,
|
'shadow': shadow,
|
||||||
'flatness': flatness,
|
'flatness': flatness,
|
||||||
'maxwidth': 0.0 if maxwidth is None else maxwidth,
|
'maxwidth': 0.0 if maxwidth is None else maxwidth,
|
||||||
@ -76,7 +109,7 @@ class Text(ba.Actor):
|
|||||||
'scale': scale
|
'scale': scale
|
||||||
})
|
})
|
||||||
|
|
||||||
if transition == 'fade_in':
|
if transition is self.Transition.FADE_IN:
|
||||||
if flash:
|
if flash:
|
||||||
raise Exception("fixme: flash and fade-in"
|
raise Exception("fixme: flash and fade-in"
|
||||||
" currently cant both be on")
|
" currently cant both be on")
|
||||||
@ -127,18 +160,19 @@ class Text(ba.Actor):
|
|||||||
cmb = self.position_combine = ba.newnode('combine',
|
cmb = self.position_combine = ba.newnode('combine',
|
||||||
owner=self.node,
|
owner=self.node,
|
||||||
attrs={'size': 2})
|
attrs={'size': 2})
|
||||||
if transition == 'in_right':
|
|
||||||
|
if transition is self.Transition.IN_RIGHT:
|
||||||
keys = {
|
keys = {
|
||||||
transition_delay: position[0] + 1.3,
|
transition_delay: position[0] + 1300,
|
||||||
transition_delay + 0.2: position[0]
|
transition_delay + 0.2: position[0]
|
||||||
}
|
}
|
||||||
o_keys = {transition_delay: 0.0, transition_delay + 0.05: 1.0}
|
o_keys = {transition_delay: 0.0, transition_delay + 0.05: 1.0}
|
||||||
ba.animate(cmb, 'input0', keys)
|
ba.animate(cmb, 'input0', keys)
|
||||||
cmb.input1 = position[1]
|
cmb.input1 = position[1]
|
||||||
ba.animate(self.node, 'opacity', o_keys)
|
ba.animate(self.node, 'opacity', o_keys)
|
||||||
elif transition == 'in_left':
|
elif transition is self.Transition.IN_LEFT:
|
||||||
keys = {
|
keys = {
|
||||||
transition_delay: position[0] - 1.3,
|
transition_delay: position[0] - 1300,
|
||||||
transition_delay + 0.2: position[0]
|
transition_delay + 0.2: position[0]
|
||||||
}
|
}
|
||||||
o_keys = {transition_delay: 0.0, transition_delay + 0.05: 1.0}
|
o_keys = {transition_delay: 0.0, transition_delay + 0.05: 1.0}
|
||||||
@ -151,7 +185,7 @@ class Text(ba.Actor):
|
|||||||
ba.animate(cmb, 'input0', keys)
|
ba.animate(cmb, 'input0', keys)
|
||||||
cmb.input1 = position[1]
|
cmb.input1 = position[1]
|
||||||
ba.animate(self.node, 'opacity', o_keys)
|
ba.animate(self.node, 'opacity', o_keys)
|
||||||
elif transition == 'in_bottom_slow':
|
elif transition is self.Transition.IN_BOTTOM_SLOW:
|
||||||
keys = {
|
keys = {
|
||||||
transition_delay: -100.0,
|
transition_delay: -100.0,
|
||||||
transition_delay + 1.0: position[1]
|
transition_delay + 1.0: position[1]
|
||||||
@ -160,7 +194,7 @@ class Text(ba.Actor):
|
|||||||
cmb.input0 = position[0]
|
cmb.input0 = position[0]
|
||||||
ba.animate(cmb, 'input1', keys)
|
ba.animate(cmb, 'input1', keys)
|
||||||
ba.animate(self.node, 'opacity', o_keys)
|
ba.animate(self.node, 'opacity', o_keys)
|
||||||
elif transition == 'in_bottom':
|
elif transition is self.Transition.IN_BOTTOM:
|
||||||
keys = {
|
keys = {
|
||||||
transition_delay: -100.0,
|
transition_delay: -100.0,
|
||||||
transition_delay + 0.2: position[1]
|
transition_delay + 0.2: position[1]
|
||||||
@ -174,18 +208,21 @@ class Text(ba.Actor):
|
|||||||
cmb.input0 = position[0]
|
cmb.input0 = position[0]
|
||||||
ba.animate(cmb, 'input1', keys)
|
ba.animate(cmb, 'input1', keys)
|
||||||
ba.animate(self.node, 'opacity', o_keys)
|
ba.animate(self.node, 'opacity', o_keys)
|
||||||
elif transition == 'inTopSlow':
|
elif transition is self.Transition.IN_TOP_SLOW:
|
||||||
keys = {transition_delay: 0.4, transition_delay + 3.5: position[1]}
|
keys = {transition_delay: 0.4, transition_delay + 3.5: position[1]}
|
||||||
o_keys = {transition_delay: 0.0, transition_delay + 1.0: 1.0}
|
o_keys = {transition_delay: 0.0, transition_delay + 1.0: 1.0}
|
||||||
cmb.input0 = position[0]
|
cmb.input0 = position[0]
|
||||||
ba.animate(cmb, 'input1', keys)
|
ba.animate(cmb, 'input1', keys)
|
||||||
ba.animate(self.node, 'opacity', o_keys)
|
ba.animate(self.node, 'opacity', o_keys)
|
||||||
else:
|
else:
|
||||||
|
if (transition is not self.Transition.FADE_IN
|
||||||
|
and transition is not None):
|
||||||
|
ba.print_error(f'Invalid transition: "{transition}"')
|
||||||
cmb.input0 = position[0]
|
cmb.input0 = position[0]
|
||||||
cmb.input1 = position[1]
|
cmb.input1 = position[1]
|
||||||
cmb.connectattr('output', self.node, 'position')
|
cmb.connectattr('output', self.node, 'position')
|
||||||
|
|
||||||
# if we're transitioning out, die at the end of it
|
# If we're transitioning out, die at the end of it.
|
||||||
if transition_out_delay is not None:
|
if transition_out_delay is not None:
|
||||||
ba.timer(transition_delay + transition_out_delay + 1.0,
|
ba.timer(transition_delay + transition_out_delay + 1.0,
|
||||||
ba.WeakCall(self.handlemessage, ba.DieMessage()))
|
ba.WeakCall(self.handlemessage, ba.DieMessage()))
|
||||||
|
|||||||
@ -286,7 +286,7 @@ class MainMenuActivity(ba.Activity):
|
|||||||
self._got_news(news)
|
self._got_news(news)
|
||||||
|
|
||||||
def _change_phrase(self) -> None:
|
def _change_phrase(self) -> None:
|
||||||
from bastd.actor import text
|
from bastd.actor.text import Text
|
||||||
|
|
||||||
# If our news is way out of date, lets re-request it;
|
# If our news is way out of date, lets re-request it;
|
||||||
# otherwise, rotate our phrase.
|
# otherwise, rotate our phrase.
|
||||||
@ -302,22 +302,22 @@ class MainMenuActivity(ba.Activity):
|
|||||||
val = self._phrases.pop()
|
val = self._phrases.pop()
|
||||||
if val == '__ACH__':
|
if val == '__ACH__':
|
||||||
vrmode = app.vr_mode
|
vrmode = app.vr_mode
|
||||||
text.Text(ba.Lstr(resource='nextAchievementsText'),
|
Text(ba.Lstr(resource='nextAchievementsText'),
|
||||||
color=((1, 1, 1, 1) if vrmode else
|
color=((1, 1, 1, 1) if vrmode else
|
||||||
(0.95, 0.9, 1, 0.4)),
|
(0.95, 0.9, 1, 0.4)),
|
||||||
host_only=True,
|
host_only=True,
|
||||||
maxwidth=200,
|
maxwidth=200,
|
||||||
position=(-300, -35),
|
position=(-300, -35),
|
||||||
h_align='right',
|
h_align=Text.HAlign.RIGHT,
|
||||||
transition='fade_in',
|
transition=Text.Transition.FADE_IN,
|
||||||
scale=0.9 if vrmode else 0.7,
|
scale=0.9 if vrmode else 0.7,
|
||||||
flatness=1.0 if vrmode else 0.6,
|
flatness=1.0 if vrmode else 0.6,
|
||||||
shadow=1.0 if vrmode else 0.5,
|
shadow=1.0 if vrmode else 0.5,
|
||||||
h_attach="center",
|
h_attach=Text.HAttach.CENTER,
|
||||||
v_attach="top",
|
v_attach=Text.VAttach.TOP,
|
||||||
transition_delay=1.0,
|
transition_delay=1.0,
|
||||||
transition_out_delay=self.
|
transition_out_delay=self._message_duration
|
||||||
_message_duration).autoretain()
|
).autoretain()
|
||||||
achs = [
|
achs = [
|
||||||
a for a in app.achievements if not a.complete
|
a for a in app.achievements if not a.complete
|
||||||
]
|
]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user