Exemple #1
0
 public CharBoard CreateLoot(Random random, Encounter value)
 {
     return(new CharBoard(
                CharCells.Select(c => c.WithLoot(random, value)),
                PossibleWords,
                NextSelectionIndex
                ));
 }
Exemple #2
0
        public Maybe <CharBoard> MakeAutoLetterSelection(char letter)
        {
            var maybeOpenCell = CharCells.FirstOrDefault(c => !c.IsSelected && c.Value == letter).ToMaybe();

            if (maybeOpenCell.HasValue)
            {
                var newCell  = maybeOpenCell.Value.Select(NextSelectionIndex);
                var newCells = CharCells.Select(c => c == maybeOpenCell.Value ? newCell : c);
                return(new CharBoard(newCells, PossibleWords, NextSelectionIndex + 1).ToMaybe());
            }

            return(Maybe.None <CharBoard>());
        }
Exemple #3
0
        internal Maybe <CharBoard> UndoLastSelection()
        {
            var mLastSelected = CharCells
                                .OrderByDescending(c => c.SelectionIndex.HasValue ? c.SelectionIndex.Value : -1)
                                .FirstOrDefault(v => v.SelectionIndex.HasValue)
                                .ToMaybe();

            if (!mLastSelected.HasValue)
            {
                return(Maybe.None <CharBoard>());
            }

            var lastSelected = mLastSelected.Value;

            var newCells = CharCells.Select(c => c == lastSelected ? lastSelected.Deselect() : c);

            return(new CharBoard(newCells, PossibleWords, NextSelectionIndex - 1).ToMaybe());
        }
Exemple #4
0
        public Maybe <CharCell> GetSelectionAtWordIndex(int index)
        {
            var selectionIndex = index - 2;

            return(CharCells.FirstOrDefault(cs => cs.SelectionIndex.ValueOr(() => - 1) == selectionIndex).ToMaybe());
        }
Exemple #5
0
 public IEnumerable <Item> CollectItems()
 {
     return(CharCells.Where(c => c.IsSelected && c.Item.HasValue).Select(c => c.Item.Value).ToArray());
 }