Source code for song_match.effect.effects.correct_sequence

from cozmo.anim import Triggers

from song_match.effect.effect import Effect
from song_match.sound_effects import play_collect_point_sound


[docs]class CorrectSequenceEffect(Effect): """Played when either a player or Cozmo matches a sequence of notes correctly."""
[docs] async def play(self, is_sequence_long: bool = False, is_player: bool = True) -> None: """Play the correct sequence effect. * Play ``collect-point.wav`` * Animate Cozmo with :attr:`~cozmo.anim.Triggers.MemoryMatchPlayerWinHand` or :attr:`~cozmo.anim.Triggers.MemoryMatchCozmoWinHand` depending upon ``is_player``. * Flash the cubes green. :keyword is_sequence_long: Whether the sequence the player matched was long. :keyword is_player: Whether the player or Cozmo played the correct sequence. :return: None """ play_collect_point_sound() animation = self.__get_animation(is_sequence_long, is_player) action = self._song_robot.play_anim_trigger(animation, in_parallel=True) await self._note_cubes.flash_lights_green() await action.wait_for_completed()
@staticmethod def __get_animation(is_sequence_long: bool, is_player: bool) -> Triggers: if is_sequence_long and is_player: return Triggers.MemoryMatchPlayerWinHandLong else: if is_player: return Triggers.MemoryMatchPlayerWinHand else: return Triggers.MemoryMatchCozmoWinHand