mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-29 21:45:32 +00:00
Initial LTEX/LAND tables
This commit is contained in:
parent
a8005c33d9
commit
5d14a2afcc
10 changed files with 116 additions and 9 deletions
|
@ -240,6 +240,8 @@ void CSMPrefs::State::declare()
|
|||
declareShortcut ("document-world-cells", "Open Cell List", QKeySequence());
|
||||
declareShortcut ("document-world-referencables", "Open Object List", QKeySequence());
|
||||
declareShortcut ("document-world-references", "Open Instance List", QKeySequence());
|
||||
declareShortcut ("document-world-lands", "Open Lands List", QKeySequence());
|
||||
declareShortcut ("document-world-landtextures", "Open Land Textures List", QKeySequence());
|
||||
declareShortcut ("document-world-pathgrid", "Open Pathgrid List", QKeySequence());
|
||||
declareShortcut ("document-world-regionmap", "Open Region Map", QKeySequence());
|
||||
declareShortcut ("document-mechanics-globals", "Open Global List", QKeySequence());
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#include "columns.hpp"
|
||||
#include "info.hpp"
|
||||
|
||||
#include "land.hpp"
|
||||
#include "landtexture.hpp"
|
||||
|
||||
namespace CSMWorld
|
||||
{
|
||||
/// \note Shares ID with VarValueColumn. A table can not have both.
|
||||
|
@ -1499,9 +1502,9 @@ namespace CSMWorld
|
|||
template<typename ESXRecordT>
|
||||
struct TopicColumn : public Column<ESXRecordT>
|
||||
{
|
||||
TopicColumn (bool journal)
|
||||
TopicColumn (bool journal)
|
||||
: Column<ESXRecordT> (journal ? Columns::ColumnId_Journal : Columns::ColumnId_Topic,
|
||||
journal ? ColumnBase::Display_Journal : ColumnBase::Display_Topic)
|
||||
journal ? ColumnBase::Display_Journal : ColumnBase::Display_Topic)
|
||||
{}
|
||||
|
||||
virtual QVariant get (const Record<ESXRecordT>& record) const
|
||||
|
@ -1755,7 +1758,7 @@ namespace CSMWorld
|
|||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<typename ESXRecordT>
|
||||
struct GenderNpcColumn : public Column<ESXRecordT>
|
||||
{
|
||||
|
@ -2198,8 +2201,8 @@ namespace CSMWorld
|
|||
struct EffectTextureColumn : public Column<ESXRecordT>
|
||||
{
|
||||
EffectTextureColumn (Columns::ColumnId columnId)
|
||||
: Column<ESXRecordT> (columnId,
|
||||
columnId == Columns::ColumnId_Particle ? ColumnBase::Display_Texture
|
||||
: Column<ESXRecordT> (columnId,
|
||||
columnId == Columns::ColumnId_Particle ? ColumnBase::Display_Texture
|
||||
: ColumnBase::Display_Icon)
|
||||
{
|
||||
assert (this->mColumnId==Columns::ColumnId_Icon ||
|
||||
|
@ -2417,7 +2420,56 @@ namespace CSMWorld
|
|||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<typename ESXRecordT>
|
||||
struct TextureIndexColumn : public Column<ESXRecordT>
|
||||
{
|
||||
TextureIndexColumn()
|
||||
: Column<ESXRecordT> (Columns::ColumnId_TextureIndex, ColumnBase::Display_Integer)
|
||||
{}
|
||||
|
||||
QVariant get (const Record<ESXRecordT>& record) const
|
||||
{
|
||||
return record.get().mIndex;
|
||||
}
|
||||
|
||||
virtual bool isEditable() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
// TODO remove
|
||||
template<typename ESXRecordT>
|
||||
struct PluginIndexColumn : public Column<ESXRecordT>
|
||||
{
|
||||
PluginIndexColumn()
|
||||
: Column<ESXRecordT> (Columns::ColumnId_PluginIndex, ColumnBase::Display_Integer)
|
||||
{}
|
||||
|
||||
QVariant get (const Record<ESXRecordT>& record) const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
virtual bool isEditable() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
inline QVariant PluginIndexColumn<Land>::get (const Record<Land>& record) const
|
||||
{
|
||||
return record.get().mPlugin;
|
||||
}
|
||||
|
||||
template<>
|
||||
inline QVariant PluginIndexColumn<LandTexture>::get (const Record<LandTexture>& record) const
|
||||
{
|
||||
return record.get().mPluginIndex;
|
||||
}
|
||||
|
||||
struct BodyPartRaceColumn : public RaceColumn<ESM::BodyPart>
|
||||
{
|
||||
const MeshTypeColumn<ESM::BodyPart> *mMeshType;
|
||||
|
|
|
@ -124,7 +124,7 @@ namespace CSMWorld
|
|||
{ ColumnId_Portable, "Portable" },
|
||||
{ ColumnId_NegativeLight, "Negative Light" },
|
||||
{ ColumnId_EmitterType, "Emitter Type" },
|
||||
|
||||
|
||||
{ ColumnId_Fire, "Fire" },
|
||||
{ ColumnId_OffByDefault, "Off by default" },
|
||||
{ ColumnId_IsKey, "Is Key" },
|
||||
|
@ -330,6 +330,8 @@ namespace CSMWorld
|
|||
{ ColumnId_WeatherChance, "Percent Chance" },
|
||||
|
||||
{ ColumnId_Text, "Text" },
|
||||
{ ColumnId_PluginIndex, "Plugin Index" },
|
||||
{ ColumnId_TextureIndex, "Texture Index" },
|
||||
|
||||
{ ColumnId_UseValue1, "Use value 1" },
|
||||
{ ColumnId_UseValue2, "Use value 2" },
|
||||
|
|
|
@ -329,6 +329,9 @@ namespace CSMWorld
|
|||
|
||||
ColumnId_Text = 297,
|
||||
|
||||
ColumnId_PluginIndex = 298,
|
||||
ColumnId_TextureIndex = 299,
|
||||
|
||||
// Allocated to a separate value range, so we don't get a collision should we ever need
|
||||
// to extend the number of use values.
|
||||
ColumnId_UseValue1 = 0x10000,
|
||||
|
|
|
@ -412,6 +412,18 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, bool fsStrict, const Files::Pat
|
|||
Columns::ColumnId_NegativeLight, ESM::MagicEffect::NegativeLight));
|
||||
mMagicEffects.addColumn (new DescriptionColumn<ESM::MagicEffect>);
|
||||
|
||||
mLand.addColumn (new StringIdColumn<Land>);
|
||||
mLand.addColumn (new RecordStateColumn<Land>);
|
||||
mLand.addColumn (new FixedRecordTypeColumn<Land>(UniversalId::Type_Land));
|
||||
mLand.addColumn (new PluginIndexColumn<Land>);
|
||||
|
||||
mLandTextures.addColumn (new StringIdColumn<LandTexture>);
|
||||
mLandTextures.addColumn (new RecordStateColumn<LandTexture>);
|
||||
mLandTextures.addColumn (new FixedRecordTypeColumn<LandTexture>(UniversalId::Type_LandTexture));
|
||||
mLandTextures.addColumn (new PluginIndexColumn<LandTexture>);
|
||||
mLandTextures.addColumn (new TextureIndexColumn<LandTexture>);
|
||||
mLandTextures.addColumn (new TextureColumn<LandTexture>);
|
||||
|
||||
mPathgrids.addColumn (new StringIdColumn<Pathgrid>);
|
||||
mPathgrids.addColumn (new RecordStateColumn<Pathgrid>);
|
||||
mPathgrids.addColumn (new FixedRecordTypeColumn<Pathgrid> (UniversalId::Type_Pathgrid));
|
||||
|
@ -531,6 +543,8 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, bool fsStrict, const Files::Pat
|
|||
addModel (new IdTable (&mBodyParts), UniversalId::Type_BodyPart);
|
||||
addModel (new IdTable (&mSoundGens), UniversalId::Type_SoundGen);
|
||||
addModel (new IdTable (&mMagicEffects), UniversalId::Type_MagicEffect);
|
||||
addModel (new IdTable (&mLand), UniversalId::Type_Land);
|
||||
addModel (new IdTable (&mLandTextures), UniversalId::Type_LandTexture);
|
||||
addModel (new IdTree (&mPathgrids, &mPathgrids), UniversalId::Type_Pathgrid);
|
||||
addModel (new IdTable (&mStartScripts), UniversalId::Type_StartScript);
|
||||
addModel (new IdTree (&mReferenceables, &mReferenceables, IdTable::Feature_Preview),
|
||||
|
|
|
@ -53,6 +53,8 @@ namespace
|
|||
{ CSMWorld::UniversalId::Class_Transient, CSMWorld::UniversalId::Type_RunLog, "Run Log", 0 },
|
||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_SoundGens, "Sound Generators", 0 },
|
||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_MagicEffects, "Magic Effects", 0 },
|
||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_Lands, "Lands", 0 },
|
||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_LandTextures, "LandTextures", 0 },
|
||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_Pathgrids, "Pathgrids", 0 },
|
||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_StartScripts, "Start Scripts", 0 },
|
||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_MetaDatas, "Meta Data Table", 0 },
|
||||
|
@ -118,6 +120,8 @@ namespace
|
|||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_DebugProfile, "Debug Profile", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_SoundGen, "Sound Generator", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_MagicEffect, "Magic Effect", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Land, "Land", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_LandTexture, "LandTexture", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Pathgrid, "Pathgrid", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_StartScript, "Start Script", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_MetaData, "Meta Data", 0 },
|
||||
|
@ -364,8 +368,8 @@ std::vector<CSMWorld::UniversalId::Type> CSMWorld::UniversalId::listTypes (int c
|
|||
for (int i=0; sIndexArg[i].mName; ++i)
|
||||
if (sIndexArg[i].mClass & classes)
|
||||
list.push_back (sIndexArg[i].mType);
|
||||
|
||||
return list;
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
CSMWorld::UniversalId::Type CSMWorld::UniversalId::getParentType (Type type)
|
||||
|
|
|
@ -126,6 +126,10 @@ namespace CSMWorld
|
|||
Type_SoundGen,
|
||||
Type_MagicEffects,
|
||||
Type_MagicEffect,
|
||||
Type_Lands,
|
||||
Type_Land,
|
||||
Type_LandTextures,
|
||||
Type_LandTexture,
|
||||
Type_Pathgrids,
|
||||
Type_Pathgrid,
|
||||
Type_StartScripts,
|
||||
|
|
|
@ -172,6 +172,16 @@ void CSVDoc::View::setupWorldMenu()
|
|||
setupShortcut("document-world-references", references);
|
||||
world->addAction (references);
|
||||
|
||||
QAction *lands = new QAction (tr ("Lands"), this);
|
||||
connect (lands, SIGNAL (triggered()), this, SLOT (addLandsSubView()));
|
||||
setupShortcut("document-world-lands", lands);
|
||||
world->addAction (lands);
|
||||
|
||||
QAction *landTextures = new QAction (tr ("Land Textures"), this);
|
||||
connect (landTextures, SIGNAL (triggered()), this, SLOT (addLandTexturesSubView()));
|
||||
setupShortcut("document-world-landtextures", landTextures);
|
||||
world->addAction (landTextures);
|
||||
|
||||
QAction *grid = new QAction (tr ("Pathgrid"), this);
|
||||
connect (grid, SIGNAL (triggered()), this, SLOT (addPathgridSubView()));
|
||||
setupShortcut("document-world-pathgrid", grid);
|
||||
|
@ -876,6 +886,16 @@ void CSVDoc::View::addRunLogSubView()
|
|||
addSubView (CSMWorld::UniversalId::Type_RunLog);
|
||||
}
|
||||
|
||||
void CSVDoc::View::addLandsSubView()
|
||||
{
|
||||
addSubView (CSMWorld::UniversalId::Type_Lands);
|
||||
}
|
||||
|
||||
void CSVDoc::View::addLandTexturesSubView()
|
||||
{
|
||||
addSubView (CSMWorld::UniversalId::Type_LandTextures);
|
||||
}
|
||||
|
||||
void CSVDoc::View::addPathgridSubView()
|
||||
{
|
||||
addSubView (CSMWorld::UniversalId::Type_Pathgrids);
|
||||
|
|
|
@ -224,6 +224,10 @@ namespace CSVDoc
|
|||
|
||||
void addRunLogSubView();
|
||||
|
||||
void addLandsSubView();
|
||||
|
||||
void addLandTexturesSubView();
|
||||
|
||||
void addPathgridSubView();
|
||||
|
||||
void addStartScriptsSubView();
|
||||
|
|
|
@ -43,6 +43,8 @@ void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager)
|
|||
CSMWorld::UniversalId::Type_Spells,
|
||||
CSMWorld::UniversalId::Type_Enchantments,
|
||||
CSMWorld::UniversalId::Type_SoundGens,
|
||||
CSMWorld::UniversalId::Type_Lands,
|
||||
CSMWorld::UniversalId::Type_LandTextures,
|
||||
|
||||
CSMWorld::UniversalId::Type_None // end marker
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue