本文整理汇总了C++中Place::getThingsByName方法的典型用法代码示例。如果您正苦于以下问题:C++ Place::getThingsByName方法的具体用法?C++ Place::getThingsByName怎么用?C++ Place::getThingsByName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Place
的用法示例。
在下文中一共展示了Place::getThingsByName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
void LookAction::execute(Player *player, Command *command, Game *game) {
string object = command->getDirectObject();
if (object.length() == 0) {
object = command->getIndirectObject();
}
if (object.length() == 0) {
player->getLocation()->observe(player, true, true);
}
else {
Place *location = player->getLocation();
// Note: I can't use list.merge(), because ObjectList and ThingList are
// of different types :'(
ThingList items;
// consider matching inventory items, if there are any
ObjectListCItPair invItems = player->getInventoryObjectsByName(object);
for (ObjectListCIt i = invItems.begin; i != invItems.end; i++) {
items.push_front(*i);
}
// also consider matching items in the room, if there are any
ThingListCItPair roomItems = location->getThingsByName(object);
for (ThingListCIt i = roomItems.begin; i != roomItems.end; i++) {
items.push_front(*i);
}
if (0 == items.size()) {
player->out("display") << "There is no " << object << " here!" << endl;
return;
}
ThingListCItPair itemsIt;
itemsIt.begin = items.begin();
itemsIt.end = items.end();
try {
Thing *thing =
Entity::clarifyEntity<ThingListCItPair, ThingListCIt, Thing *>(itemsIt,
player);
thing->observe(player, true, true);
}
catch (string name) {
player->out("display") << "There is no " << name << " here!" << endl;
}
}
}