diff --git a/16_Bug/csharp/Bug.cs b/16_Bug/csharp/Bug.cs new file mode 100644 index 00000000..e013d1b6 --- /dev/null +++ b/16_Bug/csharp/Bug.cs @@ -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); +} \ No newline at end of file diff --git a/16_Bug/csharp/Parts/Body.cs b/16_Bug/csharp/Parts/Body.cs index 61aad080..65fde374 100644 --- a/16_Bug/csharp/Parts/Body.cs +++ b/16_Bug/csharp/Parts/Body.cs @@ -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) => part switch { diff --git a/16_Bug/csharp/Parts/Head.cs b/16_Bug/csharp/Parts/Head.cs index 2d5e705d..bafa172f 100644 --- a/16_Bug/csharp/Parts/Head.cs +++ b/16_Bug/csharp/Parts/Head.cs @@ -11,6 +11,8 @@ internal class Head : ParentPart { } + public override bool IsComplete => _feelers.IsComplete; + protected override bool TryAddCore(IPart part, out Message message) => part switch { diff --git a/16_Bug/csharp/Parts/IPart.cs b/16_Bug/csharp/Parts/IPart.cs index e325a7c1..3d1a45c5 100644 --- a/16_Bug/csharp/Parts/IPart.cs +++ b/16_Bug/csharp/Parts/IPart.cs @@ -3,4 +3,5 @@ namespace BugGame.Parts; internal interface IPart { string Name { get; } + bool IsComplete { get; } } diff --git a/16_Bug/csharp/Parts/Neck.cs b/16_Bug/csharp/Parts/Neck.cs index 035d0c18..ee5853e2 100644 --- a/16_Bug/csharp/Parts/Neck.cs +++ b/16_Bug/csharp/Parts/Neck.cs @@ -11,6 +11,8 @@ internal class Neck : ParentPart { } + public override bool IsComplete => _head.IsComplete; + protected override bool TryAddCore(IPart part, out Message message) => part switch { diff --git a/16_Bug/csharp/Parts/Part.cs b/16_Bug/csharp/Parts/Part.cs index a1a5d64d..ada12b8c 100644 --- a/16_Bug/csharp/Parts/Part.cs +++ b/16_Bug/csharp/Parts/Part.cs @@ -13,6 +13,8 @@ internal class Part _duplicateMessage = duplicateMessage; } + public virtual bool IsComplete => IsPresent; + protected bool IsPresent { get; private set; } public string Name => GetType().Name; diff --git a/16_Bug/csharp/Parts/PartCollection.cs b/16_Bug/csharp/Parts/PartCollection.cs index 43a684b5..aac0bbd2 100644 --- a/16_Bug/csharp/Parts/PartCollection.cs +++ b/16_Bug/csharp/Parts/PartCollection.cs @@ -16,6 +16,8 @@ internal class PartCollection _fullMessage = fullMessage; } + public bool IsComplete => _count == _maxCount; + public bool TryAddOne(out Message message) { if (_count < _maxCount) diff --git a/16_Bug/csharp/Resources/Message.cs b/16_Bug/csharp/Resources/Message.cs index 5cd9f998..be85faf8 100644 --- a/16_Bug/csharp/Resources/Message.cs +++ b/16_Bug/csharp/Resources/Message.cs @@ -1,3 +1,5 @@ +using BugGame.Parts; + namespace BugGame.Resources; internal class Message