private void btnSelNCG_Click(object sender, EventArgs e) { m_ROMFileSelect.ReInitialize("Please select a Graphic (ICG/NCG) file.", new String[] { "_icg.bin", "_ncg.bin" }); var result = m_ROMFileSelect.ShowDialog(); if (result == DialogResult.OK) { txtSelNCG.Text = m_ROMFileSelect.m_SelectedFile; } }
private void btnOpenBMD_Click(object sender, EventArgs e) { m_ROMFileSelect.ReInitialize("Please select a model (BMD) file to open.", new String[] { ".bmd" }); var result = m_ROMFileSelect.ShowDialog(); if (result == DialogResult.OK) { StopTimer(); m_BMD = new BMD(Program.m_ROM.GetFileFromName(m_ROMFileSelect.m_SelectedFile)); txtBMDName.Text = m_BMD.m_FileName; PrerenderModel(); } }
private void TextureEditorForm_Load(object sender, System.EventArgs e) { if (m_ModelName == null) { m_ROMFileSelect.ReInitialize("Select a BMD file to load", new String[] { ".bmd" }); DialogResult result = m_ROMFileSelect.ShowDialog(); if (result != DialogResult.OK) { Close(); } else { m_ModelName = m_ROMFileSelect.m_SelectedFile; } } LoadTextures(); InitTimer(); }
private void TextureEditorForm_Load(object sender, System.EventArgs e) { if (m_Name == null) { m_ROMFileSelect.ReInitialize("Select a SPT file to load", new string[] { ".spt" }); DialogResult result = m_ROMFileSelect.ShowDialog(); if (result != DialogResult.OK) { Close(); } else { m_Name = m_ROMFileSelect.m_SelectedFile; m_ParticleTexFile = Program.m_ROM.GetFileFromName(m_Name); cmbRepeatX.Items.Add(Particle.Texture.RepeatMode.CLAMP); cmbRepeatX.Items.Add(Particle.Texture.RepeatMode.REPEAT); cmbRepeatX.Items.Add(Particle.Texture.RepeatMode.FLIP); cmbRepeatX.SelectedIndex = -1; cmbRepeatY.Items.Add(Particle.Texture.RepeatMode.CLAMP); cmbRepeatY.Items.Add(Particle.Texture.RepeatMode.REPEAT); cmbRepeatY.Items.Add(Particle.Texture.RepeatMode.FLIP); cmbRepeatY.SelectedIndex = -1; cmbFormat.Items.Add("A3I5"); cmbFormat.Items.Add("Color4"); cmbFormat.Items.Add("Color16"); cmbFormat.Items.Add("Color256"); cmbFormat.Items.Add("Texel4x4 (unsupported)"); cmbFormat.Items.Add("A5I3"); cmbFormat.Items.Add("Direct"); cmbFormat.SelectedIndex = prevFormat = -1; LoadTexture(); RefreshImage(); PopulatePaletteSettings(); UpdateForm(); ResetColourButtonValue(btnModelPalettesSelectedColour); } } }
private void loadExternalToolStripMenuItem_Click(object sender, EventArgs e) { int texDefID = lbxTexDef.SelectedIndex; // this shouldn't happen but you never know if (texDefID == -1) { return; } m_ROMFileSelect.ReInitialize("Select a SPT file to load", new String[] { ".spt" }); DialogResult result = m_ROMFileSelect.ShowDialog(); if (result != DialogResult.OK) { return; } else { try { NitroFile SPT = Program.m_ROM.GetFileFromName(m_ROMFileSelect.m_SelectedFile); if (SPT.Read32(0x0) != 0x53505420) { throw new Exception("Invalid SPT header."); } uint flags = SPT.Read32(0x04); uint texelArrSize = SPT.Read32(0x08); uint palOffset = SPT.Read32(0x0c); uint palSize = SPT.Read32(0x10); uint totalSize = SPT.Read32(0x1c); byte[] texels = SPT.ReadBlock(0x20, texelArrSize); byte[] palette = SPT.ReadBlock(palOffset, palSize); int width = 1 << (((int)flags >> 4 & 0xf) + 3); int height = 1 << (((int)flags >> 8 & 0xf) + 3); bool color0Transp = ((flags & 0x8) | (flags & 0x10000)) != 0; int type = (int)flags & 0x7; Particle.Texture.RepeatMode repeatX = (flags & 0x4000) != 0 ? Particle.Texture.RepeatMode.FLIP : (flags & 0x1000) != 0 ? Particle.Texture.RepeatMode.REPEAT : Particle.Texture.RepeatMode.CLAMP; Particle.Texture.RepeatMode repeatY = (flags & 0x8000) != 0 ? Particle.Texture.RepeatMode.FLIP : (flags & 0x2000) != 0 ? Particle.Texture.RepeatMode.REPEAT : Particle.Texture.RepeatMode.CLAMP; m_TexDefs[texDefID].Unload(); m_TexDefs[texDefID] = new Particle.Texture(texels, palette, width, height, (byte)(color0Transp ? 1 : 0), type, repeatX, repeatY, texDefID); m_TexDefs[texDefID].Load(); UpdateParticleTextures(texDefID); } catch (Exception ex) { MessageBox.Show("Failed to load external SPT. Details:\n" + ex.Message, "Failed to load SPT"); } RefreshImage(); PopulatePaletteSettings(); } }