X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=xonstat%2Fbatch%2Fbadges%2Fskin.py;h=edcb2eb4acde76cff706f71b9008abac03d05e73;hb=28d58d8083c1d244643a8480cd33c16dca0f477b;hp=740b442bfdbc7be74b261e8b5fc7187157ba923d;hpb=d6655079d4cdabf00d13401a1ef72b1854b79c45;p=xonotic%2Fxonstat.git diff --git a/xonstat/batch/badges/skin.py b/xonstat/batch/badges/skin.py index 740b442..edcb2eb 100644 --- a/xonstat/batch/badges/skin.py +++ b/xonstat/batch/badges/skin.py @@ -204,18 +204,16 @@ class Skin: # make sorted list of gametypes game_types = [] - num_games = 0 - for gt,info in data['games_played'].items(): - if gt == "overall": + for gt in data['games_played'].keys(): + if gt == 'overall': continue - if info.games > num_games: - game_types.insert(0, gt) - else: - game_types.append(gt) - - # make sure gametypes list if sorted correctly (number of games, descending) - game_types = sorted(game_types, key=lambda x: data['games_played'][x].games, reverse=True) + if elos.has_key(gt): + game_types.append(gt) # only uses gametypes with elo values (needed later on) + ## make sure gametypes list if sorted correctly (number of games, descending) + ##game_types = sorted(game_types, key=lambda x: data['games_played'][x].games, reverse=True) + # make sure gametypes list if sorted correctly (total playing time per game type, descending) + game_types = sorted(game_types, key=lambda x: data['overall_stats'][x].total_playing_time, reverse=True) # build image @@ -298,7 +296,7 @@ class Skin: space_w -= tw # this hilarious code should determine the spacing between characters - sep_w = 0.25*space_w + sep_w = 0.2*space_w if sep_w <= 0: sep_w = 1 @@ -341,17 +339,17 @@ class Skin: ctx.show_text(txt.encode("utf-8")) tw += (len(txt)-len(txt.strip())) * space_w # account for lost whitespaces - xoffset += tw + sep_w + xoffset += int(tw + sep_w) ## print elos and ranks xoffset, yoffset = 0, 0 count = 0 for gt in game_types[:self.num_gametypes]: - if not elos.has_key(gt) or not ranks.has_key(gt): + if not elos.has_key(gt): continue count += 1 - + # re-align segments if less than max. gametypes are shown if count > 0: if count < self.num_gametypes: @@ -365,7 +363,7 @@ class Skin: # show a number gametypes the player has participated in for gt in game_types[:self.num_gametypes]: - if not elos.has_key(gt) or not ranks.has_key(gt): + if not elos.has_key(gt): # should not happen continue offset = (xoffset, yoffset) @@ -382,7 +380,10 @@ class Skin: self.set_font(self.elo_fontsize, self.elo_color) self.show_text(txt, self.elo_pos, self.elo_align, offset=offset) if self.rank_pos: - txt = self.rank_text % ranks[gt] + if ranks.has_key(gt): + txt = self.rank_text % ranks[gt] + else: + txt = "(preliminary)" self.set_font(self.rank_fontsize, self.rank_color) self.show_text(txt, self.rank_pos, self.rank_align, offset=offset) @@ -410,16 +411,16 @@ class Skin: try: txt = "%.2f%%" % round(win_pct, 2) except: - win_pct = 0 + win_pct = 0. if self.winp_pos: - if win_pct >= 0.5: - nr = 2*(win_pct-0.5) + if win_pct >= 50.0: + nr = 2*(win_pct/100-0.5) r = nr*self.winp_colortop[0] + (1-nr)*self.winp_colormid[0] g = nr*self.winp_colortop[1] + (1-nr)*self.winp_colormid[1] b = nr*self.winp_colortop[2] + (1-nr)*self.winp_colormid[2] else: - nr = 2*win_pct + nr = 2*(win_pct/100) r = nr*self.winp_colormid[0] + (1-nr)*self.winp_colorbot[0] g = nr*self.winp_colormid[1] + (1-nr)*self.winp_colorbot[1] b = nr*self.winp_colormid[2] + (1-nr)*self.winp_colorbot[2]