public IJSResponse StartGame(IJSRequest request)
 {
     string emulator = request.GetParameter("emulator");
     string id = request.GetParameter("id");
     IEmulatorBridge bridge = this.CoreInstance.Get<IPluginManager>().Plugins<IEmulatorBridge>()[emulator];
     IGameInfo gameInfo = this.CoreInstance.Get<IGameDatabase>().GetGameByUUID(id);
     var gameStartEvent = new GameStartEventArgs(this.CoreInstance, gameInfo, bridge.EmulatorAssembly, bridge);
     SnowflakeEventManager.EventSource.RaiseEvent(gameStartEvent);
     if (!gameStartEvent.Cancel)
     {
         gameStartEvent.GameEmulatorBridge.StartRom(gameStartEvent.GameInfo);
     }
     return new JSResponse(request, gameInfo);
 }
 public void GameStartEvent_Test()
 {
     SnowflakeEventManager.InitEventSource();
     new StandardEvents().RegisterSnowflakeEvents(SnowflakeEventManager.EventSource);
     var fakeCoreService = new Mock<ICoreService>();
     var fakeGameInfo = new Mock<IGameInfo>();
     var fakeEmulatorAssembly = new Mock<IEmulatorAssembly>();
     var fakeEmulatorBridge = new Mock<IEmulatorBridge>();
     var args = new GameStartEventArgs(fakeCoreService.Object, fakeGameInfo.Object, fakeEmulatorAssembly.Object, fakeEmulatorBridge.Object);
     SnowflakeEventManager.EventSource.Subscribe<GameStartEventArgs>((s, e) =>
     {
         Assert.Equal(args, e);
     });
     SnowflakeEventManager.EventSource.RaiseEvent(args);
 }