mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-21 07:53:53 +00:00
added enchantments table
This commit is contained in:
parent
b5650f5d4f
commit
e97fd35ae6
10 changed files with 61 additions and 3 deletions
|
@ -59,6 +59,9 @@ CSMDoc::Saving::Saving (Document& document, const boost::filesystem::path& proje
|
||||||
appendStage (new WriteCollectionStage<CSMWorld::IdCollection<ESM::Spell> >
|
appendStage (new WriteCollectionStage<CSMWorld::IdCollection<ESM::Spell> >
|
||||||
(mDocument.getData().getSpells(), mState));
|
(mDocument.getData().getSpells(), mState));
|
||||||
|
|
||||||
|
appendStage (new WriteCollectionStage<CSMWorld::IdCollection<ESM::Enchantment> >
|
||||||
|
(mDocument.getData().getEnchantments(), mState));
|
||||||
|
|
||||||
appendStage (new WriteDialogueCollectionStage (mDocument, mState, false));
|
appendStage (new WriteDialogueCollectionStage (mDocument, mState, false));
|
||||||
|
|
||||||
appendStage (new WriteDialogueCollectionStage (mDocument, mState, true));
|
appendStage (new WriteDialogueCollectionStage (mDocument, mState, true));
|
||||||
|
|
|
@ -198,6 +198,13 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding)
|
||||||
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_InteriorSky, ESM::Cell::QuasiEx));
|
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_InteriorSky, ESM::Cell::QuasiEx));
|
||||||
mCells.addColumn (new RegionColumn<Cell>);
|
mCells.addColumn (new RegionColumn<Cell>);
|
||||||
|
|
||||||
|
mEnchantments.addColumn (new StringIdColumn<ESM::Enchantment>);
|
||||||
|
mEnchantments.addColumn (new RecordStateColumn<ESM::Enchantment>);
|
||||||
|
mEnchantments.addColumn (new FixedRecordTypeColumn<ESM::Enchantment> (UniversalId::Type_Enchantment));
|
||||||
|
|
||||||
|
mEnchantments.addColumn (new CostColumn<ESM::Enchantment>);
|
||||||
|
|
||||||
|
|
||||||
mRefs.addColumn (new StringIdColumn<CellRef> (true));
|
mRefs.addColumn (new StringIdColumn<CellRef> (true));
|
||||||
mRefs.addColumn (new RecordStateColumn<CellRef>);
|
mRefs.addColumn (new RecordStateColumn<CellRef>);
|
||||||
mRefs.addColumn (new FixedRecordTypeColumn<CellRef> (UniversalId::Type_Reference));
|
mRefs.addColumn (new FixedRecordTypeColumn<CellRef> (UniversalId::Type_Reference));
|
||||||
|
@ -252,6 +259,7 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding)
|
||||||
addModel (new IdTable (&mTopicInfos, IdTable::Feature_ReorderWithinTopic), UniversalId::Type_TopicInfo);
|
addModel (new IdTable (&mTopicInfos, IdTable::Feature_ReorderWithinTopic), UniversalId::Type_TopicInfo);
|
||||||
addModel (new IdTable (&mJournalInfos, IdTable::Feature_ReorderWithinTopic), UniversalId::Type_JournalInfo);
|
addModel (new IdTable (&mJournalInfos, IdTable::Feature_ReorderWithinTopic), UniversalId::Type_JournalInfo);
|
||||||
addModel (new IdTable (&mCells, IdTable::Feature_ViewId), UniversalId::Type_Cell);
|
addModel (new IdTable (&mCells, IdTable::Feature_ViewId), UniversalId::Type_Cell);
|
||||||
|
addModel (new IdTable (&mEnchantments), UniversalId::Type_Enchantment);
|
||||||
addModel (new IdTable (&mReferenceables, IdTable::Feature_Preview),
|
addModel (new IdTable (&mReferenceables, IdTable::Feature_Preview),
|
||||||
UniversalId::Type_Referenceable);
|
UniversalId::Type_Referenceable);
|
||||||
addModel (new IdTable (&mRefs, IdTable::Feature_ViewCell | IdTable::Feature_Preview), UniversalId::Type_Reference);
|
addModel (new IdTable (&mRefs, IdTable::Feature_ViewCell | IdTable::Feature_Preview), UniversalId::Type_Reference);
|
||||||
|
@ -457,6 +465,16 @@ CSMWorld::IdCollection<CSMFilter::Filter>& CSMWorld::Data::getFilters()
|
||||||
return mFilters;
|
return mFilters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const CSMWorld::IdCollection<ESM::Enchantment>& CSMWorld::Data::getEnchantments() const
|
||||||
|
{
|
||||||
|
return mEnchantments;
|
||||||
|
}
|
||||||
|
|
||||||
|
CSMWorld::IdCollection<ESM::Enchantment>& CSMWorld::Data::getEnchantments()
|
||||||
|
{
|
||||||
|
return mEnchantments;
|
||||||
|
}
|
||||||
|
|
||||||
QAbstractItemModel *CSMWorld::Data::getTableModel (const CSMWorld::UniversalId& id)
|
QAbstractItemModel *CSMWorld::Data::getTableModel (const CSMWorld::UniversalId& id)
|
||||||
{
|
{
|
||||||
std::map<UniversalId::Type, QAbstractItemModel *>::iterator iter = mModelIndex.find (id.getType());
|
std::map<UniversalId::Type, QAbstractItemModel *>::iterator iter = mModelIndex.find (id.getType());
|
||||||
|
@ -534,6 +552,7 @@ bool CSMWorld::Data::continueLoading (CSMDoc::Stage::Messages& messages)
|
||||||
case ESM::REC_REGN: mRegions.load (*mReader, mBase); break;
|
case ESM::REC_REGN: mRegions.load (*mReader, mBase); break;
|
||||||
case ESM::REC_BSGN: mBirthsigns.load (*mReader, mBase); break;
|
case ESM::REC_BSGN: mBirthsigns.load (*mReader, mBase); break;
|
||||||
case ESM::REC_SPEL: mSpells.load (*mReader, mBase); break;
|
case ESM::REC_SPEL: mSpells.load (*mReader, mBase); break;
|
||||||
|
case ESM::REC_ENCH: mEnchantments.load (*mReader, mBase); break;
|
||||||
|
|
||||||
case ESM::REC_CELL:
|
case ESM::REC_CELL:
|
||||||
{
|
{
|
||||||
|
@ -668,6 +687,7 @@ bool CSMWorld::Data::hasId (const std::string& id) const
|
||||||
getTopics().searchId (id)!=-1 ||
|
getTopics().searchId (id)!=-1 ||
|
||||||
getJournals().searchId (id)!=-1 ||
|
getJournals().searchId (id)!=-1 ||
|
||||||
getCells().searchId (id)!=-1 ||
|
getCells().searchId (id)!=-1 ||
|
||||||
|
getEnchantments().searchId (id)!=-1 ||
|
||||||
getReferenceables().searchId (id)!=-1;
|
getReferenceables().searchId (id)!=-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -686,6 +706,7 @@ int CSMWorld::Data::count (RecordBase::State state) const
|
||||||
count (state, mBirthsigns) +
|
count (state, mBirthsigns) +
|
||||||
count (state, mSpells) +
|
count (state, mSpells) +
|
||||||
count (state, mCells) +
|
count (state, mCells) +
|
||||||
|
count (state, mEnchantments) +
|
||||||
count (state, mReferenceables);
|
count (state, mReferenceables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -726,6 +747,7 @@ std::vector<std::string> CSMWorld::Data::getIds (bool listDeleted) const
|
||||||
appendIds (ids, mTopics, listDeleted);
|
appendIds (ids, mTopics, listDeleted);
|
||||||
appendIds (ids, mJournals, listDeleted);
|
appendIds (ids, mJournals, listDeleted);
|
||||||
appendIds (ids, mCells, listDeleted);
|
appendIds (ids, mCells, listDeleted);
|
||||||
|
appendIds (ids, mEnchantments, listDeleted);
|
||||||
appendIds (ids, mReferenceables, listDeleted);
|
appendIds (ids, mReferenceables, listDeleted);
|
||||||
|
|
||||||
std::sort (ids.begin(), ids.end());
|
std::sort (ids.begin(), ids.end());
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <components/esm/loadbsgn.hpp>
|
#include <components/esm/loadbsgn.hpp>
|
||||||
#include <components/esm/loadspel.hpp>
|
#include <components/esm/loadspel.hpp>
|
||||||
#include <components/esm/loaddial.hpp>
|
#include <components/esm/loaddial.hpp>
|
||||||
|
#include <components/esm/loadench.hpp>
|
||||||
|
|
||||||
#include <components/to_utf8/to_utf8.hpp>
|
#include <components/to_utf8/to_utf8.hpp>
|
||||||
|
|
||||||
|
@ -63,6 +64,7 @@ namespace CSMWorld
|
||||||
IdCollection<ESM::Spell> mSpells;
|
IdCollection<ESM::Spell> mSpells;
|
||||||
IdCollection<ESM::Dialogue> mTopics;
|
IdCollection<ESM::Dialogue> mTopics;
|
||||||
IdCollection<ESM::Dialogue> mJournals;
|
IdCollection<ESM::Dialogue> mJournals;
|
||||||
|
IdCollection<ESM::Enchantment> mEnchantments;
|
||||||
InfoCollection mTopicInfos;
|
InfoCollection mTopicInfos;
|
||||||
InfoCollection mJournalInfos;
|
InfoCollection mJournalInfos;
|
||||||
IdCollection<Cell> mCells;
|
IdCollection<Cell> mCells;
|
||||||
|
@ -174,6 +176,10 @@ namespace CSMWorld
|
||||||
|
|
||||||
IdCollection<CSMFilter::Filter>& getFilters();
|
IdCollection<CSMFilter::Filter>& getFilters();
|
||||||
|
|
||||||
|
const IdCollection<ESM::Enchantment>& getEnchantments() const;
|
||||||
|
|
||||||
|
IdCollection<ESM::Enchantment>& getEnchantments();
|
||||||
|
|
||||||
QAbstractItemModel *getTableModel (const UniversalId& id);
|
QAbstractItemModel *getTableModel (const UniversalId& id);
|
||||||
///< If no table model is available for \a id, an exception is thrown.
|
///< If no table model is available for \a id, an exception is thrown.
|
||||||
///
|
///
|
||||||
|
|
|
@ -35,6 +35,7 @@ namespace
|
||||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_TopicInfos, "Topic Infos", 0 },
|
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_TopicInfos, "Topic Infos", 0 },
|
||||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_JournalInfos, "Journal Infos", 0 },
|
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_JournalInfos, "Journal Infos", 0 },
|
||||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_Cells, "Cells", 0 },
|
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_Cells, "Cells", 0 },
|
||||||
|
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_Enchantments, "Enchantments", 0 },
|
||||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_Referenceables,
|
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_Referenceables,
|
||||||
"Referenceables", 0 },
|
"Referenceables", 0 },
|
||||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_References,
|
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_References,
|
||||||
|
@ -92,8 +93,8 @@ namespace
|
||||||
{ CSMWorld::UniversalId::Class_SubRecord, CSMWorld::UniversalId::Type_Reference, "Reference", 0 },
|
{ CSMWorld::UniversalId::Class_SubRecord, CSMWorld::UniversalId::Type_Reference, "Reference", 0 },
|
||||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Filter, "Filter", ":./filter.png" },
|
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Filter, "Filter", ":./filter.png" },
|
||||||
{ CSMWorld::UniversalId::Class_Collection, CSMWorld::UniversalId::Type_Scene, "Scene", 0 },
|
{ CSMWorld::UniversalId::Class_Collection, CSMWorld::UniversalId::Type_Scene, "Scene", 0 },
|
||||||
|
|
||||||
{ CSMWorld::UniversalId::Class_Collection, CSMWorld::UniversalId::Type_Preview, "Preview", 0 },
|
{ CSMWorld::UniversalId::Class_Collection, CSMWorld::UniversalId::Type_Preview, "Preview", 0 },
|
||||||
|
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Enchantment, "Enchantment", 0 },
|
||||||
|
|
||||||
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0, 0 } // end marker
|
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0, 0 } // end marker
|
||||||
};
|
};
|
||||||
|
|
|
@ -100,10 +100,12 @@ namespace CSMWorld
|
||||||
Type_JournalInfo,
|
Type_JournalInfo,
|
||||||
Type_Scene,
|
Type_Scene,
|
||||||
Type_Preview,
|
Type_Preview,
|
||||||
Type_LoadErrorLog
|
Type_LoadErrorLog,
|
||||||
|
Type_Enchantments,
|
||||||
|
Type_Enchantment
|
||||||
};
|
};
|
||||||
|
|
||||||
enum { NumberOfTypes = Type_LoadErrorLog+1 };
|
enum { NumberOfTypes = Type_Enchantment+1 };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
|
@ -146,6 +146,10 @@ void CSVDoc::View::setupMechanicsMenu()
|
||||||
QAction *spells = new QAction (tr ("Spells"), this);
|
QAction *spells = new QAction (tr ("Spells"), this);
|
||||||
connect (spells, SIGNAL (triggered()), this, SLOT (addSpellsSubView()));
|
connect (spells, SIGNAL (triggered()), this, SLOT (addSpellsSubView()));
|
||||||
mechanics->addAction (spells);
|
mechanics->addAction (spells);
|
||||||
|
|
||||||
|
QAction *enchantments = new QAction (tr ("Enchantments"), this);
|
||||||
|
connect (enchantments, SIGNAL (triggered()), this, SLOT (addEnchantmentsSubView()));
|
||||||
|
mechanics->addAction (enchantments);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVDoc::View::setupCharacterMenu()
|
void CSVDoc::View::setupCharacterMenu()
|
||||||
|
@ -469,6 +473,11 @@ void CSVDoc::View::addJournalInfosSubView()
|
||||||
addSubView (CSMWorld::UniversalId::Type_JournalInfos);
|
addSubView (CSMWorld::UniversalId::Type_JournalInfos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVDoc::View::addEnchantmentsSubView()
|
||||||
|
{
|
||||||
|
addSubView (CSMWorld::UniversalId::Type_Enchantments);
|
||||||
|
}
|
||||||
|
|
||||||
void CSVDoc::View::abortOperation (int type)
|
void CSVDoc::View::abortOperation (int type)
|
||||||
{
|
{
|
||||||
mDocument->abortOperation (type);
|
mDocument->abortOperation (type);
|
||||||
|
|
|
@ -178,6 +178,8 @@ namespace CSVDoc
|
||||||
|
|
||||||
void addJournalInfosSubView();
|
void addJournalInfosSubView();
|
||||||
|
|
||||||
|
void addEnchantmentsSubView();
|
||||||
|
|
||||||
void toggleShowStatusBar (bool show);
|
void toggleShowStatusBar (bool show);
|
||||||
|
|
||||||
void loadErrorLog();
|
void loadErrorLog();
|
||||||
|
|
|
@ -39,6 +39,7 @@ void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager)
|
||||||
CSMWorld::UniversalId::Type_Regions,
|
CSMWorld::UniversalId::Type_Regions,
|
||||||
CSMWorld::UniversalId::Type_Birthsigns,
|
CSMWorld::UniversalId::Type_Birthsigns,
|
||||||
CSMWorld::UniversalId::Type_Spells,
|
CSMWorld::UniversalId::Type_Spells,
|
||||||
|
CSMWorld::UniversalId::Type_Enchantments,
|
||||||
|
|
||||||
CSMWorld::UniversalId::Type_None // end marker
|
CSMWorld::UniversalId::Type_None // end marker
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,4 +20,13 @@ void Enchantment::save(ESMWriter &esm) const
|
||||||
mEffects.save(esm);
|
mEffects.save(esm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Enchantment::blank()
|
||||||
|
{
|
||||||
|
mData.mType = 0;
|
||||||
|
mData.mCost = 0;
|
||||||
|
mData.mCharge = 0;
|
||||||
|
mData.mAutocalc = 0;
|
||||||
|
|
||||||
|
mEffects.mList.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,9 @@ struct Enchantment
|
||||||
|
|
||||||
void load(ESMReader &esm);
|
void load(ESMReader &esm);
|
||||||
void save(ESMWriter &esm) const;
|
void save(ESMWriter &esm) const;
|
||||||
|
|
||||||
|
void blank();
|
||||||
|
///< Set record to default state (does not touch the ID).
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue