st.push_back(FilterStatement());
if(condition)
- condition->add_lines(st);
+ {
+ Condition *flat = condition->flatten();
+ if(flat)
+ {
+ flat->add_lines(st);
+ delete flat;
+ }
+ // TODO handle the case of the entire condition being non-viable
+ }
}
{
add("and", &Loader::and_);
add("base_type", &Loader::condition<BaseTypeCondition>);
+ add("category", &Loader::category);
add("class", &Loader::condition<ClassCondition>);
add_range<DropLevelCondition>("drop_level");
add_range<HeightCondition>("height");
add_range<ItemLevelCondition>("item_level");
add("linked_colors", &Loader::linked_colors);
add_range<LinkedSocketsCondition>("linked_sockets");
+ add_range<MapTierCondition>("map_tier");
add_range<SocketsCondition>("sockets");
add("or", &Loader::or_);
add_range<QualityCondition>("quality");
add_condition(cond.release());
}
+void Category::Loader::category(const string &name)
+{
+ const Category &categ = poe.get_category(name);
+ add_condition(categ.condition->clone());
+}
+
template<typename T>
void Category::Loader::condition(typename T::Type value)
{