public PuzzleBoardViewModel(IPuzzlesService puzzlesService, ISchedulerProvider scheduler, IUserService userService)
 {
     _cells = new ObservableCollection<CellEmptyViewModel>();
     _words = new ObservableCollection<WordViewModel>();
     _scheduler = scheduler;
     _userService = userService;
     _puzzlesService = puzzlesService;
     CreateCellsForBoard();
 }
        public PuzzleBoardViewModel(int puzzleId, IPuzzlesService puzzlesService = null, IUserService userService = null)
        {
            _cells = new ObservableCollection <EmptyCellViewModel>();
            CreateCellsForBoard();
            PuzzlesService = puzzlesService ?? Locator.Current.GetService <IPuzzlesService>();
            UserService    = userService ?? Locator.Current.GetService <IUserService>();
            //Todo: Load words based on Id. Can the order of steps here have more smarts?

            _selectedWord = this.WhenAny(vm => vm.CurrentSelectedCell, x => x.Value)
                            .Where(x => x != null)
                            .Select(x => SetLikelyWordMatchOnBoardForSelectedCell(x))
                            .ToProperty(this, x => x.SelectedWord);

            _selectedWordLength = this.WhenAny(vm => vm._selectedWord, x => x.Value)
                                  .Where(x => x.Value != null)
                                  .Select(x => x.Value.Cells.Count)
                                  .ToProperty(this, x => x.SelectedWordLength);
        }
 public GameDataService(IPuzzleWebApiService puzzleWebApiService, IPuzzlesService puzzlesService)
 {
     _puzzleWebApiService = puzzleWebApiService;
     _puzzlesService = puzzlesService;
 }
 public TestPuzzleBoardViewModel(IPuzzlesService puzzlesService, ISchedulerProvider scheduler, IUserService userService) : base(puzzlesService, scheduler, userService)
 {
 }