本文整理汇总了C++中vconfig::all_ordered方法的典型用法代码示例。如果您正苦于以下问题:C++ vconfig::all_ordered方法的具体用法?C++ vconfig::all_ordered怎么用?C++ vconfig::all_ordered使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类vconfig
的用法示例。
在下文中一共展示了vconfig::all_ordered方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fill
//.........这里部分代码省略.........
}
}
);
create_attribute(literal["find_in"],
[](const config::attribute_value& c) { return c.str(); },
[](const std::string& find_in, const unit_filter_args& args)
{
// Allow filtering by searching a stored variable of units
if (const game_data * gd = args.fc->get_game_data()) {
try
{
for (const config& c : gd->get_variable_access_read(find_in).as_array())
{
if(c["id"] == args.u.id()) {
return true;
}
}
return false;
}
catch(const invalid_variablename_exception&)
{
return false;
}
}
return true;
}
);
if (!literal["x"].blank() || !literal["y"].blank()) {
children_.emplace_back(new unit_filter_xy(literal["x"], literal["y"]));
}
for(auto child : cfg.all_ordered()) {
CONDITIONAL_TYPE cond;
if(cond.parse(child.first)) {
cond_children_.emplace_back(std::piecewise_construct_t(), std::make_tuple(cond), std::make_tuple(child.second));
}
else if (child.first == "filter_wml") {
create_child(child.second, [](const vconfig& c, const unit_filter_args& args) {
config fwml = c.get_parsed_config();
/* Check if the filter only cares about variables.
If so, no need to serialize the whole unit. */
config::all_children_itors ci = fwml.all_children_range();
if (fwml.all_children_count() == 1 && fwml.attribute_count() == 1 && ci.front().key == "variables") {
return args.u.variables().matches(ci.front().cfg);
} else {
config ucfg;
args.u.write(ucfg);
return ucfg.matches(fwml);
}
});
}
else if (child.first == "filter_vision") {
create_child(child.second, [](const vconfig& c, const unit_filter_args& args) {
std::set<int> viewers;
side_filter ssf(c, args.fc);
std::vector<int> sides = ssf.get_teams();
viewers.insert(sides.begin(), sides.end());
for (const int viewer : viewers) {
bool fogged = args.fc->get_disp_context().get_team(viewer).fogged(args.loc);
bool hiding = args.u.invisible(args.loc, args.fc->get_disp_context()) && args.fc->get_disp_context().get_team(viewer).is_enemy(args.u.side());
bool unit_hidden = fogged || hiding;
if (c["visible"].to_bool(true) != unit_hidden) {