mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-08 16:53:49 +08:00
Merge pull request #12 from Dmitry450/master
Fixed coop version of race
This commit is contained in:
commit
8c98f333d3
@ -821,7 +821,8 @@ class CoopScoreScreen(ba.Activity):
|
|||||||
tdelay2 = times[i][1]
|
tdelay2 = times[i][1]
|
||||||
Text(str(display_scores[i][0]) if self._score_type == 'points'
|
Text(str(display_scores[i][0]) if self._score_type == 'points'
|
||||||
else ba.timestring(display_scores[i][0] * 10,
|
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,
|
position=(ts_h_offs + 20 + h_offs_extra,
|
||||||
v_offs_extra + ts_height / 2 + -ts_height *
|
v_offs_extra + ts_height / 2 + -ts_height *
|
||||||
(i + 1) / 10 + v_offs + 11.0),
|
(i + 1) / 10 + v_offs + 11.0),
|
||||||
|
|||||||
@ -285,9 +285,13 @@ class RaceGame(ba.TeamGameActivity):
|
|||||||
ba.playsound(self._score_sound)
|
ba.playsound(self._score_sound)
|
||||||
player.team.gamedata['finished'] = True
|
player.team.gamedata['finished'] = True
|
||||||
assert self._timer is not None
|
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 = (
|
self._last_team_time = (
|
||||||
player.team.gamedata['time']) = (
|
player.team.gamedata['time']) = (_cur_time -
|
||||||
ba.time() - self._timer.getstarttime())
|
_start_time)
|
||||||
self._check_end_game()
|
self._check_end_game()
|
||||||
|
|
||||||
# Team has yet to finish.
|
# Team has yet to finish.
|
||||||
@ -545,7 +549,10 @@ class RaceGame(ba.TeamGameActivity):
|
|||||||
# Sort players by distance and update their ranks.
|
# Sort players by distance and update their ranks.
|
||||||
p_list = [[player.gamedata['distance'], player]
|
p_list = [[player.gamedata['distance'], player]
|
||||||
for player in self.players]
|
for player in self.players]
|
||||||
|
|
||||||
p_list.sort(reverse=True)
|
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):
|
for i, plr in enumerate(p_list):
|
||||||
try:
|
try:
|
||||||
plr[1].gamedata['rank'] = i
|
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)
|
# final time differs from what they see onscreen by a tiny bit)
|
||||||
assert self._timer is not None
|
assert self._timer is not None
|
||||||
if self._timer.has_started():
|
if self._timer.has_started():
|
||||||
|
_cur_time = self._timer.getstarttime(
|
||||||
|
timeformat=ba.TimeFormat.MILLISECONDS)
|
||||||
self._timer.stop(
|
self._timer.stop(
|
||||||
endtime=None if self._last_team_time is None else (
|
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()
|
results = ba.TeamGameResults()
|
||||||
|
|
||||||
for team in self.teams:
|
for team in self.teams:
|
||||||
|
if team.gamedata['time'] is not None:
|
||||||
results.set_team_score(team, team.gamedata['time'])
|
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
|
# 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
|
# 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')
|
ba.print_error('got no player in PlayerSpazDeathMessage')
|
||||||
return
|
return
|
||||||
if not player.gamedata['finished']:
|
if not player.gamedata['finished']:
|
||||||
self.respawn_player(player, respawn_time=1000)
|
self.respawn_player(player, respawn_time=1)
|
||||||
else:
|
else:
|
||||||
super().handlemessage(msg)
|
super().handlemessage(msg)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user