int positional_source::calculate_volume(const map_location &loc, const display &disp) { assert(range_ > 0); assert(faderange_ > 0); SDL_Rect area = disp.map_area(); map_location center = disp.hex_clicked_on(area.x + area.w / 2, area.y + area.h / 2); size_t distance = distance_between(loc, center); if(distance <= range_) { return 0; } return static_cast<int>(( ( (distance - range_) / (double) faderange_) * DISTANCE_SILENT)); }
int positional_source::calculate_volume(const map_location &loc, const display &disp) { assert(range_ > 0); assert(faderange_ > 0); if((check_shrouded_ && disp.shrouded(loc)) || (check_fogged_ && disp.fogged(loc))) return DISTANCE_SILENT; SDL_Rect area = disp.map_area(); map_location center = disp.hex_clicked_on(area.x + area.w / 2, area.y + area.h / 2); int distance = distance_between(loc, center); if(distance <= range_) { return 0; } return static_cast<int>((((distance - range_) / static_cast<double>(faderange_)) * DISTANCE_SILENT)); }