static void Main(string[] args) { //TestAudio(); //KeyCapture(); /* NOTE: Tetris.Lib has no sound support. * So sound functionality is implemented here * */ var render = new TextConsoleRenderer(new VectorInt2(80, 40)); render.Init(); using (var masterLoop = new ConsoleGameLoop <ConsolePixel>(new InputProvider(), render)) { using (var loop = new MasterGameLoop(masterLoop)) { // on startup: var music = new CachedSound(loop.ResourceManager.GetResource("music/Tetris_theme.mp3")); var addFloor = new CachedSound(loop.ResourceManager.GetResource("sfx/AddFloor.mp3")); var lineCompelete = new CachedSound(loop.ResourceManager.GetResource("sfx/LineComplete.mp3")); if (args.Any()) { if (args[0].ToLowerInvariant() == "-j") { loop.Tetris.KeyA = TetrisGameLoop.KeyXArcadeLeft; loop.Tetris.KeyB = TetrisGameLoop.KeyXArcadeRight; } } masterLoop.Scene = loop; masterLoop.Init(); // will init loop // After init... AudioPlaybackEngine.Instance.PlaySound(music); loop.Tetris.GameA.OnEvent += (sender, ge) => { if (ge.Event == TetrisEvents.AddFloor) { AudioPlaybackEngine.Instance.PlaySound(addFloor); } if (ge.Event == TetrisEvents.LineComplete) { AudioPlaybackEngine.Instance.PlaySound(lineCompelete); } }; masterLoop.Start(); } } }
private void DebugUserControl_OnLoaded(object sender, RoutedEventArgs e) { InputProvider = new WPFInputProvider(); this.gameLoop = new WPFGameLoop(InputProvider, this.txt, this.img, (int)(img.Width / 80)); var text = "sokoban"; switch (text) { case "sample": gameLoop.Scene = new SampleScene(gameLoop); gameLoop.Init(); break; case "sokoban": // Init, so that we get the renderer gameLoop.Init(); var bridgeSokobanPixelToConsolePixel = new BridgeSokobanPixelToConsolePixel(gameLoop.Renderer); var host = new BridgeGameLoop <ConsolePixel, SokobanPixel>(gameLoop, bridgeSokobanPixelToConsolePixel); host.Inner = new SokoSolveMasterGameLoop(host); host.Init(); gameLoop.Scene = host; break; case "tetris": var tetris = new MasterGameLoop(gameLoop); gameLoop.Scene = tetris; gameLoop.Init(); break; } gameLoop.Start(); }