Merge pull request #3252 from myk002/myk_buildingplan_gems

[buildingplan] filter by gems
develop
Myk 2023-04-17 01:09:05 -07:00 committed by GitHub
commit 3996f2cc0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 1 deletions

@ -439,6 +439,7 @@ bool MaterialInfo::matches(const df::dfhack_material_category &cat) const
return true; return true;
if (cat.bits.milk && linear_index(material->reaction_product.id, std::string("CHEESE_MAT")) >= 0) if (cat.bits.milk && linear_index(material->reaction_product.id, std::string("CHEESE_MAT")) >= 0)
return true; return true;
TEST(gem, IS_GEM);
return false; return false;
} }

@ -1 +1 @@
Subproject commit 43059670e7d3338d9a164bc23d0c41994187de9c Subproject commit 1413d3c67c5bd85e6afbef45d8b1ade6b8389ede

@ -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 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 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 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 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 cloth_cat(df::dfhack_material_category::mask_cloth);
static const df::dfhack_material_category silk_cat(df::dfhack_material_category::mask_silk); 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)) { } else if (mi.matches(glass_cat)) {
DEBUG(status).print("cached glass material: %s (%d, %d)\n", mi.toString().c_str(), type, index); 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")); 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)) { } else if (mi.matches(clay_cat)) {
DEBUG(status).print("cached clay material: %s (%d, %d)\n", mi.toString().c_str(), type, index); 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")); mat_cache.emplace(mi.toString(), std::make_pair(mi, "clay"));
@ -800,6 +804,8 @@ static int setMaterialMaskFilter(lua_State *L) {
mask |= metal_cat.whole; mask |= metal_cat.whole;
else if (cat == "glass") else if (cat == "glass")
mask |= glass_cat.whole; mask |= glass_cat.whole;
else if (cat == "gem")
mask |= gem_cat.whole;
else if (cat == "clay") else if (cat == "clay")
mask |= clay_cat.whole; mask |= clay_cat.whole;
else if (cat == "cloth") else if (cat == "cloth")
@ -850,6 +856,7 @@ static int getMaterialMaskFilter(lua_State *L) {
ret.emplace("wood", !bits || bits & wood_cat.whole); ret.emplace("wood", !bits || bits & wood_cat.whole);
ret.emplace("metal", !bits || bits & metal_cat.whole); ret.emplace("metal", !bits || bits & metal_cat.whole);
ret.emplace("glass", !bits || bits & glass_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("clay", !bits || bits & clay_cat.whole);
ret.emplace("cloth", !bits || bits & cloth_cat.whole); ret.emplace("cloth", !bits || bits & cloth_cat.whole);
ret.emplace("silk", !bits || bits & silk_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; mask.whole |= metal_cat.whole;
else if (mat.matches(glass_cat)) else if (mat.matches(glass_cat))
mask.whole |= glass_cat.whole; mask.whole |= glass_cat.whole;
else if (mat.matches(gem_cat))
mask.whole |= gem_cat.whole;
else if (mat.matches(clay_cat)) else if (mat.matches(clay_cat))
mask.whole |= clay_cat.whole; mask.whole |= clay_cat.whole;
else if (mat.matches(cloth_cat)) else if (mat.matches(cloth_cat))

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

@ -452,6 +452,7 @@ function QualityAndMaterialsPage:refresh()
make_cat_choice('Wood', 'wood', 'CUSTOM_SHIFT_O', cats), make_cat_choice('Wood', 'wood', 'CUSTOM_SHIFT_O', cats),
make_cat_choice('Metal', 'metal', 'CUSTOM_SHIFT_M', cats), make_cat_choice('Metal', 'metal', 'CUSTOM_SHIFT_M', cats),
make_cat_choice('Glass', 'glass', 'CUSTOM_SHIFT_G', 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('Clay', 'clay', 'CUSTOM_SHIFT_C', cats),
make_cat_choice('Cloth', 'cloth', 'CUSTOM_SHIFT_L', cats), make_cat_choice('Cloth', 'cloth', 'CUSTOM_SHIFT_L', cats),
make_cat_choice('Silk', 'silk', 'CUSTOM_SHIFT_K', cats), make_cat_choice('Silk', 'silk', 'CUSTOM_SHIFT_K', cats),