add magazine system (cannot reload currently)

This commit is contained in:
Vinzenz Schroeter 2024-04-29 16:39:37 +02:00
commit 9ccb7c8df8

View file

@ -0,0 +1,44 @@
using System.Text;
namespace TanksServer.Models;
[Flags]
internal enum MagazineType
{
Basic = 1 << 0,
Fast = 1 << 1,
Explosive = 1 << 2,
Smart = 1 << 3,
Mine = 1 << 4,
}
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();
}
}