//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.GameLogic.PlugIns;
using System;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using MUnique.OpenMU.Pathfinding;
using MUnique.OpenMU.PlugIns;
///
/// A plugin point interface for speed hack checking.
///
[Guid("F01BEF4A-32EE-4D56-BEB0-BE503B748DC7")]
[PlugInPoint("Speedhack Cheat Check", "Is called for walk/attack speedhack checks and movement state resets.")]
public interface ISpeedHackCheatCheckPlugIn
{
///
/// Checks if the walk speed is within limits.
///
/// The player.
/// The steps requested by the player.
/// The event args to mark a violation.
ValueTask WalkCheatCheckAsync(Player player, Memory steps, SpeedHackCheckEventArgs eventArgs);
///
/// Checks if the attack speed is within limits.
///
/// The player.
/// The event args to mark a violation.
ValueTask AttackCheatCheckAsync(Player player, SpeedHackCheckEventArgs eventArgs);
///
/// Resets the movement speed check state for the player.
///
/// The player.
ValueTask ResetMovementStateAsync(Player player);
}