def assign_character(request, caller_context, container_user): ''' data only call, json response ''' characterController = CharacterController() logging.info('request is: %s' % request) if container_user.character: json = '{ "success" : true, "message" : "character already assign to this user" }' return HttpResponse(json) if not 'character_name' in request.REQUEST: json = '{ "success" : false, "message" : "Missing required field \'character_name\'" }' return HttpResponse(json) character_name = request.REQUEST['character_name'].strip() character_name = characterController.unquote_u(character_name) character_name = re.sub(r'[\'\"<>`]', ' ', character_name) character = Character.get_by_key_name(character_name) if character: container_users = characterController.get_character_users(character) if len(container_users): # no other container_user has this character, was probably an error in assignment for this user, so assign it now container_user.character = character json = '{ "success" : true, "message" : "Found existing character and assigned it to user" }' return HttpResponse(json) json = '{ "success" : false, "message" : "Character name is already in use" }' return HttpResponse(json) character = characterController.create_character(caller_context.config, character_name, container_user.profile_image_url, is_fake=False) container_user.character = character container_user.put() response = { "success" : True, "message" : "Successfully associated character to container user" } return json_response(caller_context, container_user, response, False)
def cover_square(request, caller_context, container_user, chamber_character_name, grid_pos_x, grid_pos_y): ''' data only call, json response ''' chamberController = ChamberController() chamber_character = Character.get_by_key_name(chamber_character_name) if not chamber_character: raise Exception('chamber owner character not found') uncover_square_result, info = chamberController.cover_dig_square(caller_context.config, container_user, chamber_character, int(grid_pos_x), int(grid_pos_y)) if uncover_square_result: square = info # if success, info contains the item to return response_square = { 'gridPosX' : square.position_x, 'gridPosY' : square.position_y } response = { 'success' : True, 'square' : response_square } else: response = { 'success' : False, 'reason' : info } include_experience_data = False return json_response(caller_context, container_user, response, include_experience_data)
def chamber(request, caller_context, container_user, chamber_character_name=None): chamberController = ChamberController() if chamber_character_name: chamber_character = Character.get_by_key_name(chamber_character_name) else: chamber_character = container_user.character viewer_owns_chamber = False if chamber_character.key() == container_user.character.key(): viewer_owns_chamber = True chamber_display = chamberController.get_chamber_display(caller_context.config, container_user.character, chamber_character) return render_to_response('chamber.html', locals())
def uncover_square(request, caller_context, container_user, chamber_character_name, grid_pos_x, grid_pos_y): ''' data only call, json response ''' chamberController = ChamberController() chamber_character = Character.get_by_key_name(chamber_character_name) if not chamber_character: raise Exception('chamber owner character not found') uncover_square_result, info, air_level = chamberController.uncover_dig_square(caller_context.config, container_user, chamber_character, int(grid_pos_x), int(grid_pos_y)) if uncover_square_result: square = info # if success, info contains the item to return response_square = { 'gridPosX' : square.position_x, 'gridPosY' : square.position_y, } if square.item: response_square['item'] = { 'itemName' : square.item.item_name, 'description' : square.item.description, 'smallImageUrl' : caller_context.static_root + square.item.get_small_image_path(), 'largeImageUrl' : caller_context.static_root + square.item.get_large_image_path() } else: response_square['item'] = None response = { 'success' : True, 'airLevel' : air_level, 'square' : response_square } else: response = { 'success' : False, 'reason' : info } include_experience_data = False if uncover_square_result and square.item: characterController = CharacterController() characterController.add_character_reward(container_user.character, "found grid treasure", 'experience', 75) include_experience_data = True return json_response(caller_context, container_user, response, include_experience_data)
def get_fake_characters(self, max_characters): # grab some fake players to fill most of the pyramid query = Character.all() query.filter('is_fake', True) fake_characters = query.fetch(max_characters) return fake_characters