add magazine system (cannot reload currently)
This commit is contained in:
parent
4e605d556c
commit
9ccb7c8df8
1 changed files with 86 additions and 32 deletions
44
tanks-backend/TanksServer/Models/Magazine.cs
Normal file
44
tanks-backend/TanksServer/Models/Magazine.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in a new issue