From 1a34143cf621bf1b34b5fdcaeae30d6ad01611f5 Mon Sep 17 00:00:00 2001 From: CMDR furrycat Date: Mon, 20 Jun 2016 09:30:25 -0400 Subject: [PATCH] Handle tied competitors. --- lib/race.php | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/lib/race.php b/lib/race.php index cb60d10..319c5d4 100644 --- a/lib/race.php +++ b/lib/race.php @@ -181,6 +181,40 @@ return $colours[$row_index][$column_index]; } + function tied($entry1, $entry2, $sort) { + $entries = array(); + foreach (array($entry1, $entry2) as $entry) { + switch ($sort) { + case 'distance': + case 'penalty_distance': + $enties[] = implode("|", array($entry->getTotalDistance(), $entry->getPenaltyTime(), $entry->cutShort(), $entry->getTotalTime(), $entry->getBonusTime())); + break; + + case 'best_speed': + $entries[] = $entry->getBestSpeed(); + break; + + case 'average_speed': + $entries[] = $entry->getAverageSpeed(); + break; + + case 'fastest_lap': + $entries[] = $entry->getFastestLap(); + break; + + case 'average_lap': + $entries[] = $entry->getAverageLap(); + break; + + case 'start_time': + $entries[] = $entry->getStartTime(); + break; + } + } + + return $entries[0] == $entries[1]; + } + function open_tags($formatting, $tags) { $ret = array(); foreach ($formatting as $format) $ret[] = implode($format, $tags); @@ -978,6 +1012,10 @@ $format = "competitors"; $prizewinners_only = true; } + + /* Detect equal times. */ + $last_entries = array(); + foreach ($entries as $entry) { $entry_id = $entry->getId(); $p = $r = $s = ''; @@ -1062,7 +1100,31 @@ if ($prizewinners_only) continue; if (! is_null($limit) && ++$shown > $limit) continue; } + + if ($r) { + $last = "r"; + if (array_key_exists($last, $last_entries)) { + if (tied($entry, $last_entries[$last], $sort)) $r = "="; + } + $last_entries[$last] = $entry; + } + + if ($p) { + $last = "p"; + if (array_key_exists($last, $last_entries)) { + if (tied($entry, $last_entries[$last], $sort)) $p = "="; + } + $last_entries[$last] = $entry; + } + if ($race->isRegulationClass()) $s = null; + else if ($s) { + $last = "$hull_id"; + if (array_key_exists($last, $last_entries)) { + if (tied($entry, $last_entries[$last], $sort)) $s = "="; + $last_entries[$last] = $entry; + } + } show_entry($sort, $format, $entry, $allotted_time, null, $race->getPrizes(), $p, $r, $s, $n++, $type, $prize_name, count($blue_fields), count($white_fields)); if ($filter) $filtered_entries[] = $entry; } -- 2.7.4