Files
basic-computer-games/16_Bug/csharp/Parts/PartCollection.cs
2022-07-14 00:39:17 +10:00

51 lines
1.2 KiB
C#

using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
internal class PartCollection
{
private readonly int _maxCount;
private readonly Message _addedMessage;
private readonly Message _fullMessage;
private int _count;
public PartCollection(int maxCount, Message addedMessage, Message fullMessage)
{
_maxCount = maxCount;
_addedMessage = addedMessage;
_fullMessage = fullMessage;
}
public bool IsComplete => _count == _maxCount;
public bool TryAddOne(out Message message)
{
if (_count < _maxCount)
{
_count++;
message = _addedMessage.ForValue(_count);
return true;
}
message = _fullMessage;
return false;
}
protected void AppendTo(StringBuilder builder, int offset, int length, char character)
{
if (_count == 0) { return; }
for (var i = 0; i < length; i++)
{
builder.Append(' ', offset);
for (var j = 0; j < _count; j++)
{
builder.Append(character).Append(' ');
}
builder.AppendLine();
}
}
}