示例#1
0
        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();
            }
        }
示例#3
0
        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();
        }
示例#4
0
        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();
            }
        }