From 4f08efc4d7feab2e7fc0184f3758a205e6dfe3aa Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Mon, 30 Jun 2014 19:51:59 +0200 Subject: [PATCH] added missing combat, magic and stealth columns for creatures (Feature #1312) --- apps/opencs/model/world/columns.cpp | 3 +++ apps/opencs/model/world/columns.hpp | 3 +++ apps/opencs/model/world/refidadapterimp.cpp | 15 +++++++++++++++ apps/opencs/model/world/refidadapterimp.hpp | 7 +++++-- apps/opencs/model/world/refidcollection.cpp | 9 +++++++++ 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/apps/opencs/model/world/columns.cpp b/apps/opencs/model/world/columns.cpp index 7410780e08..7a2e93edfa 100644 --- a/apps/opencs/model/world/columns.cpp +++ b/apps/opencs/model/world/columns.cpp @@ -174,6 +174,9 @@ namespace CSMWorld { ColumnId_PcRank, "PC Rank" }, { ColumnId_Scope, "Scope" }, { ColumnId_ReferenceableId, "Referenceable ID" }, + { ColumnId_CombatState, "Combat" }, + { ColumnId_MagicState, "Magic" }, + { ColumnId_StealthState, "Stealth" }, { ColumnId_UseValue1, "Use value 1" }, { ColumnId_UseValue2, "Use value 2" }, diff --git a/apps/opencs/model/world/columns.hpp b/apps/opencs/model/world/columns.hpp index 1dba99b895..db31113e1d 100644 --- a/apps/opencs/model/world/columns.hpp +++ b/apps/opencs/model/world/columns.hpp @@ -167,6 +167,9 @@ namespace CSMWorld ColumnId_PcRank = 154, ColumnId_Scope = 155, ColumnId_ReferenceableId = 156, + ColumnId_CombatState = 157, + ColumnId_MagicState = 158, + ColumnId_StealthState = 159, // Allocated to a separate value range, so we don't get a collision should we ever need // to extend the number of use values. diff --git a/apps/opencs/model/world/refidadapterimp.cpp b/apps/opencs/model/world/refidadapterimp.cpp index f00e9fc77b..d9a691abdc 100644 --- a/apps/opencs/model/world/refidadapterimp.cpp +++ b/apps/opencs/model/world/refidadapterimp.cpp @@ -248,6 +248,15 @@ QVariant CSMWorld::CreatureRefIdAdapter::getData (const RefIdColumn *column, con if (column==mColumns.mOriginal) return QString::fromUtf8 (record.get().mOriginal.c_str()); + if (column==mColumns.mCombat) + return static_cast (record.get().mData.mCombat); + + if (column==mColumns.mMagic) + return static_cast (record.get().mData.mMagic); + + if (column==mColumns.mStealth) + return static_cast (record.get().mData.mStealth); + std::map::const_iterator iter = mColumns.mFlags.find (column); @@ -271,6 +280,12 @@ void CSMWorld::CreatureRefIdAdapter::setData (const RefIdColumn *column, RefIdDa record.get().mScale = value.toFloat(); else if (column==mColumns.mOriginal) record.get().mOriginal = value.toString().toUtf8().constData(); + else if (column==mColumns.mCombat) + record.get().mData.mCombat = value.toInt(); + else if (column==mColumns.mMagic) + record.get().mData.mMagic = value.toInt(); + else if (column==mColumns.mStealth) + record.get().mData.mStealth = value.toInt(); else { std::map::const_iterator iter = diff --git a/apps/opencs/model/world/refidadapterimp.hpp b/apps/opencs/model/world/refidadapterimp.hpp index bd509a86b6..034905781d 100644 --- a/apps/opencs/model/world/refidadapterimp.hpp +++ b/apps/opencs/model/world/refidadapterimp.hpp @@ -34,7 +34,7 @@ namespace CSMWorld BaseRefIdAdapter (UniversalId::Type type, const BaseColumns& base); virtual std::string getId (const RecordBase& record) const; - + virtual void setId (RecordBase& record, const std::string& id); virtual QVariant getData (const RefIdColumn *column, const RefIdData& data, int index) @@ -57,7 +57,7 @@ namespace CSMWorld { (dynamic_cast&> (record).get().mId) = id; } - + template std::string BaseRefIdAdapter::getId (const RecordBase& record) const { @@ -631,6 +631,9 @@ namespace CSMWorld const RefIdColumn *mSoul; const RefIdColumn *mScale; const RefIdColumn *mOriginal; + const RefIdColumn *mCombat; + const RefIdColumn *mMagic; + const RefIdColumn *mStealth; CreatureColumns (const ActorColumns& actorColumns); }; diff --git a/apps/opencs/model/world/refidcollection.cpp b/apps/opencs/model/world/refidcollection.cpp index 46a22edede..c16218a0be 100644 --- a/apps/opencs/model/world/refidcollection.cpp +++ b/apps/opencs/model/world/refidcollection.cpp @@ -175,6 +175,15 @@ CSMWorld::RefIdCollection::RefIdCollection() creatureColumns.mScale = &mColumns.back(); mColumns.push_back (RefIdColumn (Columns::ColumnId_OriginalCreature, ColumnBase::Display_String)); creatureColumns.mOriginal = &mColumns.back(); + mColumns.push_back ( + RefIdColumn (Columns::ColumnId_CombatState, ColumnBase::Display_Integer)); + creatureColumns.mCombat = &mColumns.back(); + mColumns.push_back ( + RefIdColumn (Columns::ColumnId_MagicState, ColumnBase::Display_Integer)); + creatureColumns.mMagic = &mColumns.back(); + mColumns.push_back ( + RefIdColumn (Columns::ColumnId_StealthState, ColumnBase::Display_Integer)); + creatureColumns.mStealth = &mColumns.back(); static const struct {