From eade1ad6dc9e861e0d69278142a658aed1aa276d Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 11 Sep 2025 22:46:20 +0200 Subject: Core/AreaTriggers: Use named query result for loading areatrigger create properties --- src/server/game/Globals/AreaTriggerDataStore.cpp | 60 ++++++++++++------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/src/server/game/Globals/AreaTriggerDataStore.cpp b/src/server/game/Globals/AreaTriggerDataStore.cpp index 67d9132a2a2..c81af657b62 100644 --- a/src/server/game/Globals/AreaTriggerDataStore.cpp +++ b/src/server/game/Globals/AreaTriggerDataStore.cpp @@ -23,6 +23,7 @@ #include "MapManager.h" #include "MapUtils.h" #include "ObjectMgr.h" +#include "QueryResultStructured.h" #include "SpellMgr.h" #include "Timer.h" #include "Types.h" @@ -167,29 +168,25 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() while (templates->NextRow()); } - // 0 1 2 3 4 if (QueryResult areatriggerCreateProperties = WorldDatabase.Query("SELECT Id, IsCustom, AreaTriggerId, IsAreatriggerCustom, Flags, " - // 5 6 7 8 9 10 11 12 13 14 "MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, AnimId, AnimKitId, DecalPropertiesId, SpellForVisuals, TimeToTargetScale, Speed, " - // 15 16 17 18 19 20 21 22 23 24 "Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5, ShapeData6, ShapeData7, ScriptName FROM `areatrigger_create_properties`")) { do { - AreaTriggerCreateProperties createProperties; + DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(ResultSet, (Id)(IsCustom)(AreaTriggerId)(IsAreatriggerCustom)(Flags) + (MoveCurveId)(ScaleCurveId)(MorphCurveId)(FacingCurveId)(AnimId)(AnimKitId)(DecalPropertiesId)(SpellForVisuals)(TimeToTargetScale)(Speed) + (Shape)(ShapeData0)(ShapeData1)(ShapeData2)(ShapeData3)(ShapeData4)(ShapeData5)(ShapeData6)(ShapeData7)(ScriptName) + ) fields { *areatriggerCreateProperties }; - Field* fields = areatriggerCreateProperties->Fetch(); - AreaTriggerCreatePropertiesId createPropertiesId = { fields[0].GetUInt32(), fields[1].GetBool() }; - createProperties.Id = createPropertiesId; - - AreaTriggerId areaTriggerId = { fields[2].GetUInt32(), fields[3].GetBool() }; - createProperties.Template = GetAreaTriggerTemplate(areaTriggerId); + AreaTriggerCreatePropertiesId createPropertiesId = { fields.Id().GetUInt32(), fields.IsCustom().GetBool() }; - createProperties.Flags = AreaTriggerCreatePropertiesFlag(fields[4].GetUInt32()); + AreaTriggerId areaTriggerId = { fields.AreaTriggerId().GetUInt32(), fields.IsAreatriggerCustom().GetBool() }; + AreaTriggerTemplate const* areaTriggerTemplate = GetAreaTriggerTemplate(areaTriggerId); - AreaTriggerShapeType shape = AreaTriggerShapeType(fields[15].GetUInt8()); + AreaTriggerShapeType shape = AreaTriggerShapeType(fields.Shape().GetUInt8()); - if (areaTriggerId.Id && !createProperties.Template) + if (areaTriggerId.Id && !areaTriggerTemplate) { TC_LOG_ERROR("sql.sql", "Table `areatrigger_create_properties` references invalid AreaTrigger (Id: {}, IsCustom: {}) for AreaTriggerCreatePropertiesId (Id: {}, IsCustom: {})", areaTriggerId.Id, uint32(areaTriggerId.IsCustom), createPropertiesId.Id, uint32(createPropertiesId.IsCustom)); @@ -203,6 +200,11 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() continue; } + AreaTriggerCreateProperties& createProperties = _areaTriggerCreateProperties[createPropertiesId]; + createProperties.Id = createPropertiesId; + createProperties.Template = areaTriggerTemplate; + createProperties.Flags = AreaTriggerCreatePropertiesFlag(fields.Flags().GetUInt32()); + #define VALIDATE_AND_SET_CURVE(Curve, Value) \ createProperties.Curve = Value; \ if (createProperties.Curve && !sCurveStore.HasRecord(createProperties.Curve)) \ @@ -212,18 +214,18 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() createProperties.Curve = 0; \ } - VALIDATE_AND_SET_CURVE(MoveCurveId, fields[5].GetUInt32()); - VALIDATE_AND_SET_CURVE(ScaleCurveId, fields[6].GetUInt32()); - VALIDATE_AND_SET_CURVE(MorphCurveId, fields[7].GetUInt32()); - VALIDATE_AND_SET_CURVE(FacingCurveId, fields[8].GetUInt32()); + VALIDATE_AND_SET_CURVE(MoveCurveId, fields.MoveCurveId().GetUInt32()); + VALIDATE_AND_SET_CURVE(ScaleCurveId, fields.ScaleCurveId().GetUInt32()); + VALIDATE_AND_SET_CURVE(MorphCurveId, fields.MorphCurveId().GetUInt32()); + VALIDATE_AND_SET_CURVE(FacingCurveId, fields.FacingCurveId().GetUInt32()); #undef VALIDATE_AND_SET_CURVE - createProperties.AnimId = fields[9].GetInt32(); - createProperties.AnimKitId = fields[10].GetInt32(); + createProperties.AnimId = fields.AnimId().GetInt32(); + createProperties.AnimKitId = fields.AnimKitId().GetInt32(); - createProperties.DecalPropertiesId = fields[11].GetUInt32(); - createProperties.SpellForVisuals = fields[12].GetInt32OrNull(); + createProperties.DecalPropertiesId = fields.DecalPropertiesId().GetUInt32(); + createProperties.SpellForVisuals = fields.SpellForVisuals().GetInt32OrNull(); if (createProperties.SpellForVisuals) { @@ -234,12 +236,14 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() } } - createProperties.TimeToTargetScale = fields[13].GetUInt32(); - createProperties.Speed = fields[14].GetFloat(); + createProperties.TimeToTargetScale = fields.TimeToTargetScale().GetUInt32(); + createProperties.Speed = fields.Speed().GetFloat(); - std::array shapeData = { }; - for (uint8 i = 0; i < MAX_AREATRIGGER_ENTITY_DATA; ++i) - shapeData[i] = fields[16 + i].GetFloat(); + std::array shapeData = + { + fields.ShapeData0().GetFloat(), fields.ShapeData1().GetFloat(), fields.ShapeData2().GetFloat(), fields.ShapeData3().GetFloat(), + fields.ShapeData4().GetFloat(), fields.ShapeData5().GetFloat(), fields.ShapeData6().GetFloat(), fields.ShapeData7().GetFloat() + }; switch (shape) { @@ -283,12 +287,10 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() break; } - createProperties.ScriptId = sObjectMgr->GetScriptId(fields[24].GetString()); + createProperties.ScriptId = sObjectMgr->GetScriptId(fields.ScriptName().GetString()); if (std::vector* spline = Trinity::Containers::MapGetValuePtr(splinesByCreateProperties, createProperties.Id)) createProperties.Movement = std::move(*spline); - - _areaTriggerCreateProperties[createProperties.Id] = createProperties; } while (areatriggerCreateProperties->NextRow()); } -- cgit v1.2.3