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);
        }
示例#2
0
        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>");
            }
        }
示例#4
0
        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));
        }
示例#7
0
 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);
     }));
 }
示例#9
0
        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);
        }
示例#10
0
        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);
        }
示例#14
0
        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);
        }
示例#15
0
        private void LoadMovie(string filename, string archive = null)
        {
            if (Emulator.IsNull())
            {
                OpenRom();
            }

            if (Emulator.IsNull())
            {
                return;
            }

            StartNewMovie(MovieSession.Get(filename), false);
        }
示例#16
0
        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());
        }
示例#17
0
        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);
            }
        }
示例#18
0
 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);
        }
示例#20
0
        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);
        }
示例#22
0
        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();
        }
示例#23
0
        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;
                }
            }
        }
示例#24
0
        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);
        }
示例#25
0
 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>");
            }
        }
示例#27
0
        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();
        }
示例#28
0
 public void UpdateMovieSessions(MovieSession item)
 {
     msrep.Update(item);
 }
示例#29
0
        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));
        }
示例#30
0
        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);
        }