public TeamViewModel(int teamIndex, ScoreboardViewModel scoreboard1, ScoreboardViewModel scoreboard2, WordGameViewModel wordGameViewModel, BingoCardSettings bingoCardSettings, Random random, AudioPlaybackEngine audioPlaybackEngine, ActiveSceneContainer activeSceneContainer) { _teamIndex = teamIndex; _bingoCardSettings = bingoCardSettings; _random = random; _audioPlaybackEngine = audioPlaybackEngine; Scoreboard1 = scoreboard1; Scoreboard2 = scoreboard2; WordGameViewModel = wordGameViewModel; ActiveSceneContainer = activeSceneContainer; if (teamIndex == 0) { this.WhenAnyValue(x => x.ActiveSceneContainer.IsTeam1Active).ToPropertyEx(this, x => x.OnAir); } else { this.WhenAnyValue(x => x.ActiveSceneContainer.IsTeam2Active).ToPropertyEx(this, x => x.OnAir); } CreateNewBingoCard(); }
public BingoViewModel(BingoCardSettings settings, Random random, AudioPlaybackEngine audioEngine) { _settings = settings; _audioEngine = audioEngine; _winSound = new CachedSound(@"Resources\Sounds\Bingo\slingo_win.wav"); _fillBallShortSound = new CachedSound(@"Resources\Sounds\Bingo\ball_fill_short.wav"); _fillBallLongSound = new CachedSound(@"Resources\Sounds\Bingo\ball_fill_long.wav"); int[] numbers = Enumerable.Range(1, 50).Where(x => settings.EvenNumber ? (x % 2 == 0) : (x % 2 != 0)).ToArray(); Matrix = SetupMatrix(random, numbers, settings.FilledBalls); MatrixForAnimation = CopyMatrix(Matrix); IsAnimating = true; }
} // TODO move to model class public GameViewModel(Settings settings, GameState state, AudioPlaybackEngine audioPlaybackEngine, ActiveSceneContainer activeSceneContainer) { Random random = new Random(); var audioPlaybackEngine1 = audioPlaybackEngine; ScoreBoardTeam1 = new ScoreboardViewModel(state.Team1, HorizontalAlignment.Left); ScoreBoardTeam2 = new ScoreboardViewModel(state.Team2, HorizontalAlignment.Right); WordGameViewModel = new WordGameViewModel(state, audioPlaybackEngine); var bingoCardSettingsTeam1 = new BingoCardSettings(true, settings.ExcludedBallNumbersEven); var bingoCardSettingsTeam2 = new BingoCardSettings(false, settings.ExcludedBallNumbersOdd); Team1ViewModel = new TeamViewModel(0, ScoreBoardTeam1, ScoreBoardTeam2, WordGameViewModel, bingoCardSettingsTeam1, random, audioPlaybackEngine1, activeSceneContainer); Team2ViewModel = new TeamViewModel(1, ScoreBoardTeam1, ScoreBoardTeam2, WordGameViewModel, bingoCardSettingsTeam2, random, audioPlaybackEngine1, activeSceneContainer); CountDownStarted = ReactiveCommand.Create(() => new Unit()); this.WhenAnyValue(x => x.WordGameViewModel.BoardViewModel).Where(x => x != null).Subscribe(x => { WordGameStarted(); }); }