namespace RhythmBase.Components;
///
/// A Character.
///
public readonly struct RDCharacter
{
///
/// Whether in-game character or customized character(sprite).
///
public bool IsCustom { get; }
///
/// In-game character.
///
/// If using a customized character, this value will be empty
///
public RDCharacters? Character { get; }
///
/// Customized character(sprite).
///
/// If using an in-game character, this value will be empty
///
public string? CustomCharacter { get; }
///
/// Construct an in-game character.
///
/// Character type.
public RDCharacter(RDCharacters character)
{
IsCustom = false;
Character = character;
}
///
/// Construct a customized character.
///
/// A sprite.
public RDCharacter(string character)
{
IsCustom = true;
CustomCharacter = character;
}
///
public static implicit operator RDCharacter(RDCharacters character) => new(character);
///
public static implicit operator RDCharacter(string character) => new(character);
///
public override readonly string ToString() => (IsCustom
? (CustomCharacter)
: Character?.ToString())
?? "[Null]";
}