//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.GameLogic.PlugIns;
using System.ComponentModel.DataAnnotations;
using MUnique.OpenMU.DataModel.Composition;
///
/// Configuration for the .
///
public class PlayerLosesExperienceAfterDeathPlugInConfiguration
{
///
/// Gets or sets the losses per level.
///
///
/// The losses per level.
///
[Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_LossesPerLevel_Name))]
[MemberOfAggregate]
[ScaffoldColumn(true)]
public ICollection LossesPerLevel { get; set; } = new List();
///
/// Defines the losses for a specific level range.
///
public class LossOfLevel
{
///
/// Initializes a new instance of the class.
///
public LossOfLevel()
{
}
///
/// Initializes a new instance of the class.
///
/// The minimum level.
/// If set to true, this entry only applies to master characters.
/// The losses.
public LossOfLevel(int minimumLevel, bool isMaster, List losses)
{
this.MinimumLevel = minimumLevel;
this.IsMaster = isMaster;
this.Losses = losses;
}
///
/// Gets or sets the minimum level.
///
///
/// The minimum level.
///
[Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_MinimumLevel_Name))]
public int MinimumLevel { get; set; }
///
/// Gets or sets a value indicating whether this instance applies only to master characters.
///
[Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_IsMaster_Name))]
public bool IsMaster { get; set; }
///
/// Gets or sets the loss per .
///
[Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_Losses_Name))]
[MemberOfAggregate]
[ScaffoldColumn(true)]
public ICollection Losses { get; set; } = [];
}
///
/// Defines the experience loss for a specific .
///
public class LossPerStage
{
///
/// Initializes a new instance of the class.
///
public LossPerStage()
{
}
///
/// Initializes a new instance of the class.
///
/// The state.
/// The experience loss percentage.
public LossPerStage(HeroState state, double experienceLossPercentage)
{
this.State = state;
this.ExperienceLossPercentage = experienceLossPercentage;
}
///
/// Gets or sets the state.
///
[Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_State_Name))]
public HeroState State { get; set; }
///
/// Gets or sets the experience loss percentage.
///
[Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_ExperienceLossPercentage_Name))]
public double ExperienceLossPercentage { get; set; }
}
}