def end_game(self) -> None: # Stop updating our time text, and set it to show the exact last # finish time if we have one. (so users don't get upset if their # final time differs from what they see onscreen by a tiny bit) assert self._timer is not None if self._timer.has_started(): cur_time = self._timer.getstarttime( timeformat=ba.TimeFormat.MILLISECONDS) self._timer.stop( endtime=None if self._last_team_time is None else ( cur_time + self._last_team_time)) results = ba.TeamGameResults() for team in self.teams: if team.gamedata['time'] is not None: results.set_team_score(team, team.gamedata['time']) # If game have ended before we # get any result, use 'fail' screen # We don't announce a winner in ffa mode since its probably been a # while since the first place guy crossed the finish line so it seems # odd to be announcing that now. self.end(results=results, announce_winning_team=isinstance(self.session, ba.DualTeamSession))
def end_game(self) -> None: # Stop our on-screen timer so players can see what they got. assert self._timer is not None self._timer.stop() results = ba.TeamGameResults() # If we won, set our score to the elapsed time # (there should just be 1 team here since this is co-op). # ..if we didn't win, leave scores as default (None) which means # we lost. if self._won: curtime = ba.time(timeformat=ba.TimeFormat.MILLISECONDS) assert isinstance(curtime, int) starttime = self._timer.getstarttime( timeformat=ba.TimeFormat.MILLISECONDS) assert isinstance(starttime, int) elapsed_time_ms = curtime - starttime ba.cameraflash() ba.playsound(self._winsound) for team in self.teams: for player in team.players: if player.actor: player.actor.handlemessage(ba.CelebrateMessage()) results.set_team_score(team, elapsed_time_ms) # Ends the activity. self.end(results)
def end_game(self) -> None: results = ba.TeamGameResults() for team in self.teams: results.set_team_score( team, self.settings['Hold Time'] - team.gamedata['time_remaining']) self.end(results=results, announce_delay=0)
def end_game(self) -> None: # Stop updating our time text, and set it to show the exact last # finish time if we have one. (so users don't get upset if their # final time differs from what they see onscreen by a tiny amount) assert self._timer is not None if self._timer.has_started(): self._timer.stop( endtime=None if self._last_team_time is None else ( self._timer.getstarttime() + self._last_team_time)) results = ba.TeamGameResults() for team in self.teams: if team.time is not None: # We store time in seconds, but pass a score in milliseconds. results.set_team_score(team, int(team.time * 1000.0)) else: results.set_team_score(team, None) # We don't announce a winner in ffa mode since its probably been a # while since the first place guy crossed the finish line so it seems # odd to be announcing that now. self.end(results=results, announce_winning_team=isinstance(self.session, ba.DualTeamSession))
def end_game(self) -> None: if self.has_ended(): return results = ba.TeamGameResults() self._vs_text = None # Kill our 'vs' if its there. for team in self.teams: results.set_team_score(team, team.survival_seconds) self.end(results=results)
def end_game(self) -> None: cur_time = ba.time() assert self._timer is not None start_time = self._timer.getstarttime() # Mark death-time as now for any still-living players # and award players points for how long they lasted. # (these per-player scores are only meaningful in team-games) for team in self.teams: for player in team.players: playerdata = PlayerData.get(player) survived = False # Throw an extra fudge factor in so teams that # didn't die come out ahead of teams that did. if playerdata.death_time is None: survived = True playerdata.death_time = cur_time + 1 # Award a per-player score depending on how many seconds # they lasted (per-player scores only affect teams mode; # everywhere else just looks at the per-team score). score = int(playerdata.death_time - self._timer.getstarttime()) if survived: score += 50 # A bit extra for survivors. self.stats.player_scored(player, score, screenmessage=False) # Stop updating our time text, and set the final time to match # exactly when our last guy died. self._timer.stop(endtime=self._last_player_death_time) # Ok now calc game results: set a score for each team and then tell # the game to end. results = ba.TeamGameResults() # Remember that 'free-for-all' mode is simply a special form # of 'teams' mode where each player gets their own team, so we can # just always deal in teams and have all cases covered. for team in self.teams: # Set the team score to the max time survived by any player on # that team. longest_life = 0.0 for player in team.players: playerdata = PlayerData.get(player) assert playerdata.death_time is not None longest_life = max(longest_life, playerdata.death_time - start_time) # Submit the score value in milliseconds. results.set_team_score(team, int(1000.0 * longest_life)) self.end(results=results)
def end_game(self) -> None: # Stop our on-screen timer so players can see what they got. assert self._timer is not None self._timer.stop() results = ba.TeamGameResults() # If we won, set our score to the elapsed time in milliseconds. # (there should just be 1 team here since this is co-op). # ..if we didn't win, leave scores as default (None) which means # we lost. if self._won: elapsed_time_ms = int((ba.time() - self._timer.starttime) * 1000.0) ba.cameraflash() ba.playsound(self._winsound) for team in self.teams: for player in team.players: if player.actor: player.actor.handlemessage(ba.CelebrateMessage()) results.set_team_score(team, elapsed_time_ms) # Ends the activity. self.end(results)
def end_game(self) -> None: results = ba.TeamGameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results=results)
def end_game(self) -> None: results = ba.TeamGameResults() for team in self.teams: results.set_team_score(team, team.gamedata['score']) self.end(results=results, announce_delay=0.8)
def end_game(self) -> None: results = ba.TeamGameResults() for team in self.teams: results.set_team_score(team, self._hold_time - team.timeremaining) self.end(results=results, announce_delay=0)
def end_game(self) -> None: results = ba.TeamGameResults() for team in self.teams: results.set_team_score(team, team.gamedata['flags_held']) self.end(results=results)