mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-16 15:29:55 +00:00
Merge branch 'opencs-projectile-speed' into 'master'
OpenMW-CS: Editing and verifying of projectile speed for magic effects See merge request OpenMW/openmw!3939
This commit is contained in:
commit
2056da358d
6 changed files with 31 additions and 1 deletions
|
@ -60,6 +60,11 @@ void CSMTools::MagicEffectCheckStage::perform(int stage, CSMDoc::Messages& messa
|
|||
ESM::MagicEffect effect = record.get();
|
||||
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())
|
||||
{
|
||||
messages.add(id, "Description is missing", "", CSMDoc::Message::Severity_Warning);
|
||||
|
|
|
@ -2079,6 +2079,26 @@ namespace CSMWorld
|
|||
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>
|
||||
struct SchoolColumn : public Column<ESXRecordT>
|
||||
{
|
||||
|
|
|
@ -378,6 +378,7 @@ namespace CSMWorld
|
|||
{ ColumnId_Blocked, "Blocked" },
|
||||
|
||||
{ ColumnId_LevelledCreatureId, "Levelled Creature" },
|
||||
{ ColumnId_ProjectileSpeed, "Projectile Speed" },
|
||||
|
||||
// end marker
|
||||
{ -1, 0 },
|
||||
|
|
|
@ -353,6 +353,8 @@ namespace CSMWorld
|
|||
|
||||
ColumnId_IsLocked = 318,
|
||||
|
||||
ColumnId_ProjectileSpeed = 319,
|
||||
|
||||
// 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,
|
||||
|
|
|
@ -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 SchoolColumn<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_Particle));
|
||||
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_AreaSound));
|
||||
mMagicEffects.addColumn(new EffectSoundColumn<ESM::MagicEffect>(Columns::ColumnId_BoltSound));
|
||||
|
||||
mMagicEffects.addColumn(
|
||||
new FlagColumn<ESM::MagicEffect>(Columns::ColumnId_AllowSpellmaking, ESM::MagicEffect::AllowSpellmaking));
|
||||
mMagicEffects.addColumn(
|
||||
|
|
|
@ -588,7 +588,7 @@ namespace ESM
|
|||
mData.mRed = 0;
|
||||
mData.mGreen = 0;
|
||||
mData.mBlue = 0;
|
||||
mData.mSpeed = 0;
|
||||
mData.mSpeed = 1;
|
||||
|
||||
mIcon.clear();
|
||||
mParticle.clear();
|
||||
|
|
Loading…
Reference in a new issue