using System.Text;

namespace TanksServer.Models;

[Flags]
internal enum MagazineType
{
    Basic = 0,
    Fast = 1 << 0,
    Explosive = 1 << 1,
    Smart = 1 << 2,
}

internal readonly record struct Magazine(MagazineType Type, byte UsedBullets, byte MaxBullets)
{
    public bool Empty => UsedBullets >= MaxBullets;

    public string ToDisplayString()
    {
        var sb = new StringBuilder();

        if (Type.HasFlag(MagazineType.Fast))
            sb.Append("» ");
        if (Type.HasFlag(MagazineType.Explosive))
            sb.Append("* ");
        if (Type.HasFlag(MagazineType.Smart))
            sb.Append("@ ");

        sb.Append("[ ");
        for (var i = 0; i < UsedBullets; i++)
            sb.Append("\u25cb ");
        for (var i = UsedBullets; i < MaxBullets; i++)
            sb.Append("• ");
        sb.Append(']');

        return sb.ToString();
    }
}