Skip to content

Commit

Permalink
NWN2: Use ScopedPtr for the area object searches
Browse files Browse the repository at this point in the history
  • Loading branch information
DrMcCoy committed Oct 26, 2016
1 parent 02e4b21 commit 2f68738
Showing 1 changed file with 10 additions and 18 deletions.
28 changes: 10 additions & 18 deletions src/engines/nwn2/script/functions_object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
* Neverwinter Nights 2 engine functions messing with objects.
*/

#include "src/common/scopedptr.h"
#include "src/common/util.h"

#include "src/aurora/nwscript/functioncontext.h"
Expand Down Expand Up @@ -198,12 +199,11 @@ void Functions::getObjectByTag(Aurora::NWScript::FunctionContext &ctx) {

int nth = ctx.getParams()[1].getInt();

Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjectsByTag(tag);
Common::ScopedPtr<Aurora::NWScript::ObjectSearch> search(_game->getModule().findObjectsByTag(tag));
while (nth-- > 0)
search->next();

ctx.getReturn() = search->get();
delete search;
}

void Functions::getWaypointByTag(Aurora::NWScript::FunctionContext &ctx) {
Expand All @@ -213,8 +213,8 @@ void Functions::getWaypointByTag(Aurora::NWScript::FunctionContext &ctx) {
if (tag.empty())
return;

Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjectsByTag(tag);
Aurora::NWScript::Object *object = 0;
Common::ScopedPtr<Aurora::NWScript::ObjectSearch> search(_game->getModule().findObjectsByTag(tag));
Aurora::NWScript::Object *object = 0;

while ((object = search->next())) {
Waypoint *waypoint = NWN2::ObjectContainer::toWaypoint(object);
Expand All @@ -224,8 +224,6 @@ void Functions::getWaypointByTag(Aurora::NWScript::FunctionContext &ctx) {
break;
}
}

delete search;
}

void Functions::getNearestObject(Aurora::NWScript::FunctionContext &ctx) {
Expand All @@ -240,8 +238,8 @@ void Functions::getNearestObject(Aurora::NWScript::FunctionContext &ctx) {
// 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;
Common::ScopedPtr<Aurora::NWScript::ObjectSearch> search(_game->getModule().findObjects());
Aurora::NWScript::Object *object = 0;

std::list<Object *> objects;
while ((object = search->next())) {
Expand All @@ -259,8 +257,6 @@ void Functions::getNearestObject(Aurora::NWScript::FunctionContext &ctx) {
objects.push_back(nwn2Object);
}

delete search;

objects.sort(ObjectDistanceSort(*target));

std::list<Object *>::iterator it = objects.begin();
Expand All @@ -284,8 +280,8 @@ void Functions::getNearestObjectByTag(Aurora::NWScript::FunctionContext &ctx) {

size_t nth = MAX<int32>(ctx.getParams()[2].getInt() - 1, 0);

Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjectsByTag(tag);
Aurora::NWScript::Object *object = 0;
Common::ScopedPtr<Aurora::NWScript::ObjectSearch> search(_game->getModule().findObjectsByTag(tag));
Aurora::NWScript::Object *object = 0;

std::list<Object *> objects;
while ((object = search->next())) {
Expand All @@ -297,8 +293,6 @@ void Functions::getNearestObjectByTag(Aurora::NWScript::FunctionContext &ctx) {
objects.push_back(nwn2Object);
}

delete search;

objects.sort(ObjectDistanceSort(*target));

std::list<Object *>::iterator it = objects.begin();
Expand Down Expand Up @@ -328,8 +322,8 @@ void Functions::getNearestCreature(Aurora::NWScript::FunctionContext &ctx) {
* int crit3Value = ctx.getParams()[7].getInt();
*/

Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjects();
Aurora::NWScript::Object *object = 0;
Common::ScopedPtr<Aurora::NWScript::ObjectSearch> search(_game->getModule().findObjects());
Aurora::NWScript::Object *object = 0;

std::list<Object *> creatures;
while ((object = search->next())) {
Expand All @@ -339,8 +333,6 @@ void Functions::getNearestCreature(Aurora::NWScript::FunctionContext &ctx) {
creatures.push_back(creature);
}

delete search;

creatures.sort(ObjectDistanceSort(*target));

std::list<Object *>::iterator it = creatures.begin();
Expand Down

0 comments on commit 2f68738

Please sign in to comment.