public List <HighValueIndex> GetHighValueIndexes() { List <HighValueIndex> values = new List <HighValueIndex>(); foreach (var slice in ShipSlices) { for (int tower = 0; tower < slice.Towers.Count; tower++) { for (int spot = 0; spot < slice.Towers[tower].ContanerSpots.Count; spot++) { if (slice.PosibleToAddHighValueContainer(tower, spot)) { HighValueIndex index = new HighValueIndex(); index.Spot = spot; index.Tower = tower; index.Slice = ShipSlices.IndexOf(slice); values.Add(index); } } } } return(values); }
public List <Container> PlaceHighValue(List <Container> highValueContainers) { List <Container> unplaced = new List <Container>(); foreach (var container in highValueContainers) { ShipSide side = ShipSides[GetMostEmptySide()]; List <HighValueIndex> indexes = side.GetHighValueIndexes(); if (indexes.Count == 0) { unplaced.Add(container); continue; } HighValueIndex index = indexes[random.Next(0, indexes.Count)]; if (!side.ShipSlices[index.Slice].Towers[index.Tower].ContanerSpots[index.Spot].AddContainer(container)) { unplaced.Add(container); } } return(unplaced); }