def __animate_kickoff(self, dt): # animate ball obj = self.ids['kickoff_ball'] x_current = obj.pos[0] x_target = obj.parent.x + (0.0 if GameData.get_kickoff_team() == 0 else obj.parent.width) y_high = obj.parent.y + 1.5 * obj.parent.height y_low = obj.parent.y + obj.parent.height / 2.0 uptime_ratio = 0.3 duration = 1.5 duration_up = uptime_ratio * duration duration_down = (1.0 - uptime_ratio) * duration anim = Animation(x=x_current + uptime_ratio * (x_target - x_current), d=duration_up, t='linear') & Animation(y=y_high, d=duration_up, t='out_quad') anim += Animation(x=x_target, d=duration_down, t='out_quad') & Animation(y=y_low, d=duration_down, t='out_bounce') anim.start(obj) Clock.schedule_once(self.__animate_rotation, 0) Clock.schedule_once(lambda dt: Clock.unschedule(self.__animate_rotation), duration)
def __animate_rotation(self, dt): direction = 1.0 if GameData.get_kickoff_team() == 0 else -1.0 self.kickoff_angle += 15.0 * direction Clock.schedule_once(self.__animate_rotation, 0.04)
def handle_kickoff(self, say_player): if not GameData.is_match_finished(): delay = 1.0 Clock.schedule_once(self.__animate_kickoff, delay) if say_player: SoundManager.play(Trigger.GAME_START, self.players[GameData.get_kickoff_team() * 2])