using System.Text; namespace TanksServer.Models; [Flags] internal enum MagazineType { Basic = 0, Fast = 1 << 0, Explosive = 1 << 1, Smart = 1 << 2, Mine = 1 << 3, } 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('@'); if (Type.HasFlag(MagazineType.Mine)) sb.Append('\u263c'); if (sb.Length > 0) 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(); } }