2024-04-29 16:39:37 +02:00
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
namespace TanksServer.Models;
|
|
|
|
|
|
|
|
[Flags]
|
|
|
|
internal enum MagazineType
|
|
|
|
{
|
2024-04-29 16:59:37 +02:00
|
|
|
Basic = 0,
|
|
|
|
Fast = 1 << 0,
|
|
|
|
Explosive = 1 << 1,
|
|
|
|
Smart = 1 << 2,
|
2024-04-29 16:39:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
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))
|
2024-04-29 21:52:50 +02:00
|
|
|
sb.Append("» ");
|
2024-04-29 16:39:37 +02:00
|
|
|
if (Type.HasFlag(MagazineType.Explosive))
|
2024-04-29 21:52:50 +02:00
|
|
|
sb.Append("* ");
|
2024-04-29 16:39:37 +02:00
|
|
|
if (Type.HasFlag(MagazineType.Smart))
|
2024-04-29 21:52:50 +02:00
|
|
|
sb.Append("@ ");
|
2024-04-29 16:39:37 +02:00
|
|
|
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|