public void PerformUnitActionAt(Position position) { if (_actionStrategy.PerformAction(position, this)) { if (GetUnitAt(position).Type == GameConstants.Archer) { if (_fortifiedArchers.ContainsKey(position)) { _fortifiedArchers.Remove(position); } else { _fortifiedArchers.Add(position, GetUnitAt(position)); } } if (GetUnitAt(position).Type == GameConstants.Settler) { _cities.Add(position, new City(GetUnitAt(position).Owner, position)); _units.Remove(position); } } }