comestible_inventory_preset( const player &p ) : inventory_selector_preset(), p( p ) { append_cell( [ p, this ]( const item_location & loc ) { return good_bad_none( p.nutrition_for( get_comestible_item( loc ) ) ); }, _( "NUTRITION" ) ); append_cell( [ this ]( const item_location & loc ) { return good_bad_none( get_edible_comestible( loc ).quench ); }, _( "QUENCH" ) ); append_cell( [ p, this ]( const item_location & loc ) { return good_bad_none( p.fun_for( get_comestible_item( loc ) ).first ); }, _( "JOY" ) ); append_cell( [ this ]( const item_location & loc ) { const int spoils = get_edible_comestible( loc ).spoils; if( spoils > 0 ) { return to_string_clipped( time_duration::from_turns( spoils ) ); } return std::string(); }, _( "SPOILS IN" ) ); append_cell( [ this, &p ]( const item_location & loc ) { std::string cbm_name; switch( p.get_cbm_rechargeable_with( get_comestible_item( loc ) ) ) { case rechargeable_cbm::none: break; case rechargeable_cbm::battery: cbm_name = _( "Battery" ); break; case rechargeable_cbm::reactor: cbm_name = _( "Reactor" ); break; case rechargeable_cbm::furnace: cbm_name = _( "Furnace" ); break; } if( !cbm_name.empty() ) { return string_format( "<color_cyan>%s</color>", cbm_name.c_str() ); } return std::string(); }, _( "CBM" ) ); append_cell( [ this, &p ]( const item_location & loc ) { return good_bad_none( p.get_acquirable_energy( get_comestible_item( loc ) ) ); }, _( "ENERGY" ) ); }