2 Models related to games.
5 from calendar import timegm
7 from xonstat.util import pretty_date, strip_colors, html_colors
15 def __init__(self, game_id=None, start_dt=None, game_type_cd=None,
16 server_id=None, map_id=None, winner=None):
17 self.game_id = game_id
18 self.start_dt = start_dt
19 self.game_type_cd = game_type_cd
20 self.server_id = server_id
25 return ("<Game({}, {}, {}, {})>"
26 .format(self.game_id, self.start_dt, self.game_type_cd, self.server_id))
30 'game_id': self.game_id,
31 'start': self.start_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
32 'game_type_cd': self.game_type_cd,
33 'server_id': self.server_id
37 return pretty_date(self.start_dt)
40 return timegm(self.start_dt.timetuple())
43 class PlayerGameStat(object):
45 The individual statistics a player has gained/lost during a game.
48 def __init__(self, player_game_stat_id=None, create_dt=None):
49 self.player_game_stat_id = player_game_stat_id
50 self.create_dt = create_dt
53 return "<PlayerGameStat({}, {}, {})>".format(self.player_id, self.game_id, self.create_dt)
57 'player_id': self.player_id,
58 'game_id': self.game_id,
59 'create_dt': self.create_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
60 'alivetime': self.alivetime,
66 def nick_stripped(self):
68 return "Anonymous Player"
70 return strip_colors(self.nick)
72 def nick_html_colors(self, limit=None):
74 return "Anonymous Player"
76 return html_colors(self.nick, limit)
78 def team_html_color(self):
89 class PlayerWeaponStat(object):
91 The metrics for a single weapon in a game for a player.
94 def __init__(self, player_id=None, game_id=None, weapon_cd=None):
95 self.player_id = player_id
96 self.game_id = game_id
97 self.weapon_cd = weapon_cd
105 return ("<PlayerWeaponStat({}, {}, {})>"
106 .format(self.player_weapon_stats_id, self.player_id, self.game_id))
110 'weapon_cd': self.weapon_cd,
111 'player_weapon_stats_id': self.player_weapon_stats_id,
112 'player_id': self.player_id,
113 'game_id': self.game_id,
117 'actual': self.actual,
122 class TeamGameStat(object):
127 def __init__(self, team_game_stat_id=None, create_dt=None):
128 self.team_game_stat_id = team_game_stat_id
129 self.create_dt = create_dt
132 return "<TeamGameStat({}, {}, {})>".format(self.team_game_stat_id, self.game_id, self.team)
136 'team_game_stat_id': self.team_game_stat_id,
137 'game_id': self.game_id,
140 'rounds': self.rounds,
142 'create_dt': self.create_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
145 # TODO: move this function to util
146 def team_html_color(self):
157 class PlayerGameAnticheat(object):
159 Anticheat metrics sent by the server to identify odd patterns.
162 def __init__(self, player_id=None, game_id=None, key=None, value=None, create_dt=None):
163 self.player_id = player_id
164 self.game_id = game_id
167 self.create_dt = create_dt
170 return "<PlayerGameAnticheat({}, {})>".format(self.key, self.value)
173 class GameType(object):
175 A particular type of game.
179 return "<GameType({}, {}, {})>".format(self.game_type_cd, self.descr, self.active_ind)
183 'game_type_cd': self.game_type_cd,
185 'active': self.active_ind,
189 class Weapon(object):
191 A particular type of weapon.
195 return "<Weapon({}, {}, {})>".format(self.weapon_cd, self.descr, self.active_ind)
199 'weapon_cd': self.weapon_cd,
201 'active': self.active_ind,