Storycraft: add 'list games my games', which is the open/in progress games the queryer is in

This commit is contained in:
Brian S. Stephan 2011-01-09 11:32:09 -06:00
parent ce7d9e8010
commit 26a510ff40
1 changed files with 42 additions and 1 deletions

View File

@ -75,7 +75,7 @@ class Storycraft(Module):
statuspattern = rootcommand + '\s+status(\s+(\d+)$|$)'
newgamepattern = rootcommand + '\s+new\s+game(\s+with\s+config\s+(.*)$|$)'
joingamepattern = rootcommand + '\s+join\s+game\s+(\d+)$'
listgamespattern = rootcommand + '\s+list\s+games\s+(open|in\s+progress|completed)$'
listgamespattern = rootcommand + '\s+list\s+games\s+(open|in progress|completed|my games)$'
startgamepattern = rootcommand + '\s+start\s+game\s+(\d+)$'
showlinepattern = rootcommand + '\s+game\s+(\d+)\s+show\s+line$'
addlinepattern = rootcommand + '\s+game\s+(\d+)\s+add\s+line\s+(.*)$'
@ -299,6 +299,8 @@ class Storycraft(Module):
games = self._get_in_progress_games()
elif category == 'completed':
games = self._get_completed_games()
elif category == 'my games':
games = self._get_active_games_with_player(nick)
if len(games) > 5:
# just list the game ids
@ -716,6 +718,45 @@ class Storycraft(Module):
return self._get_games_of_type('OPEN')
def _get_active_games_with_player(self, player_nick):
"""Return the in progress/open games that include the player nick."""
games = []
try:
# get the games of specified type and populate a list
db = self.get_db()
query = '''
SELECT game.id, game.round_mode, game.game_length, game.line_length,
game.random_method, game.lines_per_turn, game.status, game.owner_nick,
game.owner_userhost, game.start_time, game.end_time
FROM storycraft_game game
INNER JOIN storycraft_player player ON player.game_id = game.id
WHERE player.nick = ? AND (game.status = 'OPEN' OR game.status = 'IN PROGRESS')
'''
cursor = db.execute(query, (player_nick,))
results = cursor.fetchall()
for result in results:
game = self.StorycraftGame()
game.id = int(result['id'])
game.round_mode = int(result['round_mode'])
game.game_length = int(result['game_length'])
game.line_length = int(result['line_length'])
game.random_method = int(result['random_method'])
game.lines_per_turn = int(result['lines_per_turn'])
game.status = result['status']
game.owner_nick = result['owner_nick']
game.owner_userhost = result['owner_userhost']
game.start_time = result['start_time']
game.end_time = result['end_time']
games.append(game)
return games
except sqlite3.Error as e:
print('sqlite error: ' + str(e))
raise
def _get_games_of_type(self, game_type):
"""Return the games of the specified type."""