//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.GameLogic;
///
/// The interface for a drop generator.
///
public interface IDropGenerator
{
///
/// Gets the item drops which are generated when a monster got killed by a player.
///
/// The monster which got killed.
/// The experience which the player gained form the kill (relevant for the money drop).
/// The player who killed the monster.
///
/// The item drops and money which are generated when a monster got killed by a player.
///
ValueTask<(IEnumerable- Items, uint? Money)> GenerateItemDropsAsync(MonsterDefinition monster, int gainedExperience, Player player);
///
/// Generates an item based on a .
///
/// The which defines which item should be generated.
/// The generated item or .
Item? GenerateItemDrop(DropItemGroup group);
///
/// Generates an item based on a s.
///
/// The s which define which item should be generated.
/// The generated item, money and drop effect of the selected group.
(Item? Item, uint? Money, ItemDropEffect DropEffect) GenerateItemDrop(IEnumerable groups);
}