This repository has been archived on 2025-10-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

53 lines
1.3 KiB
C#

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