filter by gems (for windows)

develop
Myk Taylor 2023-04-17 01:05:25 -07:00
parent a7aded65e4
commit 77c2458900
No known key found for this signature in database
3 changed files with 12 additions and 0 deletions

@ -150,6 +150,7 @@ static const df::dfhack_material_category stone_cat(df::dfhack_material_category
static const df::dfhack_material_category wood_cat(df::dfhack_material_category::mask_wood);
static const df::dfhack_material_category metal_cat(df::dfhack_material_category::mask_metal);
static const df::dfhack_material_category glass_cat(df::dfhack_material_category::mask_glass);
static const df::dfhack_material_category gem_cat(df::dfhack_material_category::mask_gem);
static const df::dfhack_material_category clay_cat(df::dfhack_material_category::mask_clay);
static const df::dfhack_material_category cloth_cat(df::dfhack_material_category::mask_cloth);
static const df::dfhack_material_category silk_cat(df::dfhack_material_category::mask_silk);
@ -169,6 +170,9 @@ static void cache_matched(int16_t type, int32_t index) {
} else if (mi.matches(glass_cat)) {
DEBUG(status).print("cached glass material: %s (%d, %d)\n", mi.toString().c_str(), type, index);
mat_cache.emplace(mi.toString(), std::make_pair(mi, "glass"));
} else if (mi.matches(gem_cat)) {
DEBUG(status).print("cached gem material: %s (%d, %d)\n", mi.toString().c_str(), type, index);
mat_cache.emplace(mi.toString(), std::make_pair(mi, "gem"));
} else if (mi.matches(clay_cat)) {
DEBUG(status).print("cached clay material: %s (%d, %d)\n", mi.toString().c_str(), type, index);
mat_cache.emplace(mi.toString(), std::make_pair(mi, "clay"));
@ -800,6 +804,8 @@ static int setMaterialMaskFilter(lua_State *L) {
mask |= metal_cat.whole;
else if (cat == "glass")
mask |= glass_cat.whole;
else if (cat == "gem")
mask |= gem_cat.whole;
else if (cat == "clay")
mask |= clay_cat.whole;
else if (cat == "cloth")
@ -850,6 +856,7 @@ static int getMaterialMaskFilter(lua_State *L) {
ret.emplace("wood", !bits || bits & wood_cat.whole);
ret.emplace("metal", !bits || bits & metal_cat.whole);
ret.emplace("glass", !bits || bits & glass_cat.whole);
ret.emplace("gem", !bits || bits & gem_cat.whole);
ret.emplace("clay", !bits || bits & clay_cat.whole);
ret.emplace("cloth", !bits || bits & cloth_cat.whole);
ret.emplace("silk", !bits || bits & silk_cat.whole);
@ -897,6 +904,8 @@ static int setMaterialFilter(lua_State *L) {
mask.whole |= metal_cat.whole;
else if (mat.matches(glass_cat))
mask.whole |= glass_cat.whole;
else if (mat.matches(gem_cat))
mask.whole |= gem_cat.whole;
else if (mat.matches(clay_cat))
mask.whole |= clay_cat.whole;
else if (mat.matches(cloth_cat))

@ -111,6 +111,8 @@ function get_desc(filter)
desc = 'Ballista part'
elseif desc == 'Catapultpart' then
desc = 'Catapult part'
elseif desc == 'Smallgem' then
desc = 'Small, cut gem'
end
return desc

@ -452,6 +452,7 @@ function QualityAndMaterialsPage:refresh()
make_cat_choice('Wood', 'wood', 'CUSTOM_SHIFT_O', cats),
make_cat_choice('Metal', 'metal', 'CUSTOM_SHIFT_M', cats),
make_cat_choice('Glass', 'glass', 'CUSTOM_SHIFT_G', cats),
make_cat_choice('Gem', 'gem', 'CUSTOM_SHIFT_E', cats),
make_cat_choice('Clay', 'clay', 'CUSTOM_SHIFT_C', cats),
make_cat_choice('Cloth', 'cloth', 'CUSTOM_SHIFT_L', cats),
make_cat_choice('Silk', 'silk', 'CUSTOM_SHIFT_K', cats),