Add Bug and conecpt of completeness

This commit is contained in:
Andrew Cooper
2022-07-12 07:41:45 +10:00
parent 6078da8c78
commit be9f0a92f8
8 changed files with 26 additions and 0 deletions

13
16_Bug/csharp/Bug.cs Normal file
View File

@@ -0,0 +1,13 @@
using BugGame.Parts;
using BugGame.Resources;
namespace BugGame;
internal class Bug
{
private readonly Body _body = new();
public bool IsComplete => _body.IsComplete;
public bool TryAdd(IPart part, out Message message) => _body.TryAdd(part, out message);
}

View File

@@ -13,6 +13,8 @@ internal class Body : ParentPart
{ {
} }
public override bool IsComplete => _neck.IsComplete && _tail.IsComplete && _legs.IsComplete;
protected override bool TryAddCore(IPart part, out Message message) protected override bool TryAddCore(IPart part, out Message message)
=> part switch => part switch
{ {

View File

@@ -11,6 +11,8 @@ internal class Head : ParentPart
{ {
} }
public override bool IsComplete => _feelers.IsComplete;
protected override bool TryAddCore(IPart part, out Message message) protected override bool TryAddCore(IPart part, out Message message)
=> part switch => part switch
{ {

View File

@@ -3,4 +3,5 @@ namespace BugGame.Parts;
internal interface IPart internal interface IPart
{ {
string Name { get; } string Name { get; }
bool IsComplete { get; }
} }

View File

@@ -11,6 +11,8 @@ internal class Neck : ParentPart
{ {
} }
public override bool IsComplete => _head.IsComplete;
protected override bool TryAddCore(IPart part, out Message message) protected override bool TryAddCore(IPart part, out Message message)
=> part switch => part switch
{ {

View File

@@ -13,6 +13,8 @@ internal class Part
_duplicateMessage = duplicateMessage; _duplicateMessage = duplicateMessage;
} }
public virtual bool IsComplete => IsPresent;
protected bool IsPresent { get; private set; } protected bool IsPresent { get; private set; }
public string Name => GetType().Name; public string Name => GetType().Name;

View File

@@ -16,6 +16,8 @@ internal class PartCollection
_fullMessage = fullMessage; _fullMessage = fullMessage;
} }
public bool IsComplete => _count == _maxCount;
public bool TryAddOne(out Message message) public bool TryAddOne(out Message message)
{ {
if (_count < _maxCount) if (_count < _maxCount)

View File

@@ -1,3 +1,5 @@
using BugGame.Parts;
namespace BugGame.Resources; namespace BugGame.Resources;
internal class Message internal class Message