public Entity RequestDestroyer(Point spawnPositionInGrid, Direction direction, Transform parent) { Entity?destroyerEntity = data.Find(e => !e.Value.IsEnabled()); if (!destroyerEntity.HasValue) { destroyerEntity = _destroyerFactory.Create(spawnPositionInGrid, direction, parent); data.Add(destroyerEntity.Value); } else { Reset(destroyerEntity, direction); } destroyerEntity.Value.Set(new TargetPosition { Position = GetTargetPosition(direction, spawnPositionInGrid), UseLocalPosition = true }); PlaceDestroyer(destroyerEntity, spawnPositionInGrid, parent); return(destroyerEntity.Value); }