//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
using MUnique.OpenMU.DataModel.Configuration;
using MUnique.OpenMU.GameLogic.Benchmarks.Helpers;
namespace MUnique.OpenMU.GameLogic.Benchmarks;
///
/// Benchmarks for the .
///
[MemoryDiagnoser]
[ThreadingDiagnoser]
[InvocationCount(100)]
public class DropGeneratorBenchmarks
{
private DefaultDropGenerator _generator = null!;
private MonsterDefinition _monster = null!;
private Player _player = null!;
///
/// Global setup for the benchmarks.
///
[GlobalSetup]
public async Task Setup()
{
var config = GameConfigurationTestHelper.Create();
var randomizer = RandomizerTestHelper.Create();
_generator = new DefaultDropGenerator(config, randomizer);
_monster = MonsterTestHelper.Create(10, 1);
_player = await PlayerTestHelper.CreatePlayerAsync();
}
///
/// Benchmarks the drop generation with a single player and monster.
///
/// A value task.
[Benchmark]
public async ValueTask GenerateItemDropsAsync()
=> await _generator.GenerateItemDropsAsync(_monster, 1000, _player);
}