コード例 #1
0
        public static void FillMovieFromBuffer(byte[] buffer, MadTVMovie movie = null)
        {
            if (movie == null)
            {
                movie = new MadTVMovie();
            }

            movie.Genre  = buffer[0];
            movie.Pause  = buffer[2];
            movie.Blocks = buffer[4];

            var gradeTemp = (int)buffer[6];

            if (gradeTemp >= 64)
            {
                movie.Auction = true;
                gradeTemp     = gradeTemp - 64;
            }
            movie.Quality = gradeTemp - 31;

            movie.XRated = (buffer[7] == 8);

            movie.Country = buffer[19];
            movie.Year    = buffer[20];
            movie.Critics = buffer[21];
            movie.Box     = buffer[22];
        }
コード例 #2
0
        //nameFilePath = "SOURCE1.RSC"
        //namesEntryPoint = 478040
        //valuesFilePath = "SOURCE1.RSC"
        //valuesEntryPoint = 439856
        public void ImportMovies(string nameFilePath, int namesEntryPoint, string valuesFilePath, int valuesEntryPoint)
        {
            List <MadTVMovie> result = new List <MadTVMovie>();

            using (FileStream file = new FileStream(nameFilePath, FileMode.Open, FileAccess.Read))
            {
                var positionIndex = namesEntryPoint;
                file.Position = positionIndex;
                byte[] buffer = new byte[200];
                file.Read(buffer, 0, buffer.Length);

                while (true)
                {
                    var encoding = GetMadTVEncoding();

                    var movie = new MadTVMovie();

                    var titleLength = (int)buffer[0];
                    movie.Title = encoding.GetString(buffer.SubArray(1, titleLength));
                    var descLength = (int)buffer[titleLength + 1];
                    movie.Description = encoding.GetString(buffer.SubArray(titleLength + 2, descLength));

                    if (movie.Title.Contains("~") || movie.Description.Contains("~"))
                    {
                        break;
                    }

                    result.Add(movie);

                    positionIndex = positionIndex + movie.Title.Length + movie.Description.Length + 2;
                    file.Position = positionIndex;
                    file.Read(buffer, 0, buffer.Length);
                }
            }

            using (FileStream file = new FileStream(valuesFilePath, FileMode.Open, FileAccess.Read))
            {
                file.Position = valuesEntryPoint;
                byte[] buffer = new byte[23];
                file.Read(buffer, 0, buffer.Length);
                int index = 0;

                while (MadTVMovieImporter.ValidBuffer(buffer))
                {
                    if (result.Count <= index)
                    {
                        break;
                    }

                    var currentMovie = result[index];
                    MadTVMovieImporter.FillMovieFromBuffer(buffer, currentMovie);

                    file.Read(buffer, 0, buffer.Length);
                    index++;
                }
            }

            var kul = result.FirstOrDefault(x => x.Title.StartsWith("Im "));
        }