2 Models related to games.
5 from xonstat.models.mixins import FuzzyDateMixin, EpochMixin
6 from xonstat.util import strip_colors, html_colors
9 class Game(FuzzyDateMixin, EpochMixin):
14 def __init__(self, game_id=None, start_dt=None, game_type_cd=None, server_id=None, map_id=None,
16 self.game_id = game_id
17 self.start_dt = start_dt
18 self.game_type_cd = game_type_cd
19 self.server_id = server_id
24 return "<Game({0.game_id}, {0.start_dt}, {0.game_type_cd}, {0.server_id})>".format(self)
28 'game_id': self.game_id,
29 'start': self.start_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
30 'game_type_cd': self.game_type_cd,
31 'server_id': self.server_id
35 class PlayerGameStat(object):
37 The individual statistics a player has gained/lost during a game.
40 def __init__(self, player_game_stat_id=None, create_dt=None):
41 self.player_game_stat_id = player_game_stat_id
42 self.create_dt = create_dt
45 return "<PlayerGameStat({0.player_id}, {0.game_id}, {0.create_dt})>".format(self)
49 'player_id': self.player_id,
50 'game_id': self.game_id,
51 'create_dt': self.create_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
52 'alivetime': self.alivetime,
58 def nick_stripped(self):
60 return "Anonymous Player"
62 return strip_colors(self.nick)
64 def nick_html_colors(self, limit=None):
66 return "Anonymous Player"
68 return html_colors(self.nick, limit)
70 def team_html_color(self):
81 class PlayerWeaponStat(object):
83 The metrics for a single weapon in a game for a player.
86 def __init__(self, player_id=None, game_id=None, weapon_cd=None):
87 self.player_id = player_id
88 self.game_id = game_id
89 self.weapon_cd = weapon_cd
97 return ("<PlayerWeaponStat({0.player_weapon_stats_id}, {0.player_id}, {0.game_id})>"
102 'weapon_cd': self.weapon_cd,
103 'player_weapon_stats_id': self.player_weapon_stats_id,
104 'player_id': self.player_id,
105 'game_id': self.game_id,
109 'actual': self.actual,
114 class TeamGameStat(object):
119 def __init__(self, team_game_stat_id=None, create_dt=None):
120 self.team_game_stat_id = team_game_stat_id
121 self.create_dt = create_dt
124 return "<TeamGameStat({0.team_game_stat_id}, {0.game_id}, {0.team})>".format(self)
128 'team_game_stat_id': self.team_game_stat_id,
129 'game_id': self.game_id,
132 'rounds': self.rounds,
134 'create_dt': self.create_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
137 # TODO: move this function to util
138 def team_html_color(self):
149 class PlayerGameAnticheat(object):
151 Anticheat metrics sent by the server to identify odd patterns.
154 def __init__(self, player_id=None, game_id=None, key=None, value=None, create_dt=None):
155 self.player_id = player_id
156 self.game_id = game_id
159 self.create_dt = create_dt
162 return "<PlayerGameAnticheat({0.key}, {0.value})>".format(self)
165 class GameType(object):
167 A particular type of game.
171 return "<GameType({0.game_type_cd}, {0.descr}, {0.active_ind})>".format(self)
175 'game_type_cd': self.game_type_cd,
177 'active': self.active_ind,
181 class Weapon(object):
183 A particular type of weapon.
187 return "<Weapon({0.weapon_cd}, {0.descr}, {0.active_ind})>".format(self)
191 'weapon_cd': self.weapon_cd,
193 'active': self.active_ind,