//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.GameLogic.PlugIns;
using System.Runtime.InteropServices;
using MUnique.OpenMU.PlugIns;
///
/// A plugin interface which is called when the state of a player has been changed.
///
///
/// Example cases:
/// - Player Entered Game
/// - Player Left Game
/// - Before saving player data
/// - Player Authenticated
/// - Trade finished.
///
[Guid("7AB20179-753F-423C-94F7-16DB03D4D046")]
[PlugInPoint("Player state changed", "Is called when a player state got changed.")]
public interface IPlayerStateChangedPlugIn
{
///
/// Is called when the changed.
///
/// The player.
/// The previous state.
/// The current state.
ValueTask PlayerStateChangedAsync(Player player, State previousState, State currentState);
}