private void UpdateKnownLetters(WordPuzzleEntry entry) { char[] knownLetters = KnownLetters.ToCharArray(); for (int i = 0; i < KnownLetters.Length; i++) { if (knownLetters[i] == '.') { if (entry.LetterEntries[i].State == LetterState.CorrectLocation) { knownLetters[i] = entry.LetterEntries[i].Letter; } } } KnownLetters = new string(knownLetters); }
public char AddBonusLetter(out int index) { char[] knownLetters = KnownLetters.ToCharArray(); for (int i = 0; i < KnownLetters.Length; i++) { if (knownLetters[i] == '.') { knownLetters[i] = _wordPuzzle.Word[i]; KnownLetters = new string(knownLetters); index = i; return(_wordPuzzle.Word[i]); } } throw new Exception("Word is already known"); }
private void SwitchTeam(bool onNewRow) { SwitchTeamFlags flag = onNewRow ? SwitchTeamFlags.AddRow : SwitchTeamFlags.ClearRow; ActiveTeamIndex = ActiveTeamIndex == 0 ? 1 : 0; if (KnownLetters.Count(x => x == '.') > 1) { State = new WordGameStateInfo(WordGameState.SwitchTeam, flag | SwitchTeamFlags.AddBonusLetter); } else { if (_oneLetterLeftFailures++ > 1) { State = new WordGameStateInfo(WordGameState.Lost); } else { State = new WordGameStateInfo(WordGameState.SwitchTeam, flag); } } }