Exemplo n.º 1
0
        public void SaveD15PigFile()
        {
            Descent1PIGFile piggie = new Descent1PIGFile();

            using (var file = File.OpenRead(PigFileLocation))
            {
                piggie.Read(file);
            }

            byte[] newFileBytes = null;

            //using (var newFile = File.OpenWrite(@"D:\GOG Games\Descent\DESCENT.PIG")) {  piggie.Write(newFile); }

            using (MemoryStream ms = new MemoryStream())
            {
                piggie.Write(ms);

                // Now compare the bytes
                ms.Position  = 0;
                newFileBytes = ms.ToArray();
            }

            var realBytes = File.ReadAllBytes(PigFileLocation);

            Assert.AreEqual(realBytes.Length, newFileBytes.Length);

            Assert.AreEqual(realBytes, newFileBytes);
        }
Exemplo n.º 2
0
        public void LoadD15PigFile()
        {
            Descent1PIGFile piggie = new Descent1PIGFile();

            using (var file = File.OpenRead(PigFileLocation))
            {
                piggie.Read(file);
            }
        }
Exemplo n.º 3
0
        public void SwapModelsTest()
        {
            Descent1PIGFile piggie = new Descent1PIGFile();

            using (var file = File.OpenRead(PigFileLocation))
            {
                piggie.Read(file);
            }

            piggie.Models[5] = piggie.Models[2];

            using (var newFile = File.OpenWrite(@"D:\GOG Games\Descent\DESCENT.PIG")) { piggie.Write(newFile); }
        }
Exemplo n.º 4
0
        public static void DumpDescent1PIGToBBM(Descent1PIGFile pigFile, Palette palette, string outputFilename)
        {
            LBMDecoder encoder   = new LBMDecoder();
            string     directory = Path.GetDirectoryName(outputFilename);

            int numFrames = 0;

            PIGImage[] frames = new PIGImage[50];
            PIGImage   image;

            for (int i = 0; i < pigFile.Bitmaps.Count; i++)
            {
                if (pigFile.Bitmaps[i].IsAnimated) //Special animation hacks
                {
                    image = pigFile.Bitmaps[i];
                    if (image.Frame == 0) //Start at the first frame
                    {
                        numFrames           = 0;
                        frames[numFrames++] = image;
                        if ((i + 1) >= pigFile.Bitmaps.Count)
                        {
                            return;                                 //out of images
                        }
                        while (image.Name == pigFile.Bitmaps[i + 1].Name)
                        {
                            frames[numFrames] = pigFile.Bitmaps[i + 1];
                            i++;
                            numFrames++;
                            if ((i + 1) >= pigFile.Bitmaps.Count)
                            {
                                break;                                 //out of images
                            }
                        }
                        BinaryWriter bw = new BinaryWriter(File.OpenWrite(string.Format("{0}{1}{2}.abm", directory, Path.DirectorySeparatorChar, image.Name)));
                        encoder.WriteABM(frames, numFrames, palette, bw);
                        bw.Close();
                        bw.Dispose();
                    }
                }
                else
                {
                    image = pigFile.Bitmaps[i];
                    BinaryWriter bw = new BinaryWriter(File.OpenWrite(string.Format("{0}{1}{2}.bbm", directory, Path.DirectorySeparatorChar, image.Name)));
                    encoder.WriteBBM(image, palette, bw);
                    bw.Close();
                    bw.Dispose();
                }
            }
        }
Exemplo n.º 5
0
        public static EditorHAMFile TranslatePIGToHam(Descent1PIGFile pigfile, PIGFile convertedPigFile)
        {
            HAMFile file = new HAMFile();

            foreach (ushort texture in pigfile.Textures)
            {
                file.Textures.Add(texture);
            }
            foreach (TMAPInfo tmapInfo in pigfile.TMapInfo)
            {
                file.TMapInfo.Add(tmapInfo);
            }

            for (int i = 0; i < pigfile.SoundIDs.Length; i++)
            {
                file.Sounds[i] = pigfile.SoundIDs[i];
            }
            for (int i = 0; i < pigfile.AltSounds.Length; i++)
            {
                file.AltSounds[i] = pigfile.AltSounds[i];
            }
            foreach (VClip clip in pigfile.VClips)
            {
                file.VClips.Add(clip);
            }
            foreach (EClip clip in pigfile.EClips)
            {
                file.EClips.Add(clip);
            }
            foreach (WClip clip in pigfile.WClips)
            {
                file.WClips.Add(clip);
            }
            foreach (Robot robot in pigfile.Robots)
            {
                file.Robots.Add(robot);
            }
            foreach (JointPos joint in pigfile.Joints)
            {
                file.Joints.Add(joint);
            }
            foreach (Weapon weapon in pigfile.Weapons)
            {
                if (weapon.ModelNum == 255)
                {
                    weapon.ModelNum = 0;
                }
                if (weapon.ModelNumInner == 255)
                {
                    weapon.ModelNumInner = 0;
                }
                file.Weapons.Add(weapon);
            }
            foreach (Polymodel model in pigfile.Models)
            {
                if (model != null)
                {
                    file.Models.Add(model);
                }
            }
            foreach (ushort gauge in pigfile.Gauges)
            {
                file.Gauges.Add(gauge);
                file.GaugesHires.Add(gauge);
            }
            foreach (ushort cockpit in pigfile.Cockpits)
            {
                file.Cockpits.Add(cockpit);
            }
            for (int i = 0; i < pigfile.ObjBitmaps.Length; i++)
            {
                file.ObjBitmaps.Add(pigfile.ObjBitmaps[i]);
                file.ObjBitmapPointers.Add(pigfile.ObjBitmapPointers[i]);
            }
            foreach (Powerup powerup in pigfile.Powerups)
            {
                file.Powerups.Add(powerup);
            }
            file.PlayerShip = pigfile.PlayerShip;
            file.Reactors.Add(pigfile.reactor);
            file.FirstMultiBitmapNum = pigfile.FirstMultiBitmapNum;
            for (int i = 0; i < pigfile.BitmapXLATData.Length; i++)
            {
                file.BitmapXLATData[i] = pigfile.BitmapXLATData[i];
            }

            EditorHAMFile res = new EditorHAMFile(file, convertedPigFile);

            res.CreateLocalLists();
            res.GenerateDefaultNamelists();
            res.TranslateData();
            return(res);
        }