From cf79d69487a4f05a4fa5876bd5bc0c80f0479358 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 26 Sep 2021 13:49:13 -0400 Subject: [PATCH] Core/Movement: use helpers for validation Port From (https://github.com/TrinityCore/TrinityCore/commit/0b6049fe0bf49a8c21114960cb7a6522f48c8308) --- Source/Game/AI/SmartScripts/SmartAIManager.cs | 3 ++- Source/Game/Entities/Unit/Unit.Movement.cs | 4 ++-- Source/Game/Movement/MotionMaster.cs | 9 +++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Source/Game/AI/SmartScripts/SmartAIManager.cs b/Source/Game/AI/SmartScripts/SmartAIManager.cs index 9692e7c7f..f7268ad21 100644 --- a/Source/Game/AI/SmartScripts/SmartAIManager.cs +++ b/Source/Game/AI/SmartScripts/SmartAIManager.cs @@ -19,6 +19,7 @@ using Framework.Constants; using Framework.Database; using Game.DataStorage; using Game.Entities; +using Game.Movement; using Game.Spells; using System; using System.Collections.Generic; @@ -717,7 +718,7 @@ namespace Game.AI } case SmartEvents.Movementinform: { - if (e.Event.movementInform.type >= (uint)MovementGeneratorType.Max) + if (MotionMaster.IsInvalidMovementGeneratorType((MovementGeneratorType)e.Event.movementInform.type)) { Log.outError(LogFilter.ScriptsAi, "SmartAIMgr: Entry {0} SourceType {1} Event {2} Action {3} uses invalid Motion type {4}, skipped.", e.EntryOrGuid, e.GetScriptType(), e.EventId, e.GetActionType(), e.Event.movementInform.type); return false; diff --git a/Source/Game/Entities/Unit/Unit.Movement.cs b/Source/Game/Entities/Unit/Unit.Movement.cs index 5ddf576b6..f518a2cca 100644 --- a/Source/Game/Entities/Unit/Unit.Movement.cs +++ b/Source/Game/Entities/Unit/Unit.Movement.cs @@ -169,7 +169,7 @@ namespace Game.Entities public void PauseMovement(uint timer = 0, MovementSlot slot = 0, bool forced = true) { - if (slot >= MovementSlot.Max) + if (MotionMaster.IsInvalidMovementSlot(slot)) return; IMovementGenerator movementGenerator = GetMotionMaster().GetMotionSlot(slot); @@ -182,7 +182,7 @@ namespace Game.Entities public void ResumeMovement(uint timer = 0, MovementSlot slot = 0) { - if (slot >= MovementSlot.Max) + if (MotionMaster.IsInvalidMovementSlot(slot)) return; IMovementGenerator movementGenerator = GetMotionMaster().GetMotionSlot(slot); diff --git a/Source/Game/Movement/MotionMaster.cs b/Source/Game/Movement/MotionMaster.cs index e83bb1b87..226ab388d 100644 --- a/Source/Game/Movement/MotionMaster.cs +++ b/Source/Game/Movement/MotionMaster.cs @@ -110,7 +110,7 @@ namespace Game.Movement public void Clear(MovementSlot slot) { - if (Empty() || slot >= MovementSlot.Max) + if (Empty() || IsInvalidMovementSlot(slot)) return; if (_cleanFlag.HasAnyFlag(MotionMasterCleanFlag.Update)) @@ -147,7 +147,7 @@ namespace Game.Movement public MovementGeneratorType GetMotionSlotType(MovementSlot slot) { - if (Empty() || slot >= MovementSlot.Max || _slot[(int)slot] == null) + if (Empty() || IsInvalidMovementSlot(slot) || _slot[(int)slot] == null) return MovementGeneratorType.Max; return _slot[(int)slot].GetMovementGeneratorType(); @@ -155,7 +155,7 @@ namespace Game.Movement public IMovementGenerator GetMotionSlot(MovementSlot slot) { - if (Empty() || slot >= MovementSlot.Max || _slot[(int)slot] == null) + if (Empty() || IsInvalidMovementSlot(slot) || _slot[(int)slot] == null) return null; return _slot[(int)slot]; @@ -814,7 +814,8 @@ namespace Game.Movement return (movement == staticIdleMovement); } - bool IsInvalidMovementGeneratorType(MovementGeneratorType type) { return type == MovementGeneratorType.MaxDB || type == MovementGeneratorType.Max; } + public static bool IsInvalidMovementGeneratorType(MovementGeneratorType type) { return type == MovementGeneratorType.MaxDB || type >= MovementGeneratorType.Max; } + public static bool IsInvalidMovementSlot(MovementSlot slot) { return slot >= MovementSlot.Max; } static uint splineId;