Skip to content

Commit

Permalink
DRAGONAGE: Replace PtrVector with std::vector<std::unique_ptr<>>
Browse files Browse the repository at this point in the history
  • Loading branch information
DrMcCoy committed Aug 24, 2020
1 parent b1dc7ff commit 7503b75
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 59 deletions.
10 changes: 5 additions & 5 deletions src/engines/dragonage/area.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ void Area::loadEnvironment(const Common::UString &resRef) {
if (!*r || ((*r)->getLabel() != kROOMID))
continue;

_rooms.push_back(new Room(**r));
_rooms.emplace_back(std::make_unique<Room>(**r));
}
}

Expand Down Expand Up @@ -209,8 +209,8 @@ void Area::show() {

GfxMan.lockFrame();

for (Rooms::iterator r = _rooms.begin(); r != _rooms.end(); ++r)
(*r)->show();
for (auto &room : _rooms)
room->show();
for (Objects::iterator o = _objects.begin(); o != _objects.end(); ++o)
(*o)->show();

Expand All @@ -224,8 +224,8 @@ void Area::hide() {

for (Objects::iterator o = _objects.begin(); o != _objects.end(); ++o)
(*o)->hide();
for (Rooms::iterator r = _rooms.begin(); r != _rooms.end(); ++r)
(*r)->hide();
for (auto &room : _rooms)
room->hide();

GfxMan.unlockFrame();
}
Expand Down
4 changes: 2 additions & 2 deletions src/engines/dragonage/area.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
#include <vector>
#include <list>
#include <map>
#include <memory>

#include "src/common/ptrlist.h"
#include "src/common/ptrvector.h"
#include "src/common/ustring.h"
#include "src/common/mutex.h"

Expand Down Expand Up @@ -93,7 +93,7 @@ class Area : public DragonAge::Object, public Events::Notifyable {


private:
typedef Common::PtrVector<Room> Rooms;
typedef std::vector<std::unique_ptr<Room>> Rooms;

typedef Common::PtrList<DragonAge::Object> Objects;
typedef std::map<uint32_t, DragonAge::Object *> ObjectMap;
Expand Down
2 changes: 1 addition & 1 deletion src/engines/dragonage/campaign.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ Campaign::RIMNode *Campaign::readRIMs(const GFF4Struct &node, const RIMNode *par

for (GFF4List::const_iterator c = children.begin(); c != children.end(); ++c)
if (*c)
rim->children.push_back(readRIMs(**c, rim.get()));
rim->children.emplace_back(readRIMs(**c, rim.get()));

// If this node defines an area, remember it
if (!rim->area.empty()) {
Expand Down
9 changes: 3 additions & 6 deletions src/engines/dragonage/campaign.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
#include <map>
#include <memory>

#include "src/common/ptrvector.h"
#include "src/common/ustring.h"

#include "src/aurora/locstring.h"
Expand All @@ -53,6 +52,8 @@ class Creature;

class Campaign : public DragonAge::Object, public DragonAge::ObjectContainer {
public:
~Campaign();

// .--- Static information
/** Return the unique ID of this campaign. */
const Common::UString &getUID() const;
Expand Down Expand Up @@ -99,7 +100,7 @@ class Campaign : public DragonAge::Object, public DragonAge::ObjectContainer {
private:
/** A node in the RIM tree. */
struct RIMNode {
typedef Common::PtrVector<const RIMNode> Children;
typedef std::vector<std::unique_ptr<const RIMNode>> Children;

Common::UString tag; ///< Name of the node itself, not unique.
Common::UString area; ///< ResRef of the area this node describes, if any.
Expand Down Expand Up @@ -169,7 +170,6 @@ class Campaign : public DragonAge::Object, public DragonAge::ObjectContainer {

Campaign(Game &game, const Common::UString &cifPath = "",
const Common::UString &manifestPath = "", const Common::UString &addinBase = "");
~Campaign();

// .--- Loader
void read(const Common::UString &cifPath, const Common::UString &manifestPath);
Expand Down Expand Up @@ -210,9 +210,6 @@ class Campaign : public DragonAge::Object, public DragonAge::ObjectContainer {
// '---

friend class Campaigns;

template<typename T>
friend void Common::DeallocatorDefault::destroy(T *);
};

} // End of namespace DragonAge
Expand Down
36 changes: 18 additions & 18 deletions src/engines/dragonage/campaigns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,35 +71,35 @@ const Campaigns::AddinContent &Campaigns::getAddins() const {
}

const Campaign *Campaigns::findCampaign(const Common::UString &uid) const {
for (PlayableCampaigns::const_iterator c = _campaigns.begin(); c != _campaigns.end(); ++c)
if ((*c)->getUID().equalsIgnoreCase(uid))
return *c;
for (auto &campaign : _campaigns)
if (campaign->getUID().equalsIgnoreCase(uid))
return campaign.get();

return 0;
return nullptr;
}

const Campaign *Campaigns::findAddin(const Common::UString &uid) const {
for (AddinContent::const_iterator a = _addins.begin(); a != _addins.end(); ++a)
if ((*a)->getUID().equalsIgnoreCase(uid))
return *a;
for (auto &addin : _addins)
if (addin->getUID().equalsIgnoreCase(uid))
return addin.get();

return 0;
return nullptr;
}

Campaign *Campaigns::getCampaign(const Common::UString &uid) {
for (PlayableCampaigns::iterator c = _campaigns.begin(); c != _campaigns.end(); ++c)
if ((*c)->getUID().equalsIgnoreCase(uid))
return *c;
for (auto &campaign : _campaigns)
if (campaign->getUID().equalsIgnoreCase(uid))
return campaign.get();

return 0;
return nullptr;
}

Campaign *Campaigns::getAddin(const Common::UString &uid) {
for (AddinContent::iterator a = _addins.begin(); a != _addins.end(); ++a)
if ((*a)->getUID().equalsIgnoreCase(uid))
return *a;
for (auto &addin : _addins)
if (addin->getUID().equalsIgnoreCase(uid))
return addin.get();

return 0;
return nullptr;
}

bool Campaigns::isLoaded() const {
Expand Down Expand Up @@ -148,9 +148,9 @@ void Campaigns::addCampaign(Campaign *campaign) {
}

if (campaign->getExtendsUID().empty())
_campaigns.push_back(campaign);
_campaigns.emplace_back(campaign);
else
_addins.push_back(campaign);
_addins.emplace_back(campaign);
}

Campaign *Campaigns::readCampaign(const Common::UString &cifPath, const Common::UString &manifestPath,
Expand Down
5 changes: 2 additions & 3 deletions src/engines/dragonage/campaigns.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
#include <list>
#include <memory>

#include "src/common/ptrvector.h"
#include "src/common/ustring.h"

#include "src/events/types.h"
Expand All @@ -50,8 +49,8 @@ class Campaigns {
~Campaigns();

// .--- Available campaigns and addins
typedef Common::PtrVector<Campaign> PlayableCampaigns;
typedef Common::PtrVector<Campaign> AddinContent;
typedef std::vector<std::unique_ptr<Campaign>> PlayableCampaigns;
typedef std::vector<std::unique_ptr<Campaign>> AddinContent;

/** Return all playable campaigns. */
const PlayableCampaigns &getCampaigns() const;
Expand Down
30 changes: 13 additions & 17 deletions src/engines/dragonage/console.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ void Console::updateCampaigns() {
std::vector<Common::UString> campaignTags;

const Campaigns::PlayableCampaigns &campaigns = campaignsCtx.getCampaigns();
for (Campaigns::PlayableCampaigns::const_iterator c = campaigns.begin(); c != campaigns.end(); ++c)
campaignTags.push_back((*c)->getUID());
for (auto &campaign : campaigns)
campaignTags.push_back(campaign->getUID());

std::sort(campaignTags.begin(), campaignTags.end(), Common::UString::iless());
setArguments("loadcampaign", campaignTags);
Expand All @@ -92,12 +92,10 @@ void Console::cmdListAreas(const CommandLine &UNUSED(cl)) {
if (!campaign)
return;

const std::vector<Common::UString> &areas = campaign->getAreas();
for (auto &area : campaign->getAreas()) {
const Common::UString &rim = campaign->getAreaRIM(area);

for (std::vector<Common::UString>::const_iterator a = areas.begin(); a != areas.end(); ++a) {
const Common::UString &rim = campaign->getAreaRIM(*a);

printf("%s (\"%s\")", a->c_str(), Area::getName(*a, rim).c_str());
printf("%s (\"%s\")", area.c_str(), Area::getName(area, rim).c_str());
}
}

Expand All @@ -111,12 +109,10 @@ void Console::cmdLoadArea(const CommandLine &cl) {
if (!campaign)
return;

const std::vector<Common::UString> &areas = campaign->getAreas();

for (std::vector<Common::UString>::const_iterator a = areas.begin(); a != areas.end(); ++a) {
if (a->equalsIgnoreCase(cl.args)) {
for (auto &area : campaign->getAreas()) {
if (area.equalsIgnoreCase(cl.args)) {
hide();
campaign->movePC(*a);
campaign->movePC(area);
return;
}
}
Expand All @@ -129,8 +125,8 @@ void Console::cmdListCampaigns(const CommandLine &UNUSED(cl)) {

const Campaigns::PlayableCampaigns &campaigns = campaignsCtx.getCampaigns();

for (Campaigns::PlayableCampaigns::const_iterator c = campaigns.begin(); c != campaigns.end(); ++c)
printf("%s (\"%s\")", (*c)->getUID().c_str(), (*c)->getName().getString().c_str());
for (auto &campaign : campaigns)
printf("%s (\"%s\")", campaign->getUID().c_str(), campaign->getName().getString().c_str());
}

void Console::cmdLoadCampaign(const CommandLine &cl) {
Expand All @@ -142,10 +138,10 @@ void Console::cmdLoadCampaign(const CommandLine &cl) {
Campaigns &campaignsCtx = _engine->getGame().getCampaigns();

const Campaigns::PlayableCampaigns &campaigns = campaignsCtx.getCampaigns();
for (Campaigns::PlayableCampaigns::const_iterator c = campaigns.begin(); c != campaigns.end(); ++c) {
if ((*c)->getUID().equalsIgnoreCase(cl.args)) {
for (auto &campaign : campaigns) {
if (campaign->getUID().equalsIgnoreCase(cl.args)) {
hide();
campaignsCtx.load(**c);
campaignsCtx.load(*campaign);
return;
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/engines/dragonage/room.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ void Room::loadLayout(const Common::UString &roomFile) {
if (!model)
continue;

_models.push_back(model);
_models.emplace_back(model);

glm::mat4 modelTransform(roomTransform);

Expand Down Expand Up @@ -176,13 +176,13 @@ void Room::loadLayout(const Common::UString &roomFile) {
}

void Room::show() {
for (Models::iterator m = _models.begin(); m != _models.end(); ++m)
(*m)->show();
for (auto &model : _models)
model->show();
}

void Room::hide() {
for (Models::iterator m = _models.begin(); m != _models.end(); ++m)
(*m)->hide();
for (auto &model : _models)
model->hide();
}

} // End of namespace DragonAge
Expand Down
4 changes: 2 additions & 2 deletions src/engines/dragonage/room.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
#define ENGINES_DRAGONAGE_ROOM_H

#include <vector>
#include <memory>

#include "src/common/ptrvector.h"
#include "src/common/ustring.h"

#include "src/aurora/types.h"
Expand All @@ -51,7 +51,7 @@ class Room {
void hide();

private:
typedef Common::PtrVector<Graphics::Aurora::Model> Models;
typedef std::vector<std::unique_ptr<Graphics::Aurora::Model>> Models;

int32_t _id;

Expand Down

0 comments on commit 7503b75

Please sign in to comment.