mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-30 07:21:12 +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
@ -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(
|
||||||
|
@ -588,7 +588,7 @@ namespace ESM
|
|||||||
mData.mRed = 0;
|
mData.mRed = 0;
|
||||||
mData.mGreen = 0;
|
mData.mGreen = 0;
|
||||||
mData.mBlue = 0;
|
mData.mBlue = 0;
|
||||||
mData.mSpeed = 0;
|
mData.mSpeed = 1;
|
||||||
|
|
||||||
mIcon.clear();
|
mIcon.clear();
|
||||||
mParticle.clear();
|
mParticle.clear();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user