Cleaned up co-op score screen and text actor

This commit is contained in:
Eric Froemling 2020-04-08 02:05:16 -07:00
parent c28966dbfa
commit 98c8fcf61d
13 changed files with 334 additions and 293 deletions

View File

@ -382,18 +382,20 @@ class Achievement:
if style == 'post_game':
in_game_colors = 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':
in_game_colors = True
in_main_menu = False
h_attach = 'left'
v_attach = 'top'
h_attach = Text.HAttach.LEFT
v_attach = Text.VAttach.TOP
attach = 'topLeft'
elif style == 'news':
in_game_colors = True
in_main_menu = True
h_attach = 'center'
v_attach = 'top'
h_attach = Text.HAttach.CENTER
v_attach = Text.VAttach.TOP
attach = 'topCenter'
else:
raise Exception('invalid style "' + style + '"')
@ -449,7 +451,7 @@ class Achievement:
host_only=True,
maxwidth=txt_max_w,
position=(x, y + 2),
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=txt_s,
flatness=0.6,
shadow=0.5,
@ -466,7 +468,7 @@ class Achievement:
host_only=True,
maxwidth=txt2_max_w,
position=(x, y - 14),
transition='fade_in',
transition=Text.Transition.FADE_IN,
vr_depth=-5,
h_attach=h_attach,
v_attach=v_attach,
@ -483,19 +485,18 @@ class Achievement:
host_only=True,
maxwidth=txt2_max_w * 0.7,
position=(x + 60, y + 5),
transition='fade_in',
transition=Text.Transition.FADE_IN,
vr_depth=-5,
h_attach=h_attach,
v_attach=v_attach,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
scale=txt_s * 0.8,
flatness=1.0,
shadow=0.5,
color=(1, 1, 0.6, 1),
transition_delay=delay + 0.1,
transition_out_delay=out_delay_fin).autoretain()
assert txtactor.node
txtactor.node.rotate = 10
objs.append(txtactor)
@ -505,12 +506,12 @@ class Achievement:
Text(_ba.charstr(SpecialChar.TICKET),
host_only=True,
position=(x + award_x + 33, y + 7),
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=1.5,
h_attach=h_attach,
v_attach=v_attach,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
color=(1, 1, 1, 0.2 if hmo else 0.4),
transition_delay=delay + 0.05,
transition_out_delay=out_delay_fin).autoretain())
@ -518,13 +519,13 @@ class Achievement:
Text('+' + str(self.get_award_ticket_value()),
host_only=True,
position=(x + award_x + 28, y + 16),
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=0.7,
flatness=1,
h_attach=h_attach,
v_attach=v_attach,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
color=cl2,
transition_delay=delay + 0.05,
transition_out_delay=out_delay_fin).autoretain())
@ -566,12 +567,12 @@ class Achievement:
Text(_ba.charstr(SpecialChar.TICKET),
host_only=True,
position=(x + award_x + 33, y + 7),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
scale=1.5,
h_attach=h_attach,
v_attach=v_attach,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
color=(1, 1, 1, 0.4) if complete else
(1, 1, 1, (0.1 if hmo else 0.2)),
transition_delay=delay + 0.05,
@ -580,13 +581,13 @@ class Achievement:
Text('+' + str(self.get_award_ticket_value()),
host_only=True,
position=(x + award_x + 28, y + 16),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
scale=0.7,
flatness=1,
h_attach=h_attach,
v_attach=v_attach,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
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))),
transition_delay=delay + 0.05,
@ -595,23 +596,25 @@ class Achievement:
# Show 'hard-mode-only' only over incomplete achievements
# when that's the case.
if hmo:
print('DOING HMO WITH STYLE', style)
txtactor = Text(
Lstr(resource='difficultyHardOnlyText'),
host_only=True,
maxwidth=300 * 0.7,
position=(x + 60, y + 5),
transition='fade_in',
transition=Text.Transition.FADE_IN,
vr_depth=-5,
h_attach=h_attach,
v_attach=v_attach,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
scale=0.85 * 0.8,
flatness=1.0,
shadow=0.5,
color=(1, 1, 0.6, 1),
transition_delay=delay + 0.05,
transition_out_delay=None).autoretain()
print('DID HMO')
assert txtactor.node
txtactor.node.rotate = 10
objs.append(txtactor)
@ -621,7 +624,7 @@ class Achievement:
host_only=True,
maxwidth=300,
position=(x, y + 2),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
scale=0.85,
flatness=0.6,
h_attach=h_attach,
@ -636,7 +639,7 @@ class Achievement:
host_only=True,
maxwidth=400,
position=(x, y - 14),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
vr_depth=-5,
h_attach=h_attach,
v_attach=v_attach,
@ -862,9 +865,9 @@ class Achievement:
subs=[('${A}', Lstr(resource='achievementText'))]),
position=(-120, 91 + y_offs),
front=True,
v_attach='bottom',
v_attach=Text.VAttach.BOTTOM,
vr_depth=base_vr_depth - 10,
transition='in_bottom',
transition=Text.Transition.IN_BOTTOM,
flatness=0.5,
transition_delay=in_time,
transition_out_delay=out_time,
@ -877,8 +880,8 @@ class Achievement:
objt = Text(self.display_name,
position=(-120, 50 + y_offs),
front=True,
v_attach='bottom',
transition='in_bottom',
v_attach=Text.VAttach.BOTTOM,
transition=Text.Transition.IN_BOTTOM,
vr_depth=base_vr_depth,
flatness=0.5,
transition_delay=in_time,
@ -893,10 +896,10 @@ class Achievement:
objt = Text(_ba.charstr(SpecialChar.TICKET),
position=(-120 - 170 + 5, 75 + y_offs - 20),
front=True,
v_attach='bottom',
h_align='center',
v_align='center',
transition='in_bottom',
v_attach=Text.VAttach.BOTTOM,
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.IN_BOTTOM,
vr_depth=base_vr_depth,
transition_delay=in_time,
transition_out_delay=out_time,
@ -909,11 +912,11 @@ class Achievement:
objt = Text('+' + str(self.get_award_ticket_value()),
position=(-120 - 180 + 5, 80 + y_offs - 20),
v_attach='bottom',
v_attach=Text.VAttach.BOTTOM,
front=True,
h_align='center',
v_align='center',
transition='in_bottom',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.IN_BOTTOM,
vr_depth=base_vr_depth,
flatness=0.5,
shadow=1.0,
@ -930,11 +933,11 @@ class Achievement:
if _account.have_pro():
objt = Text('x 2',
position=(-120 - 180 + 45, 80 + y_offs - 50),
v_attach='bottom',
v_attach=Text.VAttach.BOTTOM,
front=True,
h_align='center',
v_align='center',
transition='in_bottom',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.IN_BOTTOM,
vr_depth=base_vr_depth,
flatness=0.5,
shadow=1.0,
@ -950,8 +953,8 @@ class Achievement:
objt = Text(self.description_complete,
position=(-120, 30 + y_offs),
front=True,
v_attach='bottom',
transition='in_bottom',
v_attach=Text.VAttach.BOTTOM,
transition=Text.Transition.IN_BOTTOM,
vr_depth=base_vr_depth - 10,
flatness=0.5,
transition_delay=in_time,

View File

@ -179,7 +179,7 @@ class ScoreScreenActivity(Activity):
def on_begin(self) -> None:
# pylint: disable=cyclic-import
from bastd.actor import text
from bastd.actor.text import Text
from ba import _lang
super().on_begin()
@ -193,17 +193,17 @@ class ScoreScreenActivity(Activity):
else:
sval = _lang.Lstr(resource='pressAnyButtonText')
text.Text(self._custom_continue_message
if self._custom_continue_message is not None else sval,
v_attach='bottom',
h_align='center',
flash=True,
vr_depth=50,
position=(0, 10),
scale=0.8,
color=(0.5, 0.7, 0.5, 0.5),
transition='in_bottom_slow',
transition_delay=self._min_view_time).autoretain()
Text(self._custom_continue_message
if self._custom_continue_message is not None else sval,
v_attach=Text.VAttach.BOTTOM,
h_align=Text.HAlign.CENTER,
flash=True,
vr_depth=50,
position=(0, 10),
scale=0.8,
color=(0.5, 0.7, 0.5, 0.5),
transition=Text.Transition.IN_BOTTOM_SLOW,
transition_delay=self._min_view_time).autoretain()
def _player_press(self) -> None:

View File

@ -27,18 +27,18 @@ from typing import TYPE_CHECKING, TypeVar
from ba._messages import DieMessage, DeathType, OutOfBoundsMessage
from ba import _error
import _ba
if TYPE_CHECKING:
from typing import Any, Optional
import ba
T = TypeVar('T', bound='Actor')
class Actor:
"""High level logical entities in a game/activity.
"""High level logical entities in a ba.Activity.
Category: Gameplay Classes
@ -86,9 +86,6 @@ class Actor:
def __init__(self) -> None:
"""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__:
self._root_actor_init_called = True
activity = _ba.getactivity()

View File

@ -163,10 +163,10 @@ class CoopGameActivity(GameActivity):
Text(_lang.Lstr(resource='achievementsRemainingText'),
host_only=True,
position=(ts_h_offs - 10 + 40, v_offs - 10),
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=1.1,
h_attach="left",
v_attach="top",
h_attach=Text.HAttach.LEFT,
v_attach=Text.VAttach.TOP,
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,
shadow=1.0 if vrmode else 0.5,

View File

@ -57,10 +57,10 @@ class CoopJoiningActivity(JoiningActivity):
Text(self.session.campaign.get_level(
self.session.campaign_state['level']).displayname,
scale=1.3,
h_attach='center',
h_align='center',
v_attach='top',
transition='fade_in',
h_attach=Text.HAttach.CENTER,
h_align=Text.HAlign.CENTER,
v_attach=Text.VAttach.TOP,
transition=Text.Transition.FADE_IN,
transition_delay=4.0,
color=(1, 1, 1, 0.6),
position=(0, -95)).autoretain()
@ -106,10 +106,10 @@ class CoopJoiningActivity(JoiningActivity):
) -> None:
Text(text,
scale=scale * 0.76,
h_align='left',
h_attach='left',
v_attach='top',
transition='fade_in',
h_align=Text.HAlign.LEFT,
h_attach=Text.HAttach.LEFT,
v_attach=Text.VAttach.TOP,
transition=Text.Transition.FADE_IN,
transition_delay=delay,
color=color,
position=(60 + h_offs, vpos)).autoretain()
@ -179,10 +179,10 @@ class CoopJoiningActivity(JoiningActivity):
Text(ba.Lstr(resource='achievementsRemainingText'),
host_only=True,
position=(ts_h_offs - 10, vpos),
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=1.1 * 0.76,
h_attach="left",
v_attach="top",
h_attach=Text.HAttach.LEFT,
v_attach=Text.VAttach.TOP,
color=(1, 1, 1.2, 1) if vrmode else (0.8, 0.8, 1, 1),
shadow=1.0,
flatness=1.0 if vrmode else 0.6,
@ -197,9 +197,9 @@ class CoopJoiningActivity(JoiningActivity):
Text(ba.Lstr(resource='noAchievementsRemainingText'),
host_only=True,
position=(ts_h_offs + 15, vpos + 10),
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=0.7,
h_attach="left",
v_attach="top",
h_attach=Text.HAttach.LEFT,
v_attach=Text.VAttach.TOP,
color=(1, 1, 1, 0.5),
transition_delay=delay + 0.5).autoretain()

View File

@ -140,8 +140,8 @@ class CoopScoreScreen(ba.Activity):
self._score: Optional[int] = settings['score']
assert isinstance(self._score, (int, type(None)))
self._fail_message: Optional[str] = settings['fail_message']
assert isinstance(self._fail_message, (str, type(None)))
self._fail_message: Optional[ba.Lstr] = settings['fail_message']
assert isinstance(self._fail_message, (ba.Lstr, type(None)))
self._begin_time = ba.time()
@ -295,7 +295,7 @@ class CoopScoreScreen(ba.Activity):
flash=True,
maxwidth=360,
scale=0.54,
h_align='center',
h_align=Text.HAlign.CENTER,
color=(0.5, 0.7, 0.5, 1),
position=(300, -235))
ba.playsound(ba.getsound('error'))
@ -555,20 +555,20 @@ class CoopScoreScreen(ba.Activity):
]) if self._newly_complete else
ba.Lstr(value='${A}:\n',
subs=[('${A}', ba.Lstr(resource='nextLevelText'))]),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=5.2,
flash=self._newly_complete,
scale=0.54,
h_align='center',
h_align=Text.HAlign.CENTER,
maxwidth=270,
color=(0.5, 0.7, 0.5, 1),
position=(270, -235)).autoretain()
Text(ba.Lstr(translate=('coopLevelNames', self._next_level_name)),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=5.2,
flash=self._newly_complete,
scale=0.7,
h_align='center',
h_align=Text.HAlign.CENTER,
maxwidth=205,
color=(0.5, 0.7, 0.5, 1),
position=(270, -255)).autoretain()
@ -599,10 +599,10 @@ class CoopScoreScreen(ba.Activity):
jitter=1.0).autoretain()
Text(pstr,
maxwidth=300,
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=0.7,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
color=(0.5, 0.7, 0.5, 1),
position=(0, 230)).autoretain()
@ -610,11 +610,11 @@ class CoopScoreScreen(ba.Activity):
txt = Text(ba.Lstr(resource='waitingForHostText',
subs=[('${HOST}', adisp)]),
maxwidth=300,
transition='fade_in',
transition=Text.Transition.FADE_IN,
transition_delay=8.0,
scale=0.85,
h_align='center',
v_align='center',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
color=(1, 1, 0, 1),
position=(0, -230)).autoretain()
assert txt.node
@ -636,19 +636,19 @@ class CoopScoreScreen(ba.Activity):
[p['name'] for p in self._player_info])
if self._show_friend_scores:
self._friends_loading_status = Text(ba.Lstr(
value='${A}...',
subs=[('${A}', ba.Lstr(resource='loadingText'))]),
position=(-405, 150 + 30),
color=(1, 1, 1, 0.4),
transition='fade_in',
scale=0.7,
transition_delay=2.0)
self._friends_loading_status = Text(
ba.Lstr(value='${A}...',
subs=[('${A}', ba.Lstr(resource='loadingText'))]),
position=(-405, 150 + 30),
color=(1, 1, 1, 0.4),
transition=Text.Transition.FADE_IN,
scale=0.7,
transition_delay=2.0)
self._score_loading_status = Text(ba.Lstr(
value='${A}...', subs=[('${A}', ba.Lstr(resource='loadingText'))]),
position=(280, 150 + 30),
color=(1, 1, 1, 0.4),
transition='fade_in',
transition=Text.Transition.FADE_IN,
scale=0.7,
transition_delay=2.0)
@ -732,8 +732,8 @@ class CoopScoreScreen(ba.Activity):
resource='worldsBestTimesText'),
maxwidth=210,
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
transition='in_left',
v_align='center',
transition=Text.Transition.IN_LEFT,
v_align=Text.VAlign.CENTER,
scale=1.2,
transition_delay=2.2).autoretain()
@ -753,8 +753,8 @@ class CoopScoreScreen(ba.Activity):
maxwidth=210,
position=(ts_h_offs - 10,
ts_height / 2 + 25 + v_offs + 20),
transition='in_right',
v_align='center',
transition=Text.Transition.IN_RIGHT,
v_align=Text.VAlign.CENTER,
scale=1.2,
transition_delay=1.8).autoretain()
assert txt.node
@ -769,8 +769,8 @@ class CoopScoreScreen(ba.Activity):
resource='yourBestTimesText'),
maxwidth=210,
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
transition='in_right',
v_align='center',
transition=Text.Transition.IN_RIGHT,
v_align=Text.VAlign.CENTER,
scale=1.2,
transition_delay=1.8).autoretain()
@ -825,11 +825,11 @@ class CoopScoreScreen(ba.Activity):
position=(ts_h_offs + 20 + h_offs_extra,
v_offs_extra + ts_height / 2 + -ts_height *
(i + 1) / 10 + v_offs + 11.0),
h_align='right',
v_align='center',
h_align=Text.HAlign.RIGHT,
v_align=Text.VAlign.CENTER,
color=color0,
flash=flash,
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay1).autoretain()
Text(ba.Lstr(value=name_str),
@ -837,11 +837,11 @@ class CoopScoreScreen(ba.Activity):
v_offs_extra + ts_height / 2 + -ts_height *
(i + 1) / 10 + v_offs_names + v_offs + 11.0),
maxwidth=80.0 + 100.0 * len(self._player_info),
v_align='center',
v_align=Text.VAlign.CENTER,
color=color1,
flash=flash,
scale=scale,
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay2).autoretain()
# Show achievements for this level.
@ -859,8 +859,8 @@ class CoopScoreScreen(ba.Activity):
ts_height / 2 + 25 + v_offs + 3),
maxwidth=210,
host_only=True,
transition='in_right',
v_align='center',
transition=Text.Transition.IN_RIGHT,
v_align=Text.VAlign.CENTER,
scale=1.2,
transition_delay=2.8).autoretain()
@ -905,7 +905,7 @@ class CoopScoreScreen(ba.Activity):
maxwidth=330,
position=(-475, 150 + v_offs),
color=(1, 1, 1, 0.4),
transition='fade_in',
transition=Text.Transition.FADE_IN,
transition_delay=base_delay + 0.8,
scale=0.7)
return
@ -976,11 +976,11 @@ class CoopScoreScreen(ba.Activity):
position=(ts_h_offs + 20 + h_offs_extra,
v_offs_extra + ts_height / 2 + -ts_height *
(i + 1) / 10 + v_offs + 11.0),
h_align='right',
v_align='center',
h_align=Text.HAlign.RIGHT,
v_align=Text.VAlign.CENTER,
color=color0,
flash=flash,
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay1).autoretain()
else:
if is_me:
@ -992,10 +992,10 @@ class CoopScoreScreen(ba.Activity):
(i + 1) / 10 + v_offs_names + v_offs + 11.0),
color=color1,
maxwidth=160.0,
v_align='center',
v_align=Text.VAlign.CENTER,
flash=flash,
scale=scale,
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay2).autoretain()
def _got_score_results(self, results: Optional[Dict[str, Any]]) -> None:
@ -1020,7 +1020,7 @@ class CoopScoreScreen(ba.Activity):
ba.Lstr(resource='worldScoresUnavailableText'),
position=(230, 150 + v_offs),
color=(1, 1, 1, 0.4),
transition='fade_in',
transition=Text.Transition.FADE_IN,
transition_delay=base_delay + 0.3,
scale=0.7)
else:
@ -1071,7 +1071,7 @@ class CoopScoreScreen(ba.Activity):
ts_height / 2 + 6 + v_offs),
color=(0.4, 0.4, 0.4, 1.0),
scale=0.7,
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=base_delay + 0.3).autoretain()
else:
v_offs += 20
@ -1129,22 +1129,22 @@ class CoopScoreScreen(ba.Activity):
position=(ts_h_offs + 20 + h_offs_extra,
ts_height / 2 + -ts_height *
(i + 1) / 10 + v_offs + 11.0),
h_align='right',
v_align='center',
h_align=Text.HAlign.RIGHT,
v_align=Text.VAlign.CENTER,
color=color0,
flash=flash,
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay1).autoretain()
Text(ba.Lstr(value=name_str),
position=(ts_h_offs + 35 + h_offs_extra,
ts_height / 2 + -ts_height * (i + 1) / 10 +
v_offs_names + v_offs + 11.0),
maxwidth=80.0 + 100.0 * len(self._player_info),
v_align='center',
v_align=Text.VAlign.CENTER,
color=color1,
flash=flash,
scale=scale,
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay2).autoretain()
def _show_tips(self) -> None:
@ -1222,9 +1222,9 @@ class CoopScoreScreen(ba.Activity):
Text(ba.Lstr(resource='coopSelectWindow.prizesText'),
position=(-360, -70 + 77),
color=(1, 1, 1, 0.7),
h_align='center',
v_align='center',
transition='fade_in',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.FADE_IN,
scale=1.0,
maxwidth=300,
transition_delay=2.0).autoretain()
@ -1233,18 +1233,18 @@ class CoopScoreScreen(ba.Activity):
Text(rng,
position=(-410 + 10, vval),
color=(1, 1, 1, 0.7),
h_align='right',
v_align='center',
transition='fade_in',
h_align=Text.HAlign.RIGHT,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.FADE_IN,
scale=0.6,
maxwidth=300,
transition_delay=2.0).autoretain()
Text(val,
position=(-390 + 10, vval),
color=(0.7, 0.7, 0.7, 1.0),
h_align='left',
v_align='center',
transition='fade_in',
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.FADE_IN,
scale=0.8,
maxwidth=300,
transition_delay=2.0).autoretain()
@ -1266,9 +1266,9 @@ class CoopScoreScreen(ba.Activity):
Text(ba.Lstr(translate=('serverResponses', error)),
position=(0, -140),
color=(1, 1, 1, 0.7),
h_align='center',
v_align='center',
transition='fade_in',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.FADE_IN,
scale=0.9,
maxwidth=400,
transition_delay=1.0).autoretain()
@ -1288,9 +1288,9 @@ class CoopScoreScreen(ba.Activity):
subs=[('${A}', ba.Lstr(resource='rankText'))]),
position=(0, 36),
maxwidth=300,
transition='fade_in',
h_align='center',
v_align='center',
transition=Text.Transition.FADE_IN,
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition_delay=0).autoretain()
if best_player_rank is not None:
Text(ba.Lstr(resource='currentStandingText',
@ -1298,8 +1298,8 @@ class CoopScoreScreen(ba.Activity):
subs=[('${RANK}', str(best_player_rank))]),
position=(0, -155),
color=(1, 1, 1, 0.7),
h_align='center',
transition='fade_in',
h_align=Text.HAlign.CENTER,
transition=Text.Transition.FADE_IN,
scale=0.7,
transition_delay=1.0).autoretain()
else:
@ -1360,9 +1360,9 @@ class CoopScoreScreen(ba.Activity):
Text(score + ' =',
position=(xval, -64 + offs_y),
color=(0.6, 0.6, 0.6, 0.6),
h_align='center',
v_align='center',
transition='fade_in',
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition=Text.Transition.FADE_IN,
scale=0.4,
transition_delay=1.0).autoretain()
stx = xval + 20
@ -1398,8 +1398,8 @@ class CoopScoreScreen(ba.Activity):
]),
position=(0, -155 if self._newly_complete else -145),
color=(1, 1, 1, 0.7),
h_align='center',
transition='fade_in',
h_align=Text.HAlign.CENTER,
transition=Text.Transition.FADE_IN,
scale=0.55,
transition_delay=1.0).autoretain()
@ -1418,8 +1418,9 @@ class CoopScoreScreen(ba.Activity):
position=(0, -165),
color=(1, 1, 1, 0.7),
flash=new_best,
h_align='center',
transition='in_right' if new_best else 'fade_in',
h_align=Text.HAlign.CENTER,
transition=(Text.Transition.IN_RIGHT
if new_best else Text.Transition.FADE_IN),
scale=0.5,
transition_delay=1.0).autoretain()
@ -1427,9 +1428,9 @@ class CoopScoreScreen(ba.Activity):
subs=[('${A}', ba.Lstr(resource='ratingText'))]),
position=(0, 36),
maxwidth=300,
transition='fade_in',
h_align='center',
v_align='center',
transition=Text.Transition.FADE_IN,
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition_delay=0).autoretain()
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))
@ -1449,11 +1450,11 @@ class CoopScoreScreen(ba.Activity):
jitter=1.0).autoretain()
if self._fail_message is not None:
Text(self._fail_message,
h_align='center',
h_align=Text.HAlign.CENTER,
position=(0, -130),
maxwidth=300,
color=(1, 1, 1, 0.5),
transition='fade_in',
transition=Text.Transition.FADE_IN,
transition_delay=1.0).autoretain()
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'))]),
maxwidth=300,
position=(0, 200),
transition='fade_in',
h_align='center',
v_align='center',
transition=Text.Transition.FADE_IN,
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
transition_delay=0).autoretain()
ba.timer(0.35, ba.Call(ba.playsound, self._score_display_sound))

View File

@ -97,8 +97,8 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
scale=scale * extrascale,
color=((1.0, 0.7, 0.3, 1.0) if highlight else
(0.7, 0.7, 0.7, 0.7)),
h_align='right',
transition='in_left',
h_align=Text.HAlign.RIGHT,
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay + delay,
flash=flash).autoretain()
@ -115,9 +115,9 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
scale=1.05 * scale,
position=(ts_h_offs - 0.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),
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay).autoretain()
v_offs -= 25
@ -163,10 +163,10 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
scale=0.75 * scale,
position=(ts_h_offs - 50.0 * scale,
y_base + (v_offs + 15.0) * scale),
h_align='left',
v_align='center',
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
color=ba.safecolor(player.team.color + (1, )),
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay).autoretain()
ba.timer(
tdelay + delay2,
@ -187,9 +187,9 @@ class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity):
scale=0.55 * scale,
position=(ts_h_offs - 95.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),
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay).autoretain()
ba.timer(
tdelay + delay3,

View File

@ -132,13 +132,13 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
])
Text(txt,
v_align='center',
v_align=Text.VAlign.CENTER,
maxwidth=300,
color=(0.5, 0.5, 0.5, 1.0),
position=(0, 220),
scale=1.2,
transition='inTopSlow',
h_align='center',
transition=Text.Transition.IN_TOP_SLOW,
h_align=Text.HAlign.CENTER,
transition_delay=t_incr * 4).autoretain()
win_score = (session.get_series_length() - 1) / 2 + 1
@ -153,11 +153,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
('${LOSECOUNT}', str(lose_score))]),
color=(0.5, 0.5, 0.5, 1.0),
maxwidth=160,
v_align='center',
v_align=Text.VAlign.CENTER,
position=(0, -215),
scale=1.8,
transition='in_left',
h_align='center',
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.CENTER,
transition_delay=4.8 + t_incr * 4).autoretain()
if self._is_ffa:
@ -179,11 +179,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
if mvp is not None:
Text(ba.Lstr(resource='mostValuablePlayerText'),
color=(0.5, 0.5, 0.5, 1.0),
v_align='center',
v_align=Text.VAlign.CENTER,
maxwidth=300,
position=(180, ts_height / 2 + 15),
transition='in_left',
h_align='left',
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
@ -194,12 +194,12 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
transition_delay=tval).autoretain()
Text(ba.Lstr(value=mvp_name),
position=(280, ts_height / 2 - 55 + 15 - 5),
h_align='left',
v_align='center',
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
maxwidth=170,
scale=1.3,
color=ba.safecolor(mvp.team.color + (1, )),
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
@ -213,11 +213,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
if mvp is not None:
Text(ba.Lstr(resource='mostViolentPlayerText'),
color=(0.5, 0.5, 0.5, 1.0),
v_align='center',
v_align=Text.VAlign.CENTER,
maxwidth=300,
position=(180, ts_height / 2 - 150 + v_extra + 15),
transition='in_left',
h_align='left',
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.LEFT,
transition_delay=tval).autoretain()
Text(ba.Lstr(value='(${A})',
subs=[('${A}',
@ -227,8 +227,8 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
position=(260, ts_height / 2 - 150 - 15 + v_extra),
color=(0.3, 0.3, 0.3, 1.0),
scale=0.6,
h_align='left',
transition='in_left',
h_align=Text.HAlign.LEFT,
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
@ -239,11 +239,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
transition_delay=tval).autoretain()
Text(ba.Lstr(value=mvp_name),
position=(270, ts_height / 2 - 150 - 30 - 36 + v_extra + 15),
h_align='left',
v_align='center',
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
maxwidth=180,
color=ba.safecolor(mvp.team.color + (1, )),
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
@ -258,11 +258,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
if mkp is not None:
Text(ba.Lstr(resource='mostViolatedPlayerText'),
color=(0.5, 0.5, 0.5, 1.0),
v_align='center',
v_align=Text.VAlign.CENTER,
maxwidth=300,
position=(180, ts_height / 2 - 300 + v_extra + 15),
transition='in_left',
h_align='left',
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.LEFT,
transition_delay=tval).autoretain()
Text(ba.Lstr(value='(${A})',
subs=[('${A}',
@ -270,10 +270,10 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
subs=[('${COUNT}', str(most_killed))]))
]),
position=(260, ts_height / 2 - 300 - 15 + v_extra),
h_align='left',
h_align=Text.HAlign.LEFT,
scale=0.6,
color=(0.3, 0.3, 0.3, 1.0),
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
Image(mkp.get_icon(),
@ -283,11 +283,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
transition_delay=tval).autoretain()
Text(ba.Lstr(value=mkp_name),
position=(270, ts_height / 2 - 300 - 30 - 36 + v_extra + 15),
h_align='left',
v_align='center',
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
color=ba.safecolor(mkp.team.color + (1, )),
maxwidth=180,
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
@ -296,7 +296,7 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
Text(ba.Lstr(resource='finalScoresText'),
color=(0.5, 0.5, 0.5, 1.0),
position=(ts_h_offs, ts_height / 2),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay).autoretain()
tdelay += 4 * t_incr
@ -309,8 +309,8 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
if self._is_ffa else str(prec.score),
color=(0.5, 0.5, 0.5, 1.0),
position=(ts_h_offs + 230, ts_height / 2 + v_offs),
h_align='right',
transition='in_right',
h_align=Text.HAlign.RIGHT,
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay).autoretain()
tdelay -= 4 * t_incr
@ -321,11 +321,11 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
transition_delay=tdelay).autoretain()
Text(ba.Lstr(value=name),
position=(ts_h_offs - 50, ts_height / 2 + v_offs + 15),
h_align='left',
v_align='center',
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
maxwidth=180,
color=ba.safecolor(prec.team.color + (1, )),
transition='in_right',
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay).autoretain()
ba.timer(15.0, ba.WeakCall(self._show_tips))

View File

@ -26,7 +26,7 @@ from typing import TYPE_CHECKING
import ba
from ba.internal import JoiningActivity
from bastd.actor import text as textactor
from bastd.actor.text import Text
if TYPE_CHECKING:
from typing import Any, Dict, Optional
@ -37,7 +37,7 @@ class TeamJoiningActivity(JoiningActivity):
def __init__(self, settings: Dict[str, Any]):
super().__init__(settings)
self._next_up_text: Optional[textactor.Text] = None
self._next_up_text: Optional[Text] = None
def on_transition_in(self) -> None:
from bastd.actor.controlsguide import ControlsGuide
@ -49,19 +49,19 @@ class TeamJoiningActivity(JoiningActivity):
assert isinstance(session, ba.TeamBaseSession)
# 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}',
subs=[('${1}', ba.Lstr(resource='upFirstText')),
('${2}', session.get_next_game_description())]),
h_attach='center',
scale=0.7,
v_attach='top',
h_align='center',
position=(0, -70),
flash=False,
color=(0.5, 0.5, 0.5, 1.0),
transition='fade_in',
transition_delay=5.0)
h_attach=Text.HAttach.CENTER,
scale=0.7,
v_attach=Text.VAttach.TOP,
h_align=Text.HAlign.CENTER,
position=(0, -70),
flash=False,
color=(0.5, 0.5, 0.5, 1.0),
transition=Text.Transition.FADE_IN,
transition_delay=5.0)
# In teams mode, show our two team names.
# FIXME: Lobby should handle this.
@ -72,28 +72,26 @@ class TeamJoiningActivity(JoiningActivity):
]
if len(team_names) == 2:
for i in range(2):
textactor.Text(team_names[i],
scale=0.7,
h_attach='center',
v_attach='top',
h_align='center',
position=(-200 + 350 * i, -100),
color=team_colors[i],
transition='fade_in').autoretain()
Text(team_names[i],
scale=0.7,
h_attach=Text.HAttach.CENTER,
v_attach=Text.VAttach.TOP,
h_align=Text.HAlign.CENTER,
position=(-200 + 350 * i, -100),
color=team_colors[i],
transition=Text.Transition.FADE_IN).autoretain()
textactor.Text(ba.Lstr(resource='mustInviteFriendsText',
subs=[
('${GATHER}',
ba.Lstr(resource='gatherWindow.titleText'))
]),
h_attach='center',
scale=0.8,
host_only=True,
v_attach='center',
h_align='center',
position=(0, 0),
flash=False,
color=(0, 1, 0, 1.0),
transition='fade_in',
transition_delay=2.0,
transition_out_delay=7.0).autoretain()
Text(ba.Lstr(resource='mustInviteFriendsText',
subs=[('${GATHER}',
ba.Lstr(resource='gatherWindow.titleText'))]),
h_attach=Text.HAttach.CENTER,
scale=0.8,
host_only=True,
v_attach=Text.VAttach.CENTER,
h_align=Text.HAlign.CENTER,
position=(0, 0),
flash=False,
color=(0, 1, 0, 1.0),
transition=Text.Transition.FADE_IN,
transition_delay=2.0,
transition_out_delay=7.0).autoretain()

View File

@ -59,14 +59,14 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
])
Text(txt,
maxwidth=900,
h_attach='center',
v_attach='bottom',
h_align='center',
v_align='center',
h_attach=Text.HAttach.CENTER,
v_attach=Text.VAttach.BOTTOM,
h_align=Text.HAlign.CENTER,
v_align=Text.VAlign.CENTER,
position=(0, 53),
flash=False,
color=(0.3, 0.3, 0.35, 1.0),
transition='fade_in',
transition=Text.Transition.FADE_IN,
transition_delay=2.0).autoretain()
def show_player_scores(self,
@ -150,7 +150,7 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
def _txt(x_offs: float,
y_offs: float,
text: ba.Lstr,
h_align: str = 'right',
h_align: Text.HAlign = Text.HAlign.RIGHT,
extrascale: float = 1.0,
maxwidth: Optional[float] = 120.0) -> None:
Text(text,
@ -158,18 +158,23 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
position=(ts_h_offs + x_offs * scale,
ts_v_offset + (v_offs + y_offs + 4.0) * scale),
h_align=h_align,
v_align='center',
v_align=Text.VAlign.CENTER,
scale=0.8 * scale * extrascale,
maxwidth=maxwidth,
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay).autoretain()
session = self.session
assert isinstance(session, ba.TeamBaseSession)
tval = ba.Lstr(resource='gameLeadersText',
subs=[('${COUNT}', str(session.get_game_number()))])
_txt(180, 43, tval, h_align='center', extrascale=1.4, maxwidth=None)
_txt(-15, 4, ba.Lstr(resource='playerText'), h_align='left')
_txt(180,
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(280, 4, ba.Lstr(resource='deathsText'), maxwidth=100)
@ -198,10 +203,10 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
scale=scale,
color=(1.0, 0.9, 0.5, 1.0) if highlight else
(0.5, 0.5, 0.6, 0.5),
h_align='right',
v_align='center',
h_align=Text.HAlign.RIGHT,
v_align=Text.VAlign.CENTER,
maxwidth=maxwidth,
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay + delay2).autoretain()
for playerrec in player_records:
@ -218,10 +223,10 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
scale=0.75 * scale,
position=(ts_h_offs + 10.0 * scale,
ts_v_offset + (v_offs + 15) * scale),
h_align='left',
v_align='center',
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
color=ba.safecolor(playerrec.team.color + (1, )),
transition='in_left',
transition=Text.Transition.IN_LEFT,
transition_delay=tdelay).autoretain()
_scoretxt(str(playerrec.accum_kill_count), 180,
playerrec.accum_kill_count == topkillcount, 100)

View File

@ -146,7 +146,7 @@ class Image(ba.Actor):
cmb.input0 = position[0]
ba.animate(cmb, 'input1', 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]}
o_keys = {transition_delay: 0.0, transition_delay + 1.0: 1.0}
cmb.input0 = position[0]

View File

@ -21,29 +21,62 @@
"""Defines Actor(s)."""
from __future__ import annotations
from enum import Enum
from typing import TYPE_CHECKING
import ba
if TYPE_CHECKING:
from typing import Any, Union, Tuple, Sequence
from typing import Any, Union, Tuple, Sequence, Optional
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,
text: Union[str, ba.Lstr],
position: Tuple[float, float] = (0.0, 0.0),
h_align: str = 'left',
v_align: str = 'none',
h_align: HAlign = HAlign.LEFT,
v_align: VAlign = VAlign.NONE,
color: Sequence[float] = (1.0, 1.0, 1.0, 1.0),
transition: str = None,
transition: Optional[Transition] = None,
transition_delay: float = 0.0,
flash: bool = False,
v_attach: str = 'center',
h_attach: str = 'center',
v_attach: VAttach = VAttach.CENTER,
h_attach: HAttach = HAttach.CENTER,
scale: float = 1.0,
transition_out_delay: float = None,
maxwidth: float = None,
@ -63,11 +96,11 @@ class Text(ba.Actor):
'text': text,
'color': color,
'position': position,
'h_align': h_align,
'h_align': h_align.value,
'vr_depth': vr_depth,
'v_align': v_align,
'h_attach': h_attach,
'v_attach': v_attach,
'v_align': v_align.value,
'h_attach': h_attach.value,
'v_attach': v_attach.value,
'shadow': shadow,
'flatness': flatness,
'maxwidth': 0.0 if maxwidth is None else maxwidth,
@ -76,7 +109,7 @@ class Text(ba.Actor):
'scale': scale
})
if transition == 'fade_in':
if transition is self.Transition.FADE_IN:
if flash:
raise Exception("fixme: flash and fade-in"
" currently cant both be on")
@ -127,18 +160,19 @@ class Text(ba.Actor):
cmb = self.position_combine = ba.newnode('combine',
owner=self.node,
attrs={'size': 2})
if transition == 'in_right':
if transition is self.Transition.IN_RIGHT:
keys = {
transition_delay: position[0] + 1.3,
transition_delay: position[0] + 1300,
transition_delay + 0.2: position[0]
}
o_keys = {transition_delay: 0.0, transition_delay + 0.05: 1.0}
ba.animate(cmb, 'input0', keys)
cmb.input1 = position[1]
ba.animate(self.node, 'opacity', o_keys)
elif transition == 'in_left':
elif transition is self.Transition.IN_LEFT:
keys = {
transition_delay: position[0] - 1.3,
transition_delay: position[0] - 1300,
transition_delay + 0.2: position[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)
cmb.input1 = position[1]
ba.animate(self.node, 'opacity', o_keys)
elif transition == 'in_bottom_slow':
elif transition is self.Transition.IN_BOTTOM_SLOW:
keys = {
transition_delay: -100.0,
transition_delay + 1.0: position[1]
@ -160,7 +194,7 @@ class Text(ba.Actor):
cmb.input0 = position[0]
ba.animate(cmb, 'input1', keys)
ba.animate(self.node, 'opacity', o_keys)
elif transition == 'in_bottom':
elif transition is self.Transition.IN_BOTTOM:
keys = {
transition_delay: -100.0,
transition_delay + 0.2: position[1]
@ -174,18 +208,21 @@ class Text(ba.Actor):
cmb.input0 = position[0]
ba.animate(cmb, 'input1', 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]}
o_keys = {transition_delay: 0.0, transition_delay + 1.0: 1.0}
cmb.input0 = position[0]
ba.animate(cmb, 'input1', keys)
ba.animate(self.node, 'opacity', o_keys)
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.input1 = position[1]
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:
ba.timer(transition_delay + transition_out_delay + 1.0,
ba.WeakCall(self.handlemessage, ba.DieMessage()))

View File

@ -286,7 +286,7 @@ class MainMenuActivity(ba.Activity):
self._got_news(news)
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;
# otherwise, rotate our phrase.
@ -302,22 +302,22 @@ class MainMenuActivity(ba.Activity):
val = self._phrases.pop()
if val == '__ACH__':
vrmode = app.vr_mode
text.Text(ba.Lstr(resource='nextAchievementsText'),
color=((1, 1, 1, 1) if vrmode else
(0.95, 0.9, 1, 0.4)),
host_only=True,
maxwidth=200,
position=(-300, -35),
h_align='right',
transition='fade_in',
scale=0.9 if vrmode else 0.7,
flatness=1.0 if vrmode else 0.6,
shadow=1.0 if vrmode else 0.5,
h_attach="center",
v_attach="top",
transition_delay=1.0,
transition_out_delay=self.
_message_duration).autoretain()
Text(ba.Lstr(resource='nextAchievementsText'),
color=((1, 1, 1, 1) if vrmode else
(0.95, 0.9, 1, 0.4)),
host_only=True,
maxwidth=200,
position=(-300, -35),
h_align=Text.HAlign.RIGHT,
transition=Text.Transition.FADE_IN,
scale=0.9 if vrmode else 0.7,
flatness=1.0 if vrmode else 0.6,
shadow=1.0 if vrmode else 0.5,
h_attach=Text.HAttach.CENTER,
v_attach=Text.VAttach.TOP,
transition_delay=1.0,
transition_out_delay=self._message_duration
).autoretain()
achs = [
a for a in app.achievements if not a.complete
]