def request_context(request, params): from django.utils.html import escape import re # protect against cross-site request forgery params.update(csrf(request)) # set up the URLs for the app-wide menus params['logout_url'] = '/paigow/logout' params['home_url'] = '/paigow/home' params['activities'] = ({'name': "New Game", 'url': '/paigow/game/new'}, ) params['is_mobile'] = re.match('.*mobile.*', request.META['HTTP_USER_AGENT'], re.IGNORECASE) params['is_firefox'] = re.match('.*mozilla.*', request.META['HTTP_USER_AGENT'], re.IGNORECASE) print request.META['HTTP_USER_AGENT'] print "is_mobile: " + str(params['is_mobile']) print "is_firefox: " + str(params['is_firefox']) # setup players and possible opponents player = session_player(request) params['player'] = player if (not player): request.session['player_id'] = None params['playername'] = None params['opponents'] = None params['opponent'] = None else: params['playername'] = escape(player.name) params['opponents'] = player.all_possible_opponents() if ('game' in params): game = params['game'] params['opponent'] = player.opponent_for_deal( game, params['deal_number']) params['title'] = "Pai Gow 321: " + escape(game.name) params['game_state'] = game.state() # set up the states params['tiles_are_set_state'] = PGPlayerInDeal.state_ui( PGPlayerInDeal.READY) params['setting_tiles_state'] = PGPlayerInDeal.state_ui( PGPlayerInDeal.SETTING_TILES) params['preview_hands_state'] = PGPlayerInDeal.state_ui( PGPlayerInDeal.PREVIEW_HANDS) return RequestContext(request, params)
def play_game(request, game_id, deal_number_str, params={}): from models.pgtile import PGTile from pghand import PGHand player_id = request.session.get('player_id', False) if (not player_id): return goto_home(request) player = PGPlayer.objects.get(id=player_id) # get the game from the db game = PGGame.with_id(game_id) if (not game): messages.add_message( request, messages.ERROR, "WTF? That game has disappeared into the ether (which doesn't exist)" ) return goto_home(request) params['game'] = game # get the deal number deal_number = int(deal_number_str) params['deal_number'] = deal_number # set the score for the other player. players_in_game = game.players() # make sure you're in the game: you can't look at other games. if not (player in players_in_game): messages.add_message( request, messages.ERROR, "I'm sorry, you are not allowed in that game, it's only for VIPs") return goto_home(request) # this sets up pig, don't get it fgirst params['pgsets'] = game.sets_for_player(session_player(request), deal_number) # set the game and score for you pid = game.player_in_deal(player, deal_number) params['score_player'] = game.score_as_of_deal_for_player( player, deal_number) # set up the opponent for the template opponent = session_player(request).opponent_for_deal(game, deal_number) # get your opponent's score #pido = game.player_in_deal( opponent, deal_number ) params['score_opponent'] = game.score_as_of_deal_for_player( opponent, deal_number) # create the hands for this player (sets_for_player should be called first) params['pgtile_size'] = "medium" params['current_player_state'] = PGPlayerInDeal.state_ui(pid.state()) return render_to_response('game_play.html', request_context(request, params))
def request_context( request, params ): from django.utils.html import escape import re # protect against cross-site request forgery params.update( csrf( request ) ) # set up the URLs for the app-wide menus params['logout_url'] = '/paigow/logout' params['home_url'] = '/paigow/home' params['activities'] = ( { 'name': "New Game", 'url': '/paigow/game/new' }, ) params['is_mobile'] = re.match( '.*mobile.*', request.META['HTTP_USER_AGENT'], re.IGNORECASE ) params['is_firefox'] = re.match( '.*mozilla.*', request.META['HTTP_USER_AGENT'], re.IGNORECASE ) print request.META['HTTP_USER_AGENT'] print "is_mobile: " + str(params['is_mobile']) print "is_firefox: " + str(params['is_firefox']) # setup players and possible opponents player = session_player( request ) params['player'] = player if ( not player ): request.session['player_id'] = None params['playername'] = None params['opponents'] = None params['opponent'] = None else: params['playername'] = escape(player.name) params['opponents'] = player.all_possible_opponents() if ( 'game' in params ): game = params['game'] params['opponent'] = player.opponent_for_deal( game, params['deal_number'] ) params['title'] = "Pai Gow 321: " + escape( game.name ) params['game_state'] = game.state() # set up the states params['tiles_are_set_state'] = PGPlayerInDeal.state_ui( PGPlayerInDeal.READY ) params['setting_tiles_state'] = PGPlayerInDeal.state_ui( PGPlayerInDeal.SETTING_TILES ) params['preview_hands_state'] = PGPlayerInDeal.state_ui( PGPlayerInDeal.PREVIEW_HANDS ) return RequestContext( request, params )
def play_game( request, game_id, deal_number_str, params = {} ): from models.pgtile import PGTile from pghand import PGHand player_id = request.session.get('player_id', False) if ( not player_id ): return goto_home( request ) player = PGPlayer.objects.get( id = player_id ) # get the game from the db game = PGGame.with_id( game_id ) if ( not game ): messages.add_message( request, messages.ERROR, "WTF? That game has disappeared into the ether (which doesn't exist)" ) return goto_home( request ) params['game'] = game # get the deal number deal_number = int( deal_number_str ) params['deal_number'] = deal_number # set the score for the other player. players_in_game = game.players() # make sure you're in the game: you can't look at other games. if not ( player in players_in_game ): messages.add_message( request, messages.ERROR, "I'm sorry, you are not allowed in that game, it's only for VIPs" ) return goto_home( request ) # this sets up pig, don't get it fgirst params['pgsets'] = game.sets_for_player( session_player( request ), deal_number ) # set the game and score for you pid = game.player_in_deal( player, deal_number ) params['score_player'] = game.score_as_of_deal_for_player( player, deal_number ) # set up the opponent for the template opponent = session_player( request ).opponent_for_deal( game, deal_number ) # get your opponent's score #pido = game.player_in_deal( opponent, deal_number ) params['score_opponent'] = game.score_as_of_deal_for_player( opponent, deal_number ) # create the hands for this player (sets_for_player should be called first) params['pgtile_size'] = "medium" params['current_player_state'] = PGPlayerInDeal.state_ui( pid.state() ) return render_to_response( 'game_play.html', request_context( request, params ) )