public WordViewModel(LetterViewModel[] letterViewModels) { _letterViewModels = letterViewModels; string word = ""; for (int i = 0; i < LIMIT; i++) { word += letterViewModels[i].Model.Content; } _wordModel = new WordModel(word); }
public int CreateNewContext() { for (int i = 65; i < 65 + 26; i++) { _letterViewModels[i - 65] = new LetterViewModel(Convert.ToString((char)i)); _letterViewModels[i - 65].LetterViewModelClicked += LetterViewModelClicked; _letterViewModels[i - 65].LetterViewModelEnable += LetterViewModelEnable; } _stateMachines.Add(new LetterViewModelStateMachine(_letterViewModels)); return _stateMachines.Count - 1; }
public override void Execute(object parameter) { InputViewModel inputViewModel = parameter as InputViewModel; ObservableCollection<LetterViewModel> letterViewModelCollection = inputViewModel.LetterViewModels; LetterViewModel[] letterViewModels = new LetterViewModel[LIMIT]; for(int i = 0; i < LIMIT; i++) { letterViewModels[i] = letterViewModelCollection.ElementAt(i); } WordViewModel wordViewModel = new WordViewModel(letterViewModels); WordViewModelManager.GetInstance().AddWord(wordViewModel); inputViewModel.ClearLetterViewModels(); }
internal LetterViewModelStateMachine(LetterViewModel[] letterViewModels) { _letterViewModels = letterViewModels; foreach(LetterViewModel letterViewModel in _letterViewModels) { _stateMap[letterViewModel] = ColorState.NEUTRAL; _letterMap[letterViewModel.Model.Content] = letterViewModel; } _styleMap[ColorState.ELIMINATED] = (Style)Application.Current.Resources["RedKeyStyle"]; _styleMap[ColorState.SELECTED] = (Style)Application.Current.Resources["GreenKeyStyle"]; _styleMap[ColorState.NEUTRAL] = (Style)Application.Current.Resources["GrayKeyStyle"]; _styleMap[ColorState.DISABLE_ELIMINATED] = (Style)Application.Current.Resources["DisableRedKeyStyle"]; _styleMap[ColorState.DISABLE_SELECTED] = (Style)Application.Current.Resources["DisableGreenKeyStyle"]; _styleMap[ColorState.DISABLE_NEUTRAL] = (Style)Application.Current.Resources["DisableGrayKeyStyle"]; }
public void PushLetterViewModel(LetterViewModel letterViewModel) { if (!IsComplete) { letterViewModel.IsEnabled = false; _models.Add(letterViewModel); } }
internal int TransitionState(LetterViewModel letterViewModel) { if (letterViewModel.IsEnabled) { switch (_stateMap[letterViewModel]) { case ColorState.NEUTRAL: letterViewModel.Style = _styleMap[ColorState.ELIMINATED]; _stateMap[letterViewModel] = ColorState.ELIMINATED; break; case ColorState.ELIMINATED: ColorState state = _full ? ColorState.NEUTRAL : ColorState.SELECTED; _selectedCounter = _full ? _selectedCounter : _selectedCounter + 1; letterViewModel.Style = _styleMap[state]; _stateMap[letterViewModel] = state; break; case ColorState.SELECTED: letterViewModel.Style = _styleMap[ColorState.NEUTRAL]; _stateMap[letterViewModel] = ColorState.NEUTRAL; _selectedCounter--; break; case ColorState.DISABLE_NEUTRAL: letterViewModel.Style = _styleMap[ColorState.NEUTRAL]; _stateMap[letterViewModel] = ColorState.NEUTRAL; break; case ColorState.DISABLE_ELIMINATED: letterViewModel.Style = _styleMap[ColorState.ELIMINATED]; _stateMap[letterViewModel] = ColorState.ELIMINATED; break; case ColorState.DISABLE_SELECTED: letterViewModel.Style = _styleMap[ColorState.SELECTED]; _stateMap[letterViewModel] = ColorState.SELECTED; break; default: Debug.Assert(false, "Invalid letter view model given"); break; } } else { switch (_stateMap[letterViewModel]) { case ColorState.DISABLE_NEUTRAL: letterViewModel.Style = _styleMap[ColorState.DISABLE_ELIMINATED]; _stateMap[letterViewModel] = ColorState.DISABLE_ELIMINATED; break; case ColorState.DISABLE_ELIMINATED: ColorState state = _full ? ColorState.DISABLE_NEUTRAL : ColorState.DISABLE_SELECTED; _selectedCounter = _full ? _selectedCounter : _selectedCounter + 1; letterViewModel.Style = _styleMap[state]; _stateMap[letterViewModel] = state; break; case ColorState.DISABLE_SELECTED: letterViewModel.Style = _styleMap[ColorState.DISABLE_NEUTRAL]; _stateMap[letterViewModel] = ColorState.DISABLE_NEUTRAL; _selectedCounter--; break; case ColorState.NEUTRAL: letterViewModel.Style = _styleMap[ColorState.DISABLE_NEUTRAL]; _stateMap[letterViewModel] = ColorState.DISABLE_NEUTRAL; break; case ColorState.ELIMINATED: letterViewModel.Style = _styleMap[ColorState.DISABLE_ELIMINATED]; _stateMap[letterViewModel] = ColorState.DISABLE_ELIMINATED; break; case ColorState.SELECTED: letterViewModel.Style = _styleMap[ColorState.DISABLE_SELECTED]; _stateMap[letterViewModel] = ColorState.DISABLE_SELECTED; break; default: Debug.Assert(false, "Invalid letter view model given"); break; } } _full = _selectedCounter >= LIMIT; return _selectedCounter; }
private void LetterViewModelClicked(object sender, LetterViewModel model) { _stateMachines[_gameIndex].TransitionState(model); }