mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-01 23:06:41 +00:00
OpenCS: Editing and verifying of projectile speed for magic effects
This commit is contained in:
parent
f7f7502d60
commit
e87c39eeb3
5 changed files with 30 additions and 0 deletions
|
@ -60,6 +60,11 @@ void CSMTools::MagicEffectCheckStage::perform(int stage, CSMDoc::Messages& messa
|
||||||
ESM::MagicEffect effect = record.get();
|
ESM::MagicEffect effect = record.get();
|
||||||
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_MagicEffect, CSMWorld::getRecordId(effect));
|
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_MagicEffect, CSMWorld::getRecordId(effect));
|
||||||
|
|
||||||
|
if (effect.mData.mSpeed <= 0.0f)
|
||||||
|
{
|
||||||
|
messages.add(id, "Speed is less than or equal to zero", "", CSMDoc::Message::Severity_Error);
|
||||||
|
}
|
||||||
|
|
||||||
if (effect.mDescription.empty())
|
if (effect.mDescription.empty())
|
||||||
{
|
{
|
||||||
messages.add(id, "Description is missing", "", CSMDoc::Message::Severity_Warning);
|
messages.add(id, "Description is missing", "", CSMDoc::Message::Severity_Warning);
|
||||||
|
|
|
@ -2079,6 +2079,26 @@ namespace CSMWorld
|
||||||
bool isEditable() const override { return true; }
|
bool isEditable() const override { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename ESXRecordT>
|
||||||
|
struct ProjectileSpeedColumn : public Column<ESXRecordT>
|
||||||
|
{
|
||||||
|
ProjectileSpeedColumn()
|
||||||
|
: Column<ESXRecordT>(Columns::ColumnId_ProjectileSpeed, ColumnBase::Display_Float)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant get(const Record<ESXRecordT>& record) const override { return record.get().mData.mSpeed; }
|
||||||
|
|
||||||
|
void set(Record<ESXRecordT>& record, const QVariant& data) override
|
||||||
|
{
|
||||||
|
ESXRecordT record2 = record.get();
|
||||||
|
record2.mData.mSpeed = data.toFloat();
|
||||||
|
record.setModified(record2);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isEditable() const override { return true; }
|
||||||
|
};
|
||||||
|
|
||||||
template <typename ESXRecordT>
|
template <typename ESXRecordT>
|
||||||
struct SchoolColumn : public Column<ESXRecordT>
|
struct SchoolColumn : public Column<ESXRecordT>
|
||||||
{
|
{
|
||||||
|
|
|
@ -378,6 +378,7 @@ namespace CSMWorld
|
||||||
{ ColumnId_Blocked, "Blocked" },
|
{ ColumnId_Blocked, "Blocked" },
|
||||||
|
|
||||||
{ ColumnId_LevelledCreatureId, "Levelled Creature" },
|
{ ColumnId_LevelledCreatureId, "Levelled Creature" },
|
||||||
|
{ ColumnId_ProjectileSpeed, "Projectile Speed" },
|
||||||
|
|
||||||
// end marker
|
// end marker
|
||||||
{ -1, 0 },
|
{ -1, 0 },
|
||||||
|
|
|
@ -353,6 +353,8 @@ namespace CSMWorld
|
||||||
|
|
||||||
ColumnId_IsLocked = 318,
|
ColumnId_IsLocked = 318,
|
||||||
|
|
||||||
|
ColumnId_ProjectileSpeed = 319,
|
||||||
|
|
||||||
// Allocated to a separate value range, so we don't get a collision should we ever need
|
// Allocated to a separate value range, so we don't get a collision should we ever need
|
||||||
// to extend the number of use values.
|
// to extend the number of use values.
|
||||||
ColumnId_UseValue1 = 0x10000,
|
ColumnId_UseValue1 = 0x10000,
|
||||||
|
|
|
@ -502,6 +502,7 @@ CSMWorld::Data::Data(ToUTF8::FromType encoding, const Files::PathContainer& data
|
||||||
mMagicEffects.addColumn(new FixedRecordTypeColumn<ESM::MagicEffect>(UniversalId::Type_MagicEffect));
|
mMagicEffects.addColumn(new FixedRecordTypeColumn<ESM::MagicEffect>(UniversalId::Type_MagicEffect));
|
||||||
mMagicEffects.addColumn(new SchoolColumn<ESM::MagicEffect>);
|
mMagicEffects.addColumn(new SchoolColumn<ESM::MagicEffect>);
|
||||||
mMagicEffects.addColumn(new BaseCostColumn<ESM::MagicEffect>);
|
mMagicEffects.addColumn(new BaseCostColumn<ESM::MagicEffect>);
|
||||||
|
mMagicEffects.addColumn(new ProjectileSpeedColumn<ESM::MagicEffect>);
|
||||||
mMagicEffects.addColumn(new EffectTextureColumn<ESM::MagicEffect>(Columns::ColumnId_Icon));
|
mMagicEffects.addColumn(new EffectTextureColumn<ESM::MagicEffect>(Columns::ColumnId_Icon));
|
||||||
mMagicEffects.addColumn(new EffectTextureColumn<ESM::MagicEffect>(Columns::ColumnId_Particle));
|
mMagicEffects.addColumn(new EffectTextureColumn<ESM::MagicEffect>(Columns::ColumnId_Particle));
|
||||||
mMagicEffects.addColumn(new EffectObjectColumn<ESM::MagicEffect>(Columns::ColumnId_CastingObject));
|
mMagicEffects.addColumn(new EffectObjectColumn<ESM::MagicEffect>(Columns::ColumnId_CastingObject));
|
||||||
|
@ -512,6 +513,7 @@ CSMWorld::Data::Data(ToUTF8::FromType encoding, const Files::PathContainer& data
|
||||||
mMagicEffects.addColumn(new EffectSoundColumn<ESM::MagicEffect>(Columns::ColumnId_HitSound));
|
mMagicEffects.addColumn(new EffectSoundColumn<ESM::MagicEffect>(Columns::ColumnId_HitSound));
|
||||||
mMagicEffects.addColumn(new EffectSoundColumn<ESM::MagicEffect>(Columns::ColumnId_AreaSound));
|
mMagicEffects.addColumn(new EffectSoundColumn<ESM::MagicEffect>(Columns::ColumnId_AreaSound));
|
||||||
mMagicEffects.addColumn(new EffectSoundColumn<ESM::MagicEffect>(Columns::ColumnId_BoltSound));
|
mMagicEffects.addColumn(new EffectSoundColumn<ESM::MagicEffect>(Columns::ColumnId_BoltSound));
|
||||||
|
|
||||||
mMagicEffects.addColumn(
|
mMagicEffects.addColumn(
|
||||||
new FlagColumn<ESM::MagicEffect>(Columns::ColumnId_AllowSpellmaking, ESM::MagicEffect::AllowSpellmaking));
|
new FlagColumn<ESM::MagicEffect>(Columns::ColumnId_AllowSpellmaking, ESM::MagicEffect::AllowSpellmaking));
|
||||||
mMagicEffects.addColumn(
|
mMagicEffects.addColumn(
|
||||||
|
|
Loading…
Reference in a new issue