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);*/ }
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); }
internal HOGFilePath(string hogPath, string fileName) { if (!hogFileCache.ContainsKey(hogPath)) { hogFileCache[hogPath] = new HOGFile(hogPath); } this.hog = hogFileCache[hogPath]; this.fileName = fileName; }
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); }
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)); }
private void closeWorkingHogButton_Click(object sender, EventArgs e) { workingHog = null; workingHogLabel.Text = "No Working HOG opened"; editor.SetCanSave(false); }
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); }