/// <summary> /// Notify listeners and add/update stored allied units. /// </summary> /// <param name="unit">Unit where Alliance == Self</param> private void AddUnitSelf(Unit unit) { if (GameConstants.IsWorker(unit.UnitType)) { if (WorkersSelf.ContainsKey(unit.Tag)) { WorkersSelf[unit.Tag].DataSource = unit; } else { var data = new IntelUnit(unit); WorkersSelf.Add(unit.Tag, data); Handler.Handle(Case.WorkerAddedSelf, data); } } else if (IsBuilding(unit.UnitType)) { if (StructuresSelf.ContainsKey(unit.Tag)) { StructuresSelf[unit.Tag].DataSource = unit; } else { var data = new IntelUnit(unit); StructuresSelf.Add(unit.Tag, data); Handler.Handle(Case.StructureAddedSelf, data); } } else // must be unit { if (UnitsSelf.ContainsKey(unit.Tag)) { UnitsSelf[unit.Tag].DataSource = unit; } else { var data = new IntelUnit(unit); UnitsSelf.Add(unit.Tag, data); Handler.Handle(Case.UnitAddedSelf, data); } } }