// When displaying the names of partially-consumed items, show the percentage remaining // Potentially useful for revealing why random pieces of cloth or thread aren't suitable for jobs #define DEFINE_PARTIAL_ITEM_TWEAK(TYPE, DIM) \ struct partial_items_hook_##TYPE : df::item_##TYPE##st { \ typedef df::item_##TYPE##st interpose_base; \ DEFINE_VMETHOD_INTERPOSE(void, getItemDescription, (std::string *str, int8_t plurality)) \ { \ INTERPOSE_NEXT(getItemDescription)(str, plurality); \ if (dimension != DIM) \ str->append(stl_sprintf(" (%i%%)", std::max(1, dimension * 100 / DIM))); \ } \ }; \ IMPLEMENT_VMETHOD_INTERPOSE(partial_items_hook_##TYPE, getItemDescription); DEFINE_PARTIAL_ITEM_TWEAK(bar, 150) DEFINE_PARTIAL_ITEM_TWEAK(drink, 150) DEFINE_PARTIAL_ITEM_TWEAK(glob, 150) DEFINE_PARTIAL_ITEM_TWEAK(liquid_misc, 150) DEFINE_PARTIAL_ITEM_TWEAK(powder_misc, 150) DEFINE_PARTIAL_ITEM_TWEAK(cloth, 10000) DEFINE_PARTIAL_ITEM_TWEAK(sheet, 10000) DEFINE_PARTIAL_ITEM_TWEAK(thread, 15000)