Merge pull request #12 from Dmitry450/master

Fixed coop version of race
This commit is contained in:
Eric Froemling 2020-04-09 02:23:23 -07:00 committed by GitHub
commit 8c98f333d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 6 deletions

View File

@ -821,7 +821,8 @@ class CoopScoreScreen(ba.Activity):
tdelay2 = times[i][1]
Text(str(display_scores[i][0]) if self._score_type == 'points'
else ba.timestring(display_scores[i][0] * 10,
timeformat=ba.TimeFormat.MILLISECONDS),
timeformat=ba.TimeFormat.MILLISECONDS,
suppress_format_warning=True),
position=(ts_h_offs + 20 + h_offs_extra,
v_offs_extra + ts_height / 2 + -ts_height *
(i + 1) / 10 + v_offs + 11.0),

View File

@ -285,9 +285,13 @@ class RaceGame(ba.TeamGameActivity):
ba.playsound(self._score_sound)
player.team.gamedata['finished'] = True
assert self._timer is not None
_cur_time = ba.time(
timeformat=ba.TimeFormat.MILLISECONDS)
_start_time = self._timer.getstarttime(
timeformat=ba.TimeFormat.MILLISECONDS)
self._last_team_time = (
player.team.gamedata['time']) = (
ba.time() - self._timer.getstarttime())
player.team.gamedata['time']) = (_cur_time -
_start_time)
self._check_end_game()
# Team has yet to finish.
@ -545,7 +549,10 @@ class RaceGame(ba.TeamGameActivity):
# Sort players by distance and update their ranks.
p_list = [[player.gamedata['distance'], player]
for player in self.players]
p_list.sort(reverse=True)
# FIXME - need another way to sort p_list.
# It tries to compare ba.Player objects.
for i, plr in enumerate(p_list):
try:
plr[1].gamedata['rank'] = i
@ -700,14 +707,19 @@ class RaceGame(ba.TeamGameActivity):
# 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 (
self._timer.getstarttime() + self._last_team_time))
_cur_time + self._last_team_time))
results = ba.TeamGameResults()
for team in self.teams:
results.set_team_score(team, team.gamedata['time'])
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
@ -725,6 +737,6 @@ class RaceGame(ba.TeamGameActivity):
ba.print_error('got no player in PlayerSpazDeathMessage')
return
if not player.gamedata['finished']:
self.respawn_player(player, respawn_time=1000)
self.respawn_player(player, respawn_time=1)
else:
super().handlemessage(msg)