|
|
|
@ -233,7 +233,7 @@ namespace DFHack
|
|
|
|
|
/**
|
|
|
|
|
* zilpin: Find the first tile entry which matches the given search criteria.
|
|
|
|
|
* All parameters are optional.
|
|
|
|
|
* To omit, use the 'invalid' enum for that type (e.g. tileclass_invalid, tilematerial_invalid, etc)
|
|
|
|
|
* To omit, specify NONE for that type
|
|
|
|
|
* For tile directions, pass NULL to omit.
|
|
|
|
|
* @return matching index in tileTypeTable, or 0 if none found.
|
|
|
|
|
*/
|
|
|
|
@ -242,11 +242,18 @@ namespace DFHack
|
|
|
|
|
{
|
|
|
|
|
FOR_ENUM_ITEMS(tiletype, tt)
|
|
|
|
|
{
|
|
|
|
|
if (tshape != tiletype_shape::NONE && tshape != tileShape(tt)) continue;
|
|
|
|
|
if (tmat != tiletype_material::NONE && tmat != tileMaterial(tt)) continue;
|
|
|
|
|
if (tvar != tiletype_variant::NONE && tvar != tileVariant(tt)) continue;
|
|
|
|
|
if (tspecial != tiletype_special::NONE && tspecial != tileSpecial(tt)) continue;
|
|
|
|
|
if (tdir && tdir != tileDirection(tt)) continue;
|
|
|
|
|
if (tshape != tiletype_shape::NONE && tshape != tileShape(tt))
|
|
|
|
|
continue;
|
|
|
|
|
if (tmat != tiletype_material::NONE && tmat != tileMaterial(tt))
|
|
|
|
|
continue;
|
|
|
|
|
// Don't require variant to match if the destination tile doesn't even have one
|
|
|
|
|
if (tvar != tiletype_variant::NONE && tvar != tileVariant(tt) && tileVariant(tt) != tiletype_variant::NONE)
|
|
|
|
|
continue;
|
|
|
|
|
// Same for special
|
|
|
|
|
if (tspecial != tiletype_special::NONE && tspecial != tileSpecial(tt) && tileSpecial(tt) != tiletype_special::NONE)
|
|
|
|
|
continue;
|
|
|
|
|
if (tdir && tdir != tileDirection(tt))
|
|
|
|
|
continue;
|
|
|
|
|
// Match!
|
|
|
|
|
return tt;
|
|
|
|
|
}
|
|
|
|
|