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);
        }
Example #2
0
        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);
        }