public void TestXLHogWrite()
        {
            var hogFile      = new HOGFile(TestUtils.GetResourceStream("d2x-xl.hog"));
            var memoryStream = new MemoryStream();

            hogFile.Write(memoryStream);
            memoryStream.Seek(0, SeekOrigin.Begin);

            // Read it back in and make sure the right things are still there
            hogFile.Read(memoryStream);
            Assert.AreEqual(12, hogFile.NumLumps);

            var lumpHeader = hogFile.Lumps[0];

            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level1.msg", lumpHeader.Name);
            Assert.AreEqual(0x14, lumpHeader.Offset);
            Assert.AreEqual(246, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Text, lumpHeader.Type);

            /*lumpHeader = hogFile.GetLumpHeader("level1.rl2");
            *  Assert.NotNull(lumpHeader);
            *  Assert.AreEqual("level1.rl2", lumpHeader.Name);
            *  // Moves because the new header is standard - not using long filename
            *  Assert.AreEqual(809, lumpHeader.Offset);
            *  Assert.AreEqual(75266, lumpHeader.Size);
            *  Assert.AreEqual(LumpType.Level, lumpHeader.Type);*/
        }
Exemple #2
0
 public HOGEditor(HOGFile data, StandardUI host)
 {
     InitializeComponent();
     datafile  = data;
     this.host = host;
     this.Text = string.Format("{0} - Hog Editor", datafile.Filename);
 }
        public void TestCreateNewHog()
        {
            var hogFile = new HOGFile();

            Assert.AreEqual(0, hogFile.NumLumps);

            var filename = "test.rdl";
            //hogFile.AddFile(filename, TestUtils.GetResourceStream(filename));
            HOGLump lump = new HOGLump(filename, TestUtils.GetArrayFromResourceStream(filename));

            hogFile.Lumps.Add(lump);
            Assert.AreEqual(1, hogFile.NumLumps);

            var memoryStream = new MemoryStream();

            hogFile.Write(memoryStream);
            memoryStream.Seek(0, SeekOrigin.Begin);

            hogFile.Read(memoryStream);
            Assert.AreEqual(1, hogFile.NumLumps);

            //TODO: api change
            //Assert.IsNotNull(hogFile.GetLumpHeader(filename));
            //Assert.That(hogFile.GetLumpData(filename), Is.EqualTo(TestUtils.GetArrayFromResourceStream(filename)));
        }
        public void TestStandardHogLumpHeaders()
        {
            var hogFile = new HOGFile(TestUtils.GetResourceStream("standard.hog"));

            Assert.AreEqual(3, hogFile.NumLumps);

            // First lump - .hxm
            var lumpHeader = hogFile.Lumps[0];

            Assert.NotNull(lumpHeader);
            Assert.AreEqual("test.hxm", lumpHeader.Name);
            Assert.AreEqual(0x14, lumpHeader.Offset);
            Assert.AreEqual(32530, lumpHeader.Size);
            //[ISB]: Classification is killed for non-editor HOG files.
            //Assert.AreEqual(LumpType.HXMFile, lumpHeader.Type);

            // Second lump - .pog
            lumpHeader = hogFile.Lumps[1];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("test.pog", lumpHeader.Name);
            Assert.AreEqual(32567, lumpHeader.Offset);
            Assert.AreEqual(4128, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Unknown, lumpHeader.Type);

            // Third lump - .rl2
            lumpHeader = hogFile.Lumps[2];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("test.rl2", lumpHeader.Name);
            Assert.AreEqual(36712, lumpHeader.Offset);
            Assert.AreEqual(7010, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Level, lumpHeader.Type);
        }
        public void TestAutoD2XXLLevelLoad()
        {
            var hogFile = new HOGFile(TestUtils.GetResourceStream("d2x-xl.hog"));
            //TODO: Magic number
            ILevel level = LevelFactory.CreateFromStream(hogFile.GetLumpAsStream(6));

            Assert.NotNull(level);
            Assert.IsInstanceOf <D2XXLLevel>(level);
        }
Exemple #6
0
 internal HOGFilePath(string hogPath, string fileName)
 {
     if (!hogFileCache.ContainsKey(hogPath))
     {
         hogFileCache[hogPath] = new HOGFile(hogPath);
     }
     this.hog      = hogFileCache[hogPath];
     this.fileName = fileName;
 }
Exemple #7
0
 public POGEditor(POGFile data, HOGFile hogFile, string filename)
 {
     datafile      = data;
     this.filename = filename;
     this.hogFile  = hogFile;
     InitializeComponent();
     this.Text = string.Format("{0} - POG Editor", filename);
     PaletteComboBox.SelectedIndex = 0; //default to groupa.256
 }
        public void TestStandardHogWrite()
        {
            var hogFile      = new HOGFile(TestUtils.GetResourceStream("standard.hog"));
            var memoryStream = new MemoryStream();

            hogFile.Write(memoryStream);
            memoryStream.Seek(0, SeekOrigin.Begin);

            FileAssert.AreEqual(TestUtils.GetResourceStream("standard.hog"), memoryStream);
        }
        public void TestLumpData()
        {
            var hogFile    = new HOGFile(TestUtils.GetResourceStream("standard.hog"));
            var lumpHeader = hogFile.Lumps[2];

            var lumpData = hogFile.GetLumpData(2);

            Assert.NotNull(lumpData);
            Assert.AreEqual(lumpHeader.Size, lumpData.Length);

            var lumpStream = hogFile.GetLumpAsStream(2);

            Assert.NotNull(lumpStream);
            Assert.AreEqual(lumpHeader.Size, lumpStream.Length);

            // One last thing... try reading the stream
            var level = LevelFactory.CreateFromStream(lumpStream);

            Assert.NotNull(level);
            Assert.AreEqual(20, level.Segments.Count);
        }
Exemple #10
0
 private void LoadWorkingHog(string filename)
 {
     editor.SetCanSave(false);
     workingHogLabel.Text = "No Working HOG opened";
     workingHog           = null;
     loadedBriefing       = null;
     try
     {
         workingHog           = new HOGFile(workingHogFile = filename);
         workingHogLabel.Text = "Working HOG: " + Path.GetFileName(filename);
         if (briefingNameTextBox.Text.Length == 0)
         {
             briefingNameTextBox.Text = Path.GetFileNameWithoutExtension(filename) + ".txb";
         }
         editor.SetCanSave(true);
     }
     catch (ArgumentException aex)
     {
         MessageBox.Show(this, aex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         workingHog = null;
         return;
     }
 }
        public void TestAddLump()
        {
            var hogFile = new HOGFile(TestUtils.GetResourceStream("standard.hog"));

            // Method 1 - set up lump manually
            var file1Data = TestUtils.GetArrayFromResourceStream("test.rdl");
            var hogLump   = new HOGLump("test.rdl", file1Data.Length, 0)
            {
                Data = file1Data
            };

            hogFile.Lumps.Add(hogLump);
            Assert.AreEqual(4, hogFile.NumLumps);
            //Assert.AreEqual(3, hogFile.GetLumpNum("test.rdl")); //api change

            // Method 2 - use constructor
            var file2Data = TestUtils.GetArrayFromResourceStream("test.rl2");

            hogLump = new HOGLump("test2.rl2", file2Data);
            hogFile.Lumps.Add(hogLump);
            Assert.AreEqual(5, hogFile.NumLumps);
            //Assert.AreEqual(4, hogFile.GetLumpNum("test2.rl2"));

            // Make sure it writes correctly
            var memoryStream = new MemoryStream();

            hogFile.Write(memoryStream);
            memoryStream.Seek(0, SeekOrigin.Begin);

            hogFile.Read(memoryStream);
            Assert.AreEqual(5, hogFile.NumLumps);
            //Assert.AreEqual(3, hogFile.GetLumpNum("test.rdl"));
            Assert.That(hogFile.GetLumpData(3), Is.EqualTo(file1Data));
            //Assert.AreEqual(4, hogFile.GetLumpNum("test2.rl2"));
            Assert.That(hogFile.GetLumpData(4), Is.EqualTo(file2Data));
        }
Exemple #12
0
 private void closeWorkingHogButton_Click(object sender, EventArgs e)
 {
     workingHog           = null;
     workingHogLabel.Text = "No Working HOG opened";
     editor.SetCanSave(false);
 }
Exemple #13
0
        private void LoadBaseHog(string filename)
        {
            editor.SetDescentGame(0);
            betterEditor?.SetDescentGame(0);

            baseHogLabel.Text = "No Descent HOG file specified";
            baseHog           = null;
            try
            {
                baseHog = new HOGFile(baseHogFile = filename);
            }
            catch (ArgumentException aex)
            {
                MessageBox.Show(this, aex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            baseHogLabel.Text = "No Descent HOG file specified";
            if (!baseHog.ContainsFile("descent.txb") || !baseHog.ContainsFile("end01.pcx"))
            {
                MessageBox.Show(this, "This is not a valid registered Descent 1 or Descent 2 main HOG", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                baseHog = null;
                return;
            }

            if (baseHog.ContainsFile("neptun01.pcx"))
            {
                descentGame       = 1;
                baseHogLabel.Text = "Main HOG: Descent 1";
            }
            else if (baseHog.ContainsFile("d2levf-s.rl2"))
            {
                descentGame       = 2;
                baseHogLabel.Text = "Main HOG: Descent 2";
            }
            else
            {
                MessageBox.Show(this, "This is not a valid registered Descent 1 or Descent 2 main HOG", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                baseHog = null;
                return;
            }

            byte[] font3_1 = baseHog.GetLumpData("FONT3-1.FNT");
            if (font3_1 == null)
            {
                MessageBox.Show(this, "FONT3-1.FNT not found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                baseHog = null;
                return;
            }

            FNTRenderer gamefontL, gamefontH = null;

            gamefontL = new FNTRenderer(LoadFont(new MemoryStream(font3_1)));

            if (descentGame == 1)
            {
                gamefontH = new FNTRendererUpScale(gamefontL.font);
            }
            else if (descentGame == 2)
            {
                font3_1 = baseHog.GetLumpData("FONT3-1H.FNT");
                if (font3_1 == null)
                {
                    MessageBox.Show(this, "FONT3-1H.FNT not found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    baseHog = null;
                    return;
                }
                gamefontH = new FNTRenderer(LoadFont(new MemoryStream(font3_1)));
            }

            InitScreens(gamefontL, gamefontH);
            lowres.Refresh();
            highres.Refresh();
            editor.SetDescentGame(descentGame);
            betterEditor?.SetDescentGame(descentGame);
            Properties.Settings.Default.baseHogPath = filename;
            Properties.Settings.Default.Save();
        }
        public void TestXLHogLumpHeaders()
        {
            var hogFile = new HOGFile(TestUtils.GetResourceStream("d2x-xl.hog"));

            Assert.AreEqual(12, hogFile.NumLumps);

            // The .msg files use standard format headers; subsequent files use extended headers

            var lumpHeader = hogFile.Lumps[0];

            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level1.msg", lumpHeader.Name);
            Assert.AreEqual(0x14, lumpHeader.Offset);
            Assert.AreEqual(246, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Text, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[1];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level2.msg", lumpHeader.Name);
            Assert.AreEqual(283, lumpHeader.Offset);
            Assert.AreEqual(246, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Text, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[2];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level3.msg", lumpHeader.Name);
            Assert.AreEqual(546, lumpHeader.Offset);
            Assert.AreEqual(246, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Text, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[3];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level1.rl2", lumpHeader.Name);
            Assert.AreEqual(1065, lumpHeader.Offset);
            Assert.AreEqual(75266, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Level, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[4];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level1.lgt", lumpHeader.Name);
            Assert.AreEqual(76604, lumpHeader.Offset);
            Assert.AreEqual(3640, lumpHeader.Size);
            //Assert.AreEqual(LumpType.LGTMap, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[5];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level1.clr", lumpHeader.Name);
            Assert.AreEqual(80517, lumpHeader.Offset);
            Assert.AreEqual(11830, lumpHeader.Size);
            //Assert.AreEqual(LumpType.CLRMap, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[6];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level3.rl2", lumpHeader.Name);
            Assert.AreEqual(92620, lumpHeader.Offset);
            Assert.AreEqual(57744, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Level, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[7];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level3.lgt", lumpHeader.Name);
            Assert.AreEqual(150637, lumpHeader.Offset);
            Assert.AreEqual(3640, lumpHeader.Size);
            //Assert.AreEqual(LumpType.LGTMap, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[8];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level3.clr", lumpHeader.Name);
            Assert.AreEqual(154550, lumpHeader.Offset);
            Assert.AreEqual(11830, lumpHeader.Size);
            //Assert.AreEqual(LumpType.CLRMap, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[9];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level2.rl2", lumpHeader.Name);
            Assert.AreEqual(166653, lumpHeader.Offset);
            Assert.AreEqual(109608, lumpHeader.Size);
            //Assert.AreEqual(LumpType.Level, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[10];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level2.lgt", lumpHeader.Name);
            Assert.AreEqual(276534, lumpHeader.Offset);
            Assert.AreEqual(3640, lumpHeader.Size);
            //Assert.AreEqual(LumpType.LGTMap, lumpHeader.Type);

            lumpHeader = hogFile.Lumps[11];
            Assert.NotNull(lumpHeader);
            Assert.AreEqual("level2.clr", lumpHeader.Name);
            Assert.AreEqual(280447, lumpHeader.Offset);
            Assert.AreEqual(11830, lumpHeader.Size);
            //Assert.AreEqual(LumpType.CLRMap, lumpHeader.Type);
        }
        public void TestXLHogRead()
        {
            var hogFile = new HOGFile(TestUtils.GetResourceStream("d2x-xl.hog"));

            Assert.AreEqual(HOGFormat.D2X_XL, hogFile.Format);
        }
        public void TestStandardHogRead()
        {
            var hogFile = new HOGFile(TestUtils.GetResourceStream("standard.hog"));

            Assert.AreEqual(HOGFormat.Standard, hogFile.Format);
        }