public void Delete_ShouldExpectedChanges() { //Given var movie = CreateMovie(3); var movieSession = new MovieSession { MovieId = movie.Id, MotionGraphics = MotionGraphics.ThreeDimensions, Audio = MovieAudio.Original, TicketPrice = 1, PresentationStart = DateTime.Now.AddDays(10), Room = new MovieRoom { Name = "Room 1", Seats = 50 } }; _movieSessionService.Create(movieSession); var expectedChanges = 1; //When var changes = _movieSessionService.Delete(movieSession.Id); //Then Assert.Equal(expectedChanges, changes); }
public ViewResult SessionsList(MovieSession movieSession) { var filteredMovieSessions = unitOfWork.MovieSessions .GetFilteredSessions(movieSession.AuditoriumId, movieSession.MovieId, movieSession.SessionDate); return(View(filteredMovieSessions)); }
protected List <MovieSession> queryMovieSessionList = new List <MovieSession>();//用来存放查询的结果 protected void Page_Load(object sender, EventArgs e) { DataSet dataSet = new DataSet(); dataSet = (DataSet)Session["dataSet"]; for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { MovieSession movieSession = new MovieSession(); movieSession.setMovieNo(dataSet.Tables[0].Rows[i][0].ToString().Trim()); movieSession.setMovieName(dataSet.Tables[0].Rows[i][1].ToString().Trim()); movieSession.setHallName(dataSet.Tables[0].Rows[i][2].ToString().Trim()); movieSession.setPlayingDate(dataSet.Tables[0].Rows[i][3].ToString().Trim()); movieSession.setTime(dataSet.Tables[0].Rows[i][4].ToString().Trim()); queryMovieSessionList.Add(movieSession); } //点击删除按钮时 string deleteHallName = Request.QueryString["deleteHallName"]; string deletePlayingDate = Request.QueryString["deletePlayingDate"]; string deleteTime = Request.QueryString["deleteTime"]; Session["deleteHallName"] = deleteHallName; Session["deletePlayingDate"] = deletePlayingDate; Session["deleteTime"] = deleteTime; if (deleteHallName != null) { string strMsg = "确定要删除吗?"; Session["request"] = "backStage_queryMovieSession"; Response.Write("<Script Language='JavaScript'>if ( window.confirm('" + strMsg + "')) {alert('删除成功!');window.location.href ='executeDeleteSql.aspx'} else {history.back();};</script>"); } }
public bool StartNewMovie(IMovie movie, bool record) { if (movie == null) { throw new ArgumentNullException($"{nameof(movie)} cannot be null."); } try { MovieSession.QueueNewMovie(movie, record, Emulator.SystemId); } catch (MoviePlatformMismatchException ex) { using var ownerForm = new Form { TopMost = true }; MessageBox.Show(ownerForm, ex.Message, "Movie/Platform Mismatch", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } RebootCore(); Config.RecentMovies.Add(movie.Filename); MovieSession.RunQueuedMovie(record, Emulator); SetMainformMovieInfo(); if (MovieSession.Movie.Hash != Game.Hash) { AddOnScreenMessage("Warning: Movie hash does not match the ROM"); } return(!Emulator.IsNull()); }
public void Delete_ShouldThrowException_WhenPresentationStartLessThan10() { //Given var movie = CreateMovie(4); var movieSession = new MovieSession { MovieId = movie.Id, MotionGraphics = MotionGraphics.ThreeDimensions, Audio = MovieAudio.Original, TicketPrice = 1, PresentationStart = DateTime.Now.AddDays(9), Room = new MovieRoom { Name = "Room 100 Seats", Seats = 100 } }; _movieSessionService.Create(movieSession); //When void action() => _movieSessionService.Delete(movieSession.Id); //Then Assert.Throws <ValidationException>(action); }
public async Task <IActionResult> Edit(int id, [Bind("MovieSessionId,CineplexId,MovieId,SessionTime")] MovieSession movieSession) { if (id != movieSession.MovieSessionId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(movieSession); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!MovieSessionExists(movieSession.MovieSessionId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Index")); } ViewData["CineplexId"] = new SelectList(_context.Cineplex, "CineplexId", "Location", movieSession.CineplexId); ViewData["MovieId"] = new SelectList(_context.Movie, "MovieId", "LongDescription", movieSession.MovieId); return(View(movieSession)); }
private void ConvertCurrentMovieToTasproj() { MovieSession.ConvertToTasProj(); CurrentTasMovie.GreenzoneInvalidated = GreenzoneInvalidated; Settings.RecentTas.Add(MovieSession.Movie.Filename); MainForm.SetMainformMovieInfo(); }
public IActionResult Post(MovieSession movieSession) { return(Try(() => { var changes = _movieSessionService.Create(movieSession); return Created("/moviesessions/" + movieSession.Id, changes); })); }
private bool LoadFile(FileInfo file, bool startsFromSavestate = false, int gotoFrame = 0) { if (!file.Exists) { Settings.RecentTas.HandleLoadError(MainForm, file.FullName); return(false); } _engaged = false; var newMovie = (ITasMovie)MovieSession.Get(file.FullName); newMovie.BindMarkersToInput = Settings.BindMarkersToInput; newMovie.GreenzoneInvalidated = GreenzoneInvalidated; if (!HandleMovieLoadStuff(newMovie)) { return(false); } _engaged = true; Settings.RecentTas.Add(newMovie.Filename); // only add if it did load if (startsFromSavestate) { GoToFrame(0); } else if (gotoFrame > 0) { GoToFrame(gotoFrame); } else { GoToFrame(CurrentTasMovie.TasSession.CurrentFrame); } // If we are loading an existing non-default movie, we will already have columns generated // Only set up columns if needed if (!TasView.AllColumns.Any()) { SetUpColumns(); } UpdateAutoFire(); SetUpToolStripColumns(); CurrentTasMovie.PropertyChanged += TasMovie_OnPropertyChanged; CurrentTasMovie.Branches.Current = CurrentTasMovie.TasSession.CurrentBranch; BookMarkControl.UpdateTextColumnWidth(); MarkerControl.UpdateTextColumnWidth(); // clear all selections TasView.DeselectAll(); BookMarkControl.Restart(); MarkerControl.Restart(); RefreshDialog(); return(true); }
public RedirectToRouteResult SaveSession(MovieSession movieSession) { if (movieSession.Id == 0) { unitOfWork.MovieSessions.Add(movieSession); } unitOfWork.Save(); return(RedirectToAction("Sessions")); }
private void StopMovie(bool saveChanges = true) { if (IsSlave && Master.WantsToControlStopMovie) { Master.StopMovie(!saveChanges); } else { MovieSession.StopMovie(saveChanges); SetMainformMovieInfo(); } }
public async Task <IActionResult> Create([Bind("MovieSessionId,CineplexId,MovieId,SessionTime")] MovieSession movieSession) { if (ModelState.IsValid) { _context.Add(movieSession); await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewData["CineplexId"] = new SelectList(_context.Cineplex, "CineplexId", "Location", movieSession.CineplexId); ViewData["MovieId"] = new SelectList(_context.Movie, "MovieId", "LongDescription", movieSession.MovieId); return(View(movieSession)); }
private void AddSessionCommandExecute(object obj) { MovieSession ms = new MovieSession { id_cinema = SelectedCinemaSession.id, id_film = SelectedFilmSession.id, id_hall = SelectedHallSession.id, date = SelectedDateSession }; _database.MovieSession.Add(ms); SessionsToDelete.Add(ms); DatabaseSaveChangesCommandExecute(null); }
public IMovieController GetBranchInput(string branchId, int frame) { var branch = CurrentTasMovie.Branches.FirstOrDefault(b => b.Uuid.ToString() == branchId); if (branch == null || frame >= branch.InputLog.Count) { return(null); } var controller = MovieSession.GenerateMovieController(); controller.SetFromMnemonic(branch.InputLog[frame]); return(controller); }
private void LoadMovie(string filename, string archive = null) { if (Emulator.IsNull()) { OpenRom(); } if (Emulator.IsNull()) { return; } StartNewMovie(MovieSession.Get(filename), false); }
public bool StartNewMovie(IMovie movie, bool record) { if (movie == null) { throw new ArgumentNullException($"{nameof(movie)} cannot be null."); } var oldPreferredCores = new Dictionary <string, string>(Config.PreferredCores); try { try { MovieSession.QueueNewMovie(movie, record, Emulator.SystemId, Config.PreferredCores); } catch (MoviePlatformMismatchException ex) { using var ownerForm = new Form { TopMost = true }; MessageBox.Show(ownerForm, ex.Message, "Movie/Platform Mismatch", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } if (!_isLoadingRom) { var rebootSucceeded = RebootCore(); if (!rebootSucceeded) { return(false); } } Config.RecentMovies.Add(movie.Filename); MovieSession.RunQueuedMovie(record, Emulator); } finally { Config.PreferredCores = oldPreferredCores; } SetMainformMovieInfo(); if (MovieSession.Movie.Hash != Game.Hash) { AddOnScreenMessage("Warning: Movie hash does not match the ROM"); } return(!Emulator.IsNull()); }
private IMovieController ControllerFromMnemonicStr(string inputLogEntry) { try { var controller = MovieSession.GenerateMovieController(); controller.SetFromMnemonic(inputLogEntry); return(controller); } catch (Exception) { DialogController.ShowMessageBox($"Invalid mnemonic string: {inputLogEntry}", "Paste Input failed!"); return(null); } }
private void SeedSessions(IMovieSessionService movieSessionService, int count = 15) { for (int i = 1; i <= count; i++) { var movieSession = new MovieSession { MovieId = new Random().Next(1, 15), RoomId = new Random().Next(1, 5), TicketPrice = 30 + i, Audio = (MovieAudio) new Random().Next(1, 3), MotionGraphics = (MotionGraphics) new Random().Next(2, 4), PresentationStart = DateTime.Now.AddDays(i), }; movieSessionService.Create(movieSession); } }
private int CreateSession(int movieId, int nextDays = 1) { var movieSession = new MovieSession { MovieId = movieId, MotionGraphics = MotionGraphics.ThreeDimensions, TicketPrice = 1, PresentationStart = DateTime.Now.AddDays(nextDays), Audio = MovieAudio.Dubbing, Room = new MovieRoom { Name = "Room 1", Seats = 50, } }; _movieSessionService.Create(movieSession); return(movieSession.RoomId); }
private void LoadMovie(string filename, string archive = null) { if (Emulator.IsNull()) { OpenRom(); if (Emulator.IsNull()) { return; } } if (GlobalWin.Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.LoadMovieFile(filename); } else { StartNewMovie(MovieSession.Get(filename), false); } }
public void Create_ShouldThrowException_WhenRoomWasSelected() { //Given var movie = CreateMovie(2); var nextDays = 1; var roomId = CreateSession(movie.Id, nextDays); var movieSession = new MovieSession { MovieId = movie.Id, RoomId = roomId, TicketPrice = 1, Audio = MovieAudio.Original, MotionGraphics = MotionGraphics.ThreeDimensions, PresentationStart = DateTime.Now.AddDays(nextDays), }; //When void action() => _movieSessionService.Create(movieSession); //Then Assert.Throws <ValidationException>(action); }
private void StartNewTasMovie() { if (!AskSaveChanges()) { return; } var filename = DefaultTasProjName(); // TODO don't do this, take over any mainform actions that can crash without a filename var tasMovie = (ITasMovie)MovieSession.Get(filename); tasMovie.BindMarkersToInput = Settings.BindMarkersToInput; tasMovie.TasStateManager.InvalidateCallback = GreenzoneInvalidated; tasMovie.PropertyChanged += TasMovie_OnPropertyChanged; tasMovie.PopulateWithDefaultHeaderValues( Emulator, Game, GlobalWin.FirmwareManager, Config.DefaultAuthor); SetTasMovieCallbacks(tasMovie); tasMovie.ClearChanges(); // Don't ask to save changes here. tasMovie.Save(); if (HandleMovieLoadStuff(tasMovie)) { CurrentTasMovie.TasStateManager.Capture(); // Capture frame 0 always. } // clear all selections TasView.DeselectAll(); BookMarkControl.Restart(); MarkerControl.Restart(); SetUpColumns(); RefreshDialog(); TasView.Refresh(); }
public void AddError(MovieSession movieSession, string errorMessage, bool shouldDelete = false) { var checkoutErrors = CheckoutErrors .Where(ce => ce.MovieSession.Id == movieSession.Id); if (checkoutErrors.Count() == 0) { CheckoutErrors.Add(new CheckoutError { MovieSession = movieSession, Errors = new string[] { errorMessage }.ToList(), ShouldDelete = shouldDelete }); } else { foreach (var ce in checkoutErrors) { ce.Errors.Add(errorMessage); ce.ShouldDelete = ce.ShouldDelete == true ? true : shouldDelete; } } }
public int Create(MovieSession movieSession) { _movieSessionValidator.ValidateAndThrow(movieSession); var movie = _movieTheaterDbRepository.Query <Movie>().FirstOrDefault(e => e.Id == movieSession.MovieId); movieSession.PresentationEnd = movieSession.PresentationStart.AddMinutes(movie.Duration); var roomReserved = _movieTheaterDbRepository.Query <MovieSession>() .Any(ms => ms.RoomId == movieSession.RoomId && ((ms.PresentationStart <= movieSession.PresentationStart && movieSession.PresentationStart <= ms.PresentationEnd) || (ms.PresentationStart <= movieSession.PresentationEnd && movieSession.PresentationEnd <= ms.PresentationEnd))); if (roomReserved) { var message = "You can't create a new session in this room, cause it has already been reserved."; throw new ValidationException(message); } _movieTheaterDbRepository.Add(movieSession); var changes = _movieTheaterDbRepository.Commit(); return(changes); }
private void TastudioStopMovie() { MovieSession.StopMovie(false); MainForm.SetMainformMovieInfo(); }
protected void Page_Load(object sender, EventArgs e) { string sqlyuju1 = "Select MovieSchedual.MovieNo,MovieName,HallName,PlayingDate,Time from Movies,MovieSchedual,Schedual,VedioHalls" + " where Movies.MovieNo = MovieSchedual.MovieNo and MovieSchedual.SessionNo = Schedual.SessionNo and MovieSchedual.HallNo = VedioHalls.HallNo order by MovieNo asc,PlayingDate asc,Time asc"; string sqlyuju2 = "Select count(*) from MovieSchedual"; sqlconnection.openDatabase(); SqlCommand cmd1 = sqlconnection.executeSQL(sqlyuju1); SqlDataAdapter sda = new SqlDataAdapter(cmd1); DataSet dataSet = new DataSet(); sda.Fill(dataSet); for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { MovieSession movieSession = new MovieSession(); movieSession.setMovieNo(dataSet.Tables[0].Rows[i][0].ToString().Trim()); movieSession.setMovieName(dataSet.Tables[0].Rows[i][1].ToString().Trim()); movieSession.setHallName(dataSet.Tables[0].Rows[i][2].ToString().Trim()); movieSession.setPlayingDate(dataSet.Tables[0].Rows[i][3].ToString().Trim()); movieSession.setTime(dataSet.Tables[0].Rows[i][4].ToString().Trim()); movieSessionList.Add(movieSession); } SqlCommand cmd2 = sqlconnection.executeSQL(sqlyuju2); SqlDataReader sdr = cmd2.ExecuteReader();//创建数据读取器对象 sdr.Read(); sdr.Close(); int playCount = (int)cmd2.ExecuteScalar();//传回放映信息记录数 double n = playCount / 12.0; yeshu = (int)Math.Ceiling(n); sqlconnection.closeDatabase(); string ye = Request.QueryString["ye"]; if (ye != null && ye != "0") { int yeshuTime = int.Parse(ye); if (yeshuTime <= yeshu) { if (yeshuTime > (int)Session["yeshuTime"]) { Session["yeshuTime"] = yeshuTime; } if (yeshuTime <= (int)Session["yeshuTime"]) { Session["yeshuTime"] = yeshuTime; } } } //点击删除按钮时 string deleteHallName = Request.QueryString["deleteHallName"]; string deletePlayingDate = Request.QueryString["deletePlayingDate"]; string deleteTime = Request.QueryString["deleteTime"]; Session["deleteHallName"] = deleteHallName; Session["deletePlayingDate"] = deletePlayingDate; Session["deleteTime"] = deleteTime; if (deleteHallName != null) { string strMsg = "确定要删除吗?"; Session["request"] = "backStage_playManagement"; Response.Write("<Script Language='JavaScript'>if ( window.confirm('" + strMsg + "')) {alert('删除成功!');window.location.href ='executeDeleteSql.aspx'} else {history.back();};</script>"); } }
public static void Initialize(ApplicationDbContext db) { db.Database.EnsureCreated(); var movies = new Movie[] { new Movie { Title = "The Nun", ReleaseDate = new DateTime(2018, 9, 7), Genre = "Horror, Mystery, Thriller", Classification = "MA-15", Rating = null, RuntimeMinutes = 120, PosterFileName = null, Description = "A priest named Father Burke is sent to Romania to investigate the mysterious death of a nun." }, new Movie { Title = "The Predator", ReleaseDate = new DateTime(2018, 9, 14), Genre = " Action, Adventure, Horror", Classification = "MA-15", Rating = null, RuntimeMinutes = 120, PosterFileName = null, Description = "The story will be focusing on military veterans encountering a Predator ship in a suburban neighborhood. After denial from government personnel they band together to deal with the intergalactic hunter. Assisting them will be scientists and a young autistic boy who is a language savant." }, new Movie { Title = "White Boy Rick", ReleaseDate = new DateTime(2018, 9, 21), Genre = "Crime, Drama", Classification = "MA", Rating = null, RuntimeMinutes = 110, PosterFileName = null, Description = "The story of teenager Richard Wershe Jr., who became an undercover informant for the FBI during the 1980s and was ultimately arrested for drug-trafficking and sentenced to life in prison." }, new Movie { Title = "Johnny English Strikes Again", ReleaseDate = new DateTime(2018, 10, 12), Genre = "Action, Adventure, Comedy", Classification = "PG", Rating = null, RuntimeMinutes = 130, PosterFileName = null, Description = "After a cyber-attack reveals the identity of all of the active undercover agents in Britain, Johnny English is forced to come out of retirement to find the mastermind hacker." }, new Movie { Title = "The House with a Clock in Its Walls", ReleaseDate = new DateTime(2018, 09, 21), Genre = "Fantasy, Horror, Mystery", Classification = "PG", Rating = null, RuntimeMinutes = 100, PosterFileName = null, Description = "A young orphan named Lewis Barnavelt aids his magical uncle in locating a clock with the power to bring about the end of the world." } }; db.Movies.AddRange(movies); db.SaveChanges(); var theaters = new Theater[] { new Theater { Name = "Theater #1", Capacity = 50, Address = "123 Lygon Street, Melbourn" }, new Theater { Name = "Theater #2", Capacity = 50, Address = "123 Lygon Street, Melbourn" }, new Theater { Name = "Theater #3", Capacity = 50, Address = "123 Lygon Street, Melbourn" }, new Theater { Name = "Theater #4", Capacity = 50, Address = "123 Lygon Street, Melbourn" }, new Theater { Name = "Theater #5", Capacity = 50, Address = "123 Lygon Street, Melbourn" }, }; db.Theaters.AddRange(theaters); var movieSessions = new MovieSession[] { // movies[0] new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[0].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(3).AddHours(7.5), }, new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[0].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(3).AddHours(10), }, new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[0].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(3).AddHours(16), }, new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[0].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(3).AddHours(20), }, new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(4).AddHours(7.5), }, new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(4).AddHours(10), }, new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(4).AddHours(16), }, new MovieSession { MovieId = movies[0].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[0].ReleaseDate.Value.Date.AddDays(4).AddHours(20), }, // movies[1] new MovieSession { MovieId = movies[1].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[1].ReleaseDate.Value.Date.AddDays(4).AddHours(8), }, new MovieSession { MovieId = movies[1].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[1].ReleaseDate.Value.Date.AddDays(4).AddHours(12), }, new MovieSession { MovieId = movies[1].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[1].ReleaseDate.Value.Date.AddDays(4).AddHours(16), }, new MovieSession { MovieId = movies[1].Id, TheaterId = theaters[1].Id, ScheduledAt = movies[1].ReleaseDate.Value.Date.AddDays(4).AddHours(20), }, // movies[2] new MovieSession { MovieId = movies[2].Id, TheaterId = theaters[2].Id, ScheduledAt = movies[2].ReleaseDate.Value.Date.AddDays(4).AddHours(8), }, new MovieSession { MovieId = movies[2].Id, TheaterId = theaters[2].Id, ScheduledAt = movies[2].ReleaseDate.Value.Date.AddDays(4).AddHours(12), }, new MovieSession { MovieId = movies[2].Id, TheaterId = theaters[2].Id, ScheduledAt = movies[2].ReleaseDate.Value.Date.AddDays(4).AddHours(16), }, new MovieSession { MovieId = movies[2].Id, TheaterId = theaters[2].Id, ScheduledAt = movies[2].ReleaseDate.Value.Date.AddDays(4).AddHours(20), }, // movies[3] new MovieSession { MovieId = movies[3].Id, TheaterId = theaters[3].Id, ScheduledAt = movies[3].ReleaseDate.Value.Date.AddDays(4).AddHours(8), }, new MovieSession { MovieId = movies[3].Id, TheaterId = theaters[3].Id, ScheduledAt = movies[3].ReleaseDate.Value.Date.AddDays(4).AddHours(12), }, new MovieSession { MovieId = movies[3].Id, TheaterId = theaters[3].Id, ScheduledAt = movies[3].ReleaseDate.Value.Date.AddDays(4).AddHours(16), }, new MovieSession { MovieId = movies[3].Id, TheaterId = theaters[3].Id, ScheduledAt = movies[3].ReleaseDate.Value.Date.AddDays(4).AddHours(20), }, // movies[4] new MovieSession { MovieId = movies[4].Id, TheaterId = theaters[4].Id, ScheduledAt = movies[4].ReleaseDate.Value.Date.AddDays(1).AddHours(8), }, new MovieSession { MovieId = movies[4].Id, TheaterId = theaters[4].Id, ScheduledAt = movies[4].ReleaseDate.Value.Date.AddDays(1).AddHours(12), }, new MovieSession { MovieId = movies[4].Id, TheaterId = theaters[4].Id, ScheduledAt = movies[4].ReleaseDate.Value.Date.AddDays(1).AddHours(16), }, new MovieSession { MovieId = movies[4].Id, TheaterId = theaters[4].Id, ScheduledAt = movies[4].ReleaseDate.Value.Date.AddDays(1).AddHours(20), }, }; db.MovieSessions.AddRange(movieSessions); db.SaveChanges(); }
public void UpdateMovieSessions(MovieSession item) { msrep.Update(item); }
public bool StartNewMovie(IMovie movie, bool record) { // SuuperW: Check changes. adelikat: this could break bk2 movies // TODO: Clean up the saving process if (movie.IsActive() && (movie.Changes || !(movie is TasMovie))) { movie.Save(); } try { MovieSession.QueueNewMovie(movie, record, Emulator); } catch (MoviePlatformMismatchException ex) { using var ownerForm = new Form { TopMost = true }; MessageBox.Show(ownerForm, ex.Message, "Movie/Platform Mismatch", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } RebootCore(); if (MovieSession.PreviousNesInQuickNES.HasValue) { Config.NesInQuickNes = MovieSession.PreviousNesInQuickNES.Value; MovieSession.PreviousNesInQuickNES = null; } if (MovieSession.PreviousSnesInSnes9x.HasValue) { Config.SnesInSnes9x = MovieSession.PreviousSnesInSnes9x.Value; MovieSession.PreviousSnesInSnes9x = null; } if (MovieSession.PreviousGbaUsemGba.HasValue) { Config.GbaUsemGba = MovieSession.PreviousGbaUsemGba.Value; MovieSession.PreviousGbaUsemGba = null; } if (MovieSession.PreviousGbUseGbHawk.HasValue) { Config.GbUseGbHawk = MovieSession.PreviousGbUseGbHawk.Value; MovieSession.PreviousGbUseGbHawk = null; } Config.RecentMovies.Add(movie.Filename); if (Emulator.HasSavestates() && movie.StartsFromSavestate) { if (movie.TextSavestate != null) { Emulator.AsStatable().LoadStateText(new StringReader(movie.TextSavestate)); } else { Emulator.AsStatable().LoadStateBinary(new BinaryReader(new MemoryStream(movie.BinarySavestate, false))); } if (movie.SavestateFramebuffer != null && Emulator.HasVideoProvider()) { var b1 = movie.SavestateFramebuffer; var b2 = Emulator.AsVideoProvider().GetVideoBuffer(); int len = Math.Min(b1.Length, b2.Length); for (int i = 0; i < len; i++) { b2[i] = b1[i]; } } Emulator.ResetCounters(); } else if (Emulator.HasSaveRam() && movie.StartsFromSaveRam) { Emulator.AsSaveRam().StoreSaveRam(movie.SaveRam); } MovieSession.RunQueuedMovie(record); SetMainformMovieInfo(); Tools.Restart <VirtualpadTool>(); if (MovieSession.Movie.Hash != Game.Hash) { AddOnScreenMessage("Warning: Movie hash does not match the ROM"); } return(!(Emulator is NullEmulator)); }
private bool CheckHotkey(string trigger) { switch (trigger) { default: return(false); // General case "Pause": TogglePause(); break; case "Toggle Throttle": _unthrottled ^= true; ThrottleMessage(); break; case "Soft Reset": SoftReset(); break; case "Hard Reset": HardReset(); break; case "Quick Load": LoadQuickSave($"QuickSave{Config.SaveSlot}"); break; case "Quick Save": SaveQuickSave($"QuickSave{Config.SaveSlot}"); break; case "Clear Autohold": ClearAutohold(); break; case "Screenshot": TakeScreenshot(); break; case "Screen Raw to Clipboard": // Ctrl+C clash. any tool that has such acc must check this. // maybe check if mainform has focus instead? if (Tools.IsLoaded <TAStudio>() && Tools.Get <TAStudio>().ContainsFocus) { break; } TakeScreenshotToClipboard(); break; case "Screen Client to Clipboard": TakeScreenshotClientToClipboard(); break; case "Full Screen": ToggleFullscreen(); break; case "Open ROM": OpenRom(); break; case "Close ROM": CloseRom(); break; case "Load Last ROM": LoadRomFromRecent(Config.RecentRoms.MostRecent); break; case "Flush SaveRAM": FlushSaveRAM(); break; case "Display FPS": ToggleFps(); break; case "Frame Counter": ToggleFrameCounter(); break; case "Lag Counter": if (Emulator.CanPollInput()) { ToggleLagCounter(); } break; case "Input Display": ToggleInputDisplay(); break; case "Toggle BG Input": ToggleBackgroundInput(); break; case "Toggle Menu": MainMenuStrip.Visible ^= true; break; case "Volume Up": VolumeUp(); break; case "Volume Down": VolumeDown(); break; case "Toggle Sound": ToggleSound(); break; case "Exit Program": _exitRequestPending = true; break; case "Record A/V": if (OSTailoredCode.IsUnixHost) { AddOnScreenMessage("(A/V only available on Windows for now)"); } else { RecordAv(); } break; case "Stop A/V": StopAv(); break; case "Larger Window": IncreaseWindowSize(); break; case "Smaller Window": DecreaseWindowSize(); break; case "Increase Speed": IncreaseSpeed(); break; case "Decrease Speed": DecreaseSpeed(); break; case "Reboot Core": RebootCore(); break; case "Toggle Skip Lag Frame": Config.SkipLagFrame ^= true; AddOnScreenMessage($"Skip Lag Frames toggled {(Config.SkipLagFrame ? "On" : "Off")}"); break; case "Toggle Key Priority": ToggleKeyPriority(); break; // Save States case "Save State 0": SaveQuickSave("QuickSave0"); Config.SaveSlot = 0; UpdateStatusSlots(); break; case "Save State 1": SaveQuickSave("QuickSave1"); Config.SaveSlot = 1; UpdateStatusSlots(); break; case "Save State 2": SaveQuickSave("QuickSave2"); Config.SaveSlot = 2; UpdateStatusSlots(); break; case "Save State 3": SaveQuickSave("QuickSave3"); Config.SaveSlot = 3; UpdateStatusSlots(); break; case "Save State 4": SaveQuickSave("QuickSave4"); Config.SaveSlot = 4; UpdateStatusSlots(); break; case "Save State 5": SaveQuickSave("QuickSave5"); Config.SaveSlot = 5; UpdateStatusSlots(); break; case "Save State 6": SaveQuickSave("QuickSave6"); Config.SaveSlot = 6; UpdateStatusSlots(); break; case "Save State 7": SaveQuickSave("QuickSave7"); Config.SaveSlot = 7; UpdateStatusSlots(); break; case "Save State 8": SaveQuickSave("QuickSave8"); Config.SaveSlot = 8; UpdateStatusSlots(); break; case "Save State 9": SaveQuickSave("QuickSave9"); Config.SaveSlot = 9; UpdateStatusSlots(); break; case "Load State 0": LoadQuickSave("QuickSave0"); Config.SaveSlot = 0; UpdateStatusSlots(); break; case "Load State 1": LoadQuickSave("QuickSave1"); Config.SaveSlot = 1; UpdateStatusSlots(); break; case "Load State 2": LoadQuickSave("QuickSave2"); Config.SaveSlot = 2; UpdateStatusSlots(); break; case "Load State 3": LoadQuickSave("QuickSave3"); Config.SaveSlot = 3; UpdateStatusSlots(); break; case "Load State 4": LoadQuickSave("QuickSave4"); Config.SaveSlot = 4; UpdateStatusSlots(); break; case "Load State 5": LoadQuickSave("QuickSave5"); Config.SaveSlot = 5; UpdateStatusSlots(); break; case "Load State 6": LoadQuickSave("QuickSave6"); Config.SaveSlot = 6; UpdateStatusSlots(); break; case "Load State 7": LoadQuickSave("QuickSave7"); Config.SaveSlot = 7; UpdateStatusSlots(); break; case "Load State 8": LoadQuickSave("QuickSave8"); Config.SaveSlot = 8; UpdateStatusSlots(); break; case "Load State 9": LoadQuickSave("QuickSave9"); Config.SaveSlot = 9; UpdateStatusSlots(); break; case "Select State 0": SelectSlot(0); break; case "Select State 1": SelectSlot(1); break; case "Select State 2": SelectSlot(2); break; case "Select State 3": SelectSlot(3); break; case "Select State 4": SelectSlot(4); break; case "Select State 5": SelectSlot(5); break; case "Select State 6": SelectSlot(6); break; case "Select State 7": SelectSlot(7); break; case "Select State 8": SelectSlot(8); break; case "Select State 9": SelectSlot(9); break; case "Save Named State": SaveStateAs(); break; case "Load Named State": LoadStateAs(); break; case "Previous Slot": PreviousSlot(); break; case "Next Slot": NextSlot(); break; // Movie case "Toggle read-only": ToggleReadOnly(); break; case "Play Movie": PlayMovieMenuItem_Click(null, null); break; case "Record Movie": RecordMovieMenuItem_Click(null, null); break; case "Stop Movie": StopMovie(); break; case "Play from beginning": RestartMovie(); break; case "Save Movie": SaveMovie(); break; case "Toggle MultiTrack": MovieSession.ToggleMultitrack(); break; case "MT Select All": MovieSession.MultiTrack.SelectAll(); break; case "MT Select None": MovieSession.MultiTrack.SelectNone(); break; case "MT Increment Player": MovieSession.MultiTrack.Increment(); break; case "MT Decrement Player": MovieSession.MultiTrack.Decrement(); break; case "Movie Poke": ToggleModePokeMode(); break; // Tools case "RAM Watch": Tools.LoadRamWatch(true); break; case "RAM Search": Tools.Load <RamSearch>(); break; case "Hex Editor": Tools.Load <HexEditor>(); break; case "Trace Logger": Tools.Load <TraceLogger>(); break; case "Lua Console": OpenLuaConsole(); break; case "Cheats": Tools.Load <Cheats>(); break; case "Toggle All Cheats": if (CheatList.Any()) { string type = " (mixed)"; if (CheatList.All(c => c.Enabled)) { type = " (off)"; } else if (CheatList.All(c => !c.Enabled)) { type = " (on)"; } foreach (var x in CheatList) { x.Toggle(); } AddOnScreenMessage($"Cheats toggled{type}"); } break; case "TAStudio": Tools.Load <TAStudio>(); break; case "ToolBox": Tools.Load <ToolBox>(); break; case "Virtual Pad": Tools.Load <VirtualpadTool>(); break; // RAM Search case "Do Search": if (Tools.IsLoaded <RamSearch>()) { Tools.RamSearch.DoSearch(); } else { return(false); } break; case "New Search": if (Tools.IsLoaded <RamSearch>()) { Tools.RamSearch.NewSearch(); } else { return(false); } break; case "Previous Compare To": if (Tools.IsLoaded <RamSearch>()) { Tools.RamSearch.NextCompareTo(reverse: true); } else { return(false); } break; case "Next Compare To": if (Tools.IsLoaded <RamSearch>()) { Tools.RamSearch.NextCompareTo(); } else { return(false); } break; case "Previous Operator": if (Tools.IsLoaded <RamSearch>()) { Tools.RamSearch.NextOperator(reverse: true); } else { return(false); } break; case "Next Operator": if (Tools.IsLoaded <RamSearch>()) { Tools.RamSearch.NextOperator(); } else { return(false); } break; // TAStudio case "Add Branch": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.AddBranchExternal(); } else { return(false); } break; case "Delete Branch": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.RemoveBranchExternal(); } else { return(false); } break; case "Show Cursor": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.SetVisibleIndex(); Tools.TAStudio.RefreshDialog(); } else { return(false); } break; case "Toggle Follow Cursor": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.TasPlaybackBox.FollowCursor ^= true; } else { return(false); } break; case "Toggle Auto-Restore": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.TasPlaybackBox.AutoRestore ^= true; } else { return(false); } break; case "Toggle Turbo Seek": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.TasPlaybackBox.TurboSeek ^= true; } else { return(false); } break; case "Undo": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.UndoExternal(); } else { return(false); } break; case "Redo": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.RedoExternal(); } else { return(false); } break; case "Select between Markers": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.SelectBetweenMarkersExternal(); } else { return(false); } break; case "Select All": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.SelectAllExternal(); } else { return(false); } break; case "Reselect Clip.": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.ReselectClipboardExternal(); } else { return(false); } break; case "Clear Frames": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.ClearFramesExternal(); } else { return(false); } break; case "Insert Frame": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.InsertFrameExternal(); } else { return(false); } break; case "Insert # Frames": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.InsertNumFramesExternal(); } else { return(false); } break; case "Delete Frames": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.DeleteFramesExternal(); } else { return(false); } break; case "Clone Frames": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.CloneFramesExternal(); } else { return(false); } break; case "Analog Increment": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.AnalogIncrementByOne(); } else { return(false); } break; case "Analog Decrement": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.AnalogDecrementByOne(); } else { return(false); } break; case "Analog Incr. by 10": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.AnalogIncrementByTen(); } else { return(false); } break; case "Analog Decr. by 10": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.AnalogDecrementByTen(); } else { return(false); } break; case "Analog Maximum": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.AnalogMax(); } else { return(false); } break; case "Analog Minimum": if (Tools.IsLoaded <TAStudio>()) { Tools.TAStudio.AnalogMin(); } else { return(false); } break; // SNES case "Toggle BG 1": SNES_ToggleBg(1); break; case "Toggle BG 2": SNES_ToggleBg(2); break; case "Toggle BG 3": SNES_ToggleBg(3); break; case "Toggle BG 4": SNES_ToggleBg(4); break; case "Toggle OBJ 1": SNES_ToggleObj(1); break; case "Toggle OBJ 2": SNES_ToggleObj(2); break; case "Toggle OBJ 3": SNES_ToggleObj(3); break; case "Toggle OBJ 4": SNES_ToggleObj(4); break; // GB case "GB Toggle BG": if (Emulator is Gameboy gb) { var s = gb.GetSettings(); s.DisplayBG ^= true; gb.PutSettings(s); AddOnScreenMessage($"BG toggled {(s.DisplayBG ? "on" : "off")}"); } break; case "GB Toggle Obj": if (Emulator is Gameboy gb2) { var s = gb2.GetSettings(); s.DisplayOBJ ^= true; gb2.PutSettings(s); AddOnScreenMessage($"OBJ toggled {(s.DisplayBG ? "on" : "off")}"); } break; // Analog case "Y Up Small": Tools.VirtualPad.BumpAnalogValue(null, Config.AnalogSmallChange); break; case "Y Up Large": Tools.VirtualPad.BumpAnalogValue(null, Config.AnalogLargeChange); break; case "Y Down Small": Tools.VirtualPad.BumpAnalogValue(null, -Config.AnalogSmallChange); break; case "Y Down Large": Tools.VirtualPad.BumpAnalogValue(null, -Config.AnalogLargeChange); break; case "X Up Small": Tools.VirtualPad.BumpAnalogValue(Config.AnalogSmallChange, null); break; case "X Up Large": Tools.VirtualPad.BumpAnalogValue(Config.AnalogLargeChange, null); break; case "X Down Small": Tools.VirtualPad.BumpAnalogValue(-Config.AnalogSmallChange, null); break; case "X Down Large": Tools.VirtualPad.BumpAnalogValue(-Config.AnalogLargeChange, null); break; } return(true); }