private void openToolStripMenuItem_Click(object sender, EventArgs e) { using (OpenFileDialog fd = new OpenFileDialog() { DefaultExt = "ini", Filter = "INI Files|*.ini" }) if (fd.ShowDialog(this) == DialogResult.OK) { IniData ini = IniSerializer.Deserialize<IniData>(fd.FileName); filename = Path.Combine(Path.GetDirectoryName(fd.FileName), ini.Files.First((item) => item.Value.Type == "stageselectlist").Value.Filename); levels = new List<StageSelectLevel>(StageSelectLevelList.Load(filename)); string resdir = Path.Combine(Path.GetDirectoryName(fd.FileName), ini.SystemFolder); using (Device d3ddevice = new Device(0, DeviceType.Hardware, dummyPanel.Handle, CreateFlags.SoftwareVertexProcessing, new PresentParameters[] { new PresentParameters() { Windowed = true, SwapEffect = SwapEffect.Discard, EnableAutoDepthStencil = true, AutoDepthStencilFormat = DepthFormat.D24X8 } })) { using (Stream str = new MemoryStream( new PAKFile(Path.Combine(resdir, @"SOC\stageMapBG.pak")).Files.Find( (a) => a.Name.Equals(@"stagemapbg\stagemap.dds")).Data)) bgtex = LoadDDS(str, d3ddevice); if (File.Exists(Path.Combine(resdir, @"PRS\stageMap.pak"))) { List<PAKFile.File> files = new PAKFile(Path.Combine(resdir, @"PRS\stageMap.pak")).Files; byte[] inf = files.Find((a) => a.Name.Equals(@"stagemap\stagemap.inf")).Data; uitexs = new Bitmap[inf.Length / 0x3C]; for (int i = 0; i < uitexs.Length; i++) using (Stream str = new MemoryStream(files.Find( (a) => a.Name.Equals(@"stagemap\" + Encoding.ASCII.GetString(inf, i * 0x3C, 0x1c).TrimEnd('\0') + ".dds")).Data)) uitexs[i] = LoadDDS(str, d3ddevice); } else uitexs = TextureArchive.GetTextures(Path.Combine(resdir, "stageMap.prs")).Select((tex) => tex.Image).ToArray(); } saveToolStripMenuItem.Enabled = panel1.Enabled = panel2.Enabled = true; selected = 0; level.SelectedIndex = (int)levels[selected].Level; character.SelectedIndex = (int)levels[selected].Character; column.Value = levels[selected].Column; row.Value = levels[selected].Row; DrawLevel(); } }