From ea147498e68a9e4b9b200bf53c255d2e82dec757 Mon Sep 17 00:00:00 2001 From: Jens Schmidt Date: Wed, 21 Oct 2020 18:15:27 +0200 Subject: [PATCH] Squad implements IPosition --- Abathur/Core/Combat/Squad.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Abathur/Core/Combat/Squad.cs b/Abathur/Core/Combat/Squad.cs index 4572bfc..5bf6547 100644 --- a/Abathur/Core/Combat/Squad.cs +++ b/Abathur/Core/Combat/Squad.cs @@ -1,15 +1,26 @@ using System; using System.Collections.Generic; +using System.Linq; using Abathur.Model; +using NydusNetwork.API.Protocol; namespace Abathur.Core.Combat { - public class Squad { + public class Squad : IPosition { public ulong Id { get; set; } public String Name { get; set; } public ISet Units { get; set; } = new HashSet(); public ISquadController SquadController { get; set; } - + + Point2D IPosition.Point { get { + var count = Units.Count; + if (count == 0) + return new Point2D { X = float.NaN, Y = float.NaN }; + var p = Units.Aggregate((0.0f, 0.0f), (sum, unit) => (sum.Item1 + unit.Point.X, sum.Item2 + unit.Point.Y)); + return new Point2D { X = p.Item1 / count, Y = p.Item2 / count}; + } + } + public bool AddUnit(IUnit unit) { return Units.Add(unit);