def do_uncover(config, character, chamber_character, grid_pos_x, grid_pos_y): key_name = '%s_%s' % (character.key().name(), chamber_character.key().name()) hunt_zone_status = Hunt_zone_user_status.get_by_key_name( parent=chamber_character, key_names=key_name) if not hunt_zone_status: logging.error('no user status found for this hunt zone') return False, 'Could not determine air status', None if hunt_zone_status.air_level < 1: return False, 'Not enough air', None #don't change text without changing JS. String match. square, reason = self.get_hunt_square(chamber_character, grid_pos_x, grid_pos_y) if not square: return False, reason, None if not square.covered: logging.debug('square %s already uncovered') return True, square, None # return False, 'square was already revealed' square.covered = False hunt_zone_status.air_level -= 1 hunt_zone_status.updated = datetime.utcnow() db.put([square, hunt_zone_status]) return True, square, hunt_zone_status.air_level
def get_chamber_display(self, config, logged_in_character, chamber_character): chamber_display = {} query = Inventory_item.all().ancestor(chamber_character) query.filter('position_y >', 0) # only pull items that are on display query.order('position_y').order('position_x') display_items = query.fetch(1000) chamber_display['display_items'] = display_items chamber_display['character'] = chamber_character hunt_grid = chamber_character.get_hunt_grid() chamber_display['hunt_grid'] = hunt_grid key_name = '%s_%s' % (logged_in_character.key().name(), chamber_character.key().name()) hunt_zone_status = Hunt_zone_user_status.get_by_key_name(key_names = key_name, parent = chamber_character) if hunt_zone_status: elapsed_time = datetime.utcnow() - hunt_zone_status.updated total_seconds = (elapsed_time.microseconds + (elapsed_time.seconds + elapsed_time.days * 24 * 3600) * 10**6) / 10**6 #elapsed_minutes = total_seconds / 60 elapsed_hours = total_seconds / 3600 air_per_hour = float(config.hunt_zone_air_capacity) / float(config.hunt_zone_air_replenish_hours) new_air = int(elapsed_hours * air_per_hour) hunt_zone_status.air_level = new_air + hunt_zone_status.air_level if hunt_zone_status.air_level > config.hunt_zone_air_capacity: hunt_zone_status.air_level = config.hunt_zone_air_capacity else: hunt_zone_status = Hunt_zone_user_status(parent = chamber_character, key_name = key_name, chamber_character = chamber_character, huntging_character = logged_in_character, air_level = config.hunt_zone_air_capacity, updated = datetime.utcnow()) hunt_zone_status.put() chamber_display['hunt_zone_user_status'] = hunt_zone_status return chamber_display
def get_chamber_display(self, config, logged_in_character, chamber_character): chamber_display = {} query = Inventory_item.all().ancestor(chamber_character) query.filter('position_y >', 0) # only pull items that are on display query.order('position_y').order('position_x') display_items = query.fetch(1000) chamber_display['display_items'] = display_items chamber_display['character'] = chamber_character hunt_grid = chamber_character.get_hunt_grid() chamber_display['hunt_grid'] = hunt_grid key_name = '%s_%s' % (logged_in_character.key().name(), chamber_character.key().name()) hunt_zone_status = Hunt_zone_user_status.get_by_key_name( key_names=key_name, parent=chamber_character) if hunt_zone_status: elapsed_time = datetime.utcnow() - hunt_zone_status.updated total_seconds = (elapsed_time.microseconds + (elapsed_time.seconds + elapsed_time.days * 24 * 3600) * 10**6) / 10**6 #elapsed_minutes = total_seconds / 60 elapsed_hours = total_seconds / 3600 air_per_hour = float(config.hunt_zone_air_capacity) / float( config.hunt_zone_air_replenish_hours) new_air = int(elapsed_hours * air_per_hour) hunt_zone_status.air_level = new_air + hunt_zone_status.air_level if hunt_zone_status.air_level > config.hunt_zone_air_capacity: hunt_zone_status.air_level = config.hunt_zone_air_capacity else: hunt_zone_status = Hunt_zone_user_status( parent=chamber_character, key_name=key_name, chamber_character=chamber_character, huntging_character=logged_in_character, air_level=config.hunt_zone_air_capacity, updated=datetime.utcnow()) hunt_zone_status.put() chamber_display['hunt_zone_user_status'] = hunt_zone_status return chamber_display
def do_uncover(config, character, chamber_character, grid_pos_x, grid_pos_y): key_name = '%s_%s' % (character.key().name(), chamber_character.key().name()) hunt_zone_status = Hunt_zone_user_status.get_by_key_name(parent = chamber_character, key_names = key_name) if not hunt_zone_status: logging.error('no user status found for this hunt zone') return False, 'Could not determine air status', None if hunt_zone_status.air_level < 1: return False, 'Not enough air', None #don't change text without changing JS. String match. square, reason = self.get_hunt_square(chamber_character, grid_pos_x, grid_pos_y) if not square: return False, reason, None if not square.covered: logging.debug('square %s already uncovered') return True, square, None # return False, 'square was already revealed' square.covered = False hunt_zone_status.air_level -= 1 hunt_zone_status.updated = datetime.utcnow() db.put([square, hunt_zone_status]) return True, square, hunt_zone_status.air_level