Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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