1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-10 21:40:15 +00:00

handle inventory in the actors

This commit is contained in:
Marek Kochanowicz 2014-07-22 13:08:32 +02:00
parent 24eb034ba3
commit 9defb188ea
3 changed files with 17 additions and 2 deletions

View File

@ -179,6 +179,7 @@ namespace CSMWorld
ColumnId_Vampire = 164,
ColumnId_BodyPartType = 165,
ColumnId_MeshType = 166,
ColumnId_ActorInventory = 167,
// Allocated to a separate value range, so we don't get a collision should we ever need
// to extend the number of use values.

View File

@ -445,6 +445,7 @@ namespace CSMWorld
const RefIdColumn *mFlee;
const RefIdColumn *mFight;
const RefIdColumn *mAlarm;
const RefIdColumn *mInventory;
std::map<const RefIdColumn *, unsigned int> mServices;
ActorColumns (const NameColumns& base) : NameColumns (base) {}
@ -452,7 +453,7 @@ namespace CSMWorld
/// \brief Adapter for actor IDs (handles common AI functionality)
template<typename RecordT>
class ActorRefIdAdapter : public NameRefIdAdapter<RecordT>
class ActorRefIdAdapter : public NameRefIdAdapter<RecordT>, public NestedRefIdAdapter
{
ActorColumns mActors;
@ -472,7 +473,13 @@ namespace CSMWorld
ActorRefIdAdapter<RecordT>::ActorRefIdAdapter (UniversalId::Type type,
const ActorColumns& columns)
: NameRefIdAdapter<RecordT> (type, columns), mActors (columns)
{}
{
std::vector<std::pair <const RefIdColumn*, HelperBase*> > assoCol;
assoCol.push_back(std::make_pair(mActors.mInventory, new InventoryHelper<RecordT>(type)));
setAssocColumns(assoCol);
}
template<typename RecordT>
QVariant ActorRefIdAdapter<RecordT>::getData (const RefIdColumn *column, const RefIdData& data,
@ -496,6 +503,9 @@ namespace CSMWorld
if (column==mActors.mAlarm)
return record.get().mAiData.mAlarm;
if (column==mActors.mInventory)
return true;
std::map<const RefIdColumn *, unsigned int>::const_iterator iter =
mActors.mServices.find (column);

View File

@ -99,6 +99,10 @@ CSMWorld::RefIdCollection::RefIdCollection()
actorsColumns.mFight = &mColumns.back();
mColumns.push_back (RefIdColumn (Columns::ColumnId_AiAlarm, ColumnBase::Display_Integer));
actorsColumns.mAlarm = &mColumns.back();
mColumns.push_back(RefIdColumn (Columns::ColumnId_ActorInventory, ColumnBase::Display_NestedItemList, ColumnBase::Flag_Dialogue, true, true, true));
actorsColumns.mInventory = &mColumns.back();
mColumns.back().addNestedColumn(Columns::ColumnId_InventoryItemId, CSMWorld::ColumnBase::Display_String);
mColumns.back().addNestedColumn(Columns::ColumnId_ItemCount, CSMWorld::ColumnBase::Display_Integer);
static const struct
{