def leaderboard_text(self, daily_number, display_seed=False): text = "``` \n" text += self.leaderboard_header(daily_number) + '\n' params = (daily_number, self._type.id) if display_seed: for row in self._db_conn.execute("SELECT seed FROM daily_data WHERE daily_id=? AND type=?", params): text += "Seed: {}\n".format(row[0]) break no_entries = True rank = int(0) prior_result = '' #detect and handle ties rank_to_display = int(1) for row in self._db_conn.execute("""SELECT user_data.name,daily_races.level,daily_races.time FROM daily_races INNER JOIN user_data ON daily_races.discord_id=user_data.discord_id WHERE daily_races.daily_id=? AND daily_races.type=? ORDER BY daily_races.level DESC, daily_races.time ASC""", params): name = row[0] lv = row[1] time = row[2] result_string = '' if lv == 18: result_string = racetime.to_str(time) elif lv == -1: continue else: result_string = level.to_str(lv) if result_string == '': result_string = "death" else: result_string = "death ({0})".format(result_string) rank += 1 no_entries = False # update the rank only if we've gotten a different result than the last entrant if not result_string == prior_result: #kinda hacky to use a string comparison here, but works for the moment rank_to_display = rank prior_result = result_string text += '{0: >3}. {1: <24} {2}\n'.format(rank_to_display, name, result_string) if no_entries: text += 'No entries yet.\n' text += '```' return text
def leaderboard_text(self, daily_number, display_seed=False): text = "``` \n" text += self.leaderboard_header(daily_number) + '\n' params = (daily_number, self._type.id) if display_seed: for row in self.necrodb.get_daily_seed(params): text += "Seed: {}\n".format(row[0]) break no_entries = True rank = int(0) prior_result = '' #detect and handle ties rank_to_display = int(1) for row in self.necrodb.get_daily_times(params): name = row[0] lv = row[1] time = row[2] result_string = '' if lv == 18: result_string = racetime.to_str(time) elif lv == -1: continue else: result_string = level.to_str(lv) if result_string == '': result_string = "death" else: result_string = "death ({0})".format(result_string) rank += 1 no_entries = False # update the rank only if we've gotten a different result than the last entrant if not result_string == prior_result: #kinda hacky to use a string comparison here, but works for the moment rank_to_display = rank prior_result = result_string text += '{0: >3}. {1: <24} {2}\n'.format(rank_to_display, name, result_string) if no_entries: text += 'No entries yet.\n' text += '```' return text
def status_str(self): status = '' if self._state == RacerStatus['finished']: status += racetime.to_str(self.time) if not self.igt == -1: status += ' (igt {})'.format(racetime.to_str(self.igt)) else: status += RacerStatusInv[str(self._state)] if self._state == RacerStatus['forfeit']: status += ' (rta {}'.format(racetime.to_str(self.time)) if self.level > 0 and self.level < 18: status += ', ' + level.to_str(self.level) if not self.igt == -1: status += ', igt {}'.format(racetime.to_str(self.igt)) status += ')' if not self.comment == '': status += ': ' + self.comment return status
def _status_str(self, short): status = '' if self._state == RacerStatus['finished']: status += racetime.to_str(self.time) if not self.igt == -1 and not short: status += ' (igt {})'.format(racetime.to_str(self.igt)) else: status += RacerStatusInv[str(self._state)] if self._state == RacerStatus['forfeit'] and not short: status += ' (rta {}'.format(racetime.to_str(self.time)) if self.level > 0 and self.level < 18: status += ', ' + level.to_str(self.level) if not self.igt == -1: status += ', igt {}'.format(racetime.to_str(self.igt)) status += ')' if not self.comment == '' and not short: status += ': ' + self.comment return status