本文整理汇总了C++中witcher::Object::getArea方法的典型用法代码示例。如果您正苦于以下问题:C++ Object::getArea方法的具体用法?C++ Object::getArea怎么用?C++ Object::getArea使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类witcher::Object
的用法示例。
在下文中一共展示了Object::getArea方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getNearestObjectByTag
void Functions::getNearestObjectByTag(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Object *) 0;
const Common::UString &tag = ctx.getParams()[0].getString();
if (tag.empty())
return;
Witcher::Object *target = Witcher::ObjectContainer::toObject(getParamObject(ctx, 1));
if (!target)
return;
size_t nth = MAX<int32>(ctx.getParams()[2].getInt() - 1, 0);
Common::ScopedPtr<Aurora::NWScript::ObjectSearch> search(_game->getModule().findObjectsByTag(tag));
Aurora::NWScript::Object *object = 0;
std::list<Object *> objects;
while ((object = search->next())) {
// Needs to be a valid object, not the target, but in the target's area
Witcher::Object *witcherObject = Witcher::ObjectContainer::toObject(object);
if (!witcherObject || (witcherObject == target) || (witcherObject->getArea() != target->getArea()))
continue;
objects.push_back(witcherObject);
}
objects.sort(ObjectDistanceSort(*target));
std::list<Object *>::iterator it = objects.begin();
for (size_t n = 0; (n < nth) && (it != objects.end()); ++n)
++it;
if (it != objects.end())
ctx.getReturn() = *it;
}
示例2: getArea
void Functions::getArea(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Aurora::NWScript::Object *) 0;
Witcher::Object *object = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (object)
ctx.getReturn() = (Aurora::NWScript::Object *) object->getArea();
}
示例3: getNearestObject
void Functions::getNearestObject(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Aurora::NWScript::Object *) 0;
Witcher::Object *target = Witcher::ObjectContainer::toObject(getParamObject(ctx, 1));
if (!target)
return;
// Bitfield of type(s) to check for
uint32 type = ctx.getParams()[0].getInt();
// We want the nth nearest object
size_t nth = MAX<int32>(ctx.getParams()[2].getInt() - 1, 0);
Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjects();
Aurora::NWScript::Object *object = 0;
std::list<Object *> objects;
while ((object = search->next())) {
// Needs to be a valid object, not the target, but in the target's area
Witcher::Object *witcherObject = Witcher::ObjectContainer::toObject(object);
if (!witcherObject || (witcherObject == target) || (witcherObject->getArea() != target->getArea()))
continue;
// Ignore invalid object types
const uint32 objectType = (uint32) witcherObject->getType();
if (objectType >= kObjectTypeMAX)
continue;
if (type & objectType)
objects.push_back(witcherObject);
}
delete search;
objects.sort(ObjectDistanceSort(*target));
std::list<Object *>::iterator it = objects.begin();
for (size_t n = 0; (n < nth) && (it != objects.end()); ++n)
++it;
if (it != objects.end())
ctx.getReturn() = *it;
}
示例4: actionMoveToObject
void Functions::actionMoveToObject(Aurora::NWScript::FunctionContext &ctx) {
Witcher::Object *object = Witcher::ObjectContainer::toObject(ctx.getCaller());
Witcher::Object *moveTo = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!object || !moveTo)
return;
float x, y, z;
moveTo->getPosition(x, y, z);
jumpTo(object, moveTo->getArea(), x, y, z);
unimplementedFunction(ctx);
}
示例5: jumpToObject
void Functions::jumpToObject(Aurora::NWScript::FunctionContext &ctx) {
// TODO: walkStraightLineToPoint
// bool walkStraightLineToPoint = ctx.getParams()[1].getInt() != 0;
Witcher::Object *object = Witcher::ObjectContainer::toObject(ctx.getCaller());
Witcher::Object *moveTo = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!object || !moveTo)
return;
float x, y, z;
moveTo->getPosition(x, y, z);
jumpTo(object, moveTo->getArea(), x, y, z);
}
示例6: getNearestCreature
void Functions::getNearestCreature(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Aurora::NWScript::Object *) 0;
Witcher::Object *target = Witcher::ObjectContainer::toObject(getParamObject(ctx, 2));
if (!target)
return;
size_t nth = MAX<int32>(ctx.getParams()[3].getInt() - 1, 0);
/* TODO: Criteria:
*
* int crit1Type = ctx.getParams()[0].getInt();
* int crit1Value = ctx.getParams()[1].getInt();
* int crit2Type = ctx.getParams()[4].getInt();
* int crit2Value = ctx.getParams()[5].getInt();
* int crit3Type = ctx.getParams()[6].getInt();
* int crit3Value = ctx.getParams()[7].getInt();
*/
Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjects();
Aurora::NWScript::Object *object = 0;
std::list<Object *> creatures;
while ((object = search->next())) {
Creature *creature = Witcher::ObjectContainer::toCreature(object);
if (creature && (creature != target) && (creature->getArea() == target->getArea()))
creatures.push_back(creature);
}
delete search;
creatures.sort(ObjectDistanceSort(*target));
std::list<Object *>::iterator it = creatures.begin();
for (size_t n = 0; (n < nth) && (it != creatures.end()); ++n)
++it;
if (it != creatures.end())
ctx.getReturn() = *it;
}