public List <ISquarePiece> SelectPieces(PieceSelectionValidator validator, int total)
        {
            var selectedPieces = new List <ISquarePiece>();

            int iterationCount = 0;

            while (selectedPieces.Count < total && iterationCount < 100)
            {
                iterationCount++;
                var piece = PieceManager.Instance.Pieces[UnityEngine.Random.Range(0, PieceManager.Instance.Pieces.Count)];

                if (!validator.ValidForSelection(piece))
                {
                    continue;
                }

                if (selectedPieces.Contains(piece))
                {
                    continue;
                }

                selectedPieces.Add(piece);
            }

            return(selectedPieces);
        }
Exemple #2
0
        public List <ISquarePiece> SelectPieces(PieceSelectionValidator validator, int total)
        {
            var pieces = PieceManager.Instance.Pieces;

            if (_includeQueued)
            {
                pieces.AddRange(PieceDropper.Instance.Pieces.Where(x => validator.ValidForSelection(x)));
            }

            var filteredList = pieces.Where(x => validator.ValidForSelection(x));

            if (total > 0)
            {
                return(filteredList.OrderBy(x => UnityEngine.Random.Range(1, 100))
                       .Take(total).ToList());
            }

            return(filteredList.ToList());
        }
Exemple #3
0
 public bool CanBeUsed(PieceSelectionValidator validator, int total)
 {
     return(PieceManager.Instance.Pieces.Any(x => validator.ValidForSelection(x)));
 }
 public bool CanBeUsed(PieceSelectionValidator validator, int total)
 {
     return(SelectPieces(validator, total).Count > 0);
 }
Exemple #5
0
 public List <ISquarePiece> SelectPieces(PieceSelectionValidator validator, int total)
 {
     return(PieceManager.Instance.Pieces.Where(x => Positions.Contains(x.Position)).ToList());
 }
Exemple #6
0
 public bool CanBeUsed(PieceSelectionValidator validator, int total)
 {
     return(PieceManager.Instance.Pieces.Any(x => Positions.Contains(x.Position)));
 }