Feature #28: refactored out cell management into a separate class
parent
40853e292f
commit
e8632a799d
@ -0,0 +1,33 @@
|
|||||||
|
#include "cells.hpp"
|
||||||
|
|
||||||
|
MWWorld::Cells::Cells (const ESMS::ESMStore& store, ESM::ESMReader& reader)
|
||||||
|
: mStore (store), mReader (reader) {}
|
||||||
|
|
||||||
|
MWWorld::Ptr::CellStore *MWWorld::Cells::getExterior (int x, int y)
|
||||||
|
{
|
||||||
|
std::map<std::pair<int, int>, Ptr::CellStore>::iterator result =
|
||||||
|
mExteriors.find (std::make_pair (x, y));
|
||||||
|
|
||||||
|
if (result==mExteriors.end())
|
||||||
|
{
|
||||||
|
result = mExteriors.insert (std::make_pair (std::make_pair (x, y), Ptr::CellStore())).first;
|
||||||
|
|
||||||
|
result->second.loadExt (x, y, mStore, mReader);
|
||||||
|
}
|
||||||
|
|
||||||
|
return &result->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
MWWorld::Ptr::CellStore *MWWorld::Cells::getInterior (const std::string& name)
|
||||||
|
{
|
||||||
|
std::map<std::string, Ptr::CellStore>::iterator result = mInteriors.find (name);
|
||||||
|
|
||||||
|
if (result==mInteriors.end())
|
||||||
|
{
|
||||||
|
result = mInteriors.insert (std::make_pair (name, Ptr::CellStore())).first;
|
||||||
|
|
||||||
|
result->second.loadInt (name, mStore, mReader);
|
||||||
|
}
|
||||||
|
|
||||||
|
return &result->second;
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
#ifndef GAME_MWWORLD_CELLS_H
|
||||||
|
#define GAME_MWWORLD_CELLS_H
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "ptr.hpp"
|
||||||
|
|
||||||
|
namespace ESM
|
||||||
|
{
|
||||||
|
class ESMReader;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace ESM
|
||||||
|
{
|
||||||
|
class ESMStore;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace MWWorld
|
||||||
|
{
|
||||||
|
/// \brief Cell container
|
||||||
|
class Cells
|
||||||
|
{
|
||||||
|
const ESMS::ESMStore& mStore;
|
||||||
|
ESM::ESMReader& mReader;
|
||||||
|
std::map<std::string, Ptr::CellStore> mInteriors;
|
||||||
|
std::map<std::pair<int, int>, Ptr::CellStore> mExteriors;
|
||||||
|
|
||||||
|
Cells (const Cells&);
|
||||||
|
Cells& operator= (const Cells&);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Cells (const ESMS::ESMStore& store, ESM::ESMReader& reader);
|
||||||
|
|
||||||
|
Ptr::CellStore *getExterior (int x, int y);
|
||||||
|
|
||||||
|
Ptr::CellStore *getInterior (const std::string& name);
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue