mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-22 23:15:49 +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':
|
||||
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,
|
||||
|
||||
@ -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:
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -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()))
|
||||
|
||||
@ -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
|
||||
]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user