Пример #1
0
        private void btnSavePreset_Click(object sender, EventArgs e)
        {
            XmaConverterSettings preset = buildPresetForCurrentValues();

            if (preset != null)
            {
                SavePresetForm saveForm = new SavePresetForm(preset);
                saveForm.Show();
            }
        }
Пример #2
0
        //--------------------
        // Preset Processing
        //--------------------
        private XmaConverterSettings getPresetFromFile(string filePath)
        {
            XmaConverterSettings preset = null;

            preset = new XmaConverterSettings();
            XmlSerializer serializer = new XmlSerializer(preset.GetType());

            using (FileStream xmlFs = File.OpenRead(filePath))
            {
                using (XmlTextReader textReader = new XmlTextReader(xmlFs))
                {
                    preset = (XmaConverterSettings)serializer.Deserialize(textReader);
                }
            }

            return(preset);
        }
Пример #3
0
        private void loadSelectedPreset()
        {
            XmaConverterSettings preset = (XmaConverterSettings)this.comboPresets.SelectedItem;

            if (preset != null)
            {
                this.initializeXmaParseInputSection();
                this.initializeRiffSection();
                this.initializePosMakerSection();
                this.initializeToWavSection();

                this.loadXmaConverterSettings(preset);

                if (!String.IsNullOrEmpty(preset.NotesOrWarnings))
                {
                    MessageBox.Show(preset.NotesOrWarnings, "Notes/Warnings");
                }
            }
        }
Пример #4
0
        private void loadPresetList()
        {
            this.comboPresets.Items.Clear();
            this.comboPresets.Text = String.Empty;

            foreach (string f in Directory.GetFiles(PLUGIN_PATH, "*.xml", SearchOption.TopDirectoryOnly))
            {
                try
                {
                    XmaConverterSettings preset = getPresetFromFile(f);

                    if ((preset != null) && (!String.IsNullOrEmpty(preset.Header.FormatName)))
                    {
                        comboPresets.Items.Add(preset);
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show(String.Format("Error loading preset file <{0}>", Path.GetFileName(f)), "Error");
                }
            }

            comboPresets.Sorted = true;
        }
Пример #5
0
        private XmaConverterSettings buildPresetForCurrentValues()
        {
            XmaConverterSettings xmaSettings = new XmaConverterSettings();

            #region XMA PARSE

            //general
            xmaSettings.UseXmaParse = this.cbDoXmaParse.Checked;

            if (!String.IsNullOrEmpty(this.comboXmaParseInputType.Text))
            {
                xmaSettings.XmaParseParameters.XmaTypeSpecified = true;

                switch (this.comboXmaParseInputType.Text)
                {
                case "1":
                    xmaSettings.XmaParseParameters.XmaType = XmaType.Item1;
                    break;

                case "2":
                    xmaSettings.XmaParseParameters.XmaType = XmaType.Item2;
                    break;

                default:
                    break;
                }
            }
            else
            {
                xmaSettings.XmaParseParameters.XmaTypeSpecified = false;
            }

            xmaSettings.XmaParseParameters.RebuildXmaSpecified           = true;
            xmaSettings.XmaParseParameters.RebuildXma                    = this.cbXmaParseDoRebuild.Checked;
            xmaSettings.XmaParseParameters.IgnoreXmaParseErrorsSpecified = true;
            xmaSettings.XmaParseParameters.IgnoreXmaParseErrors          = this.cbXmaParseIgnoreErrors.Checked;

            // start offset
            xmaSettings.XmaParseParameters.UseStaticStartOffset          = this.rbXmaParseStartOffsetStatic.Checked;
            xmaSettings.XmaParseParameters.UseDynamicStartOffset         = this.rbXmaParseStartOffsetOffset.Checked;
            xmaSettings.XmaParseParameters.SetStartOffsetAfterRiffHeader = this.rbStartOffsetIsAfterRiff.Checked;

            xmaSettings.XmaParseParameters.StartOffsetStatic = this.tbXmaParseStartOffset.Text;

            if (this.rbXmaParseStartOffsetOffset.Checked)
            {
                xmaSettings.XmaParseParameters.StartOffsetOffset     = this.XmaParseStartOffsetOffsetDescription.OffsetValue;
                xmaSettings.XmaParseParameters.StartOffsetOffsetSize = this.XmaParseStartOffsetOffsetDescription.OffsetSize;
                xmaSettings.XmaParseParameters.StartOffsetOffsetEndianessSpecified = true;
                xmaSettings.XmaParseParameters.StartOffsetOffsetEndianess          = getEndiannessForStringValue(this.XmaParseStartOffsetOffsetDescription.OffsetByteOrder);
            }

            // block size
            xmaSettings.XmaParseParameters.UseStaticBlockSize  = this.rbXmaParseBlockSizeStatic.Checked;
            xmaSettings.XmaParseParameters.UseDynamicBlockSize = this.rbXmaParseBlockSizeOffset.Checked;

            xmaSettings.XmaParseParameters.BlockSizeStatic = this.tbXmaParseBlockSize.Text;

            if (this.rbXmaParseBlockSizeOffset.Checked)
            {
                xmaSettings.XmaParseParameters.BlockSizeOffset     = this.XmaParseBlockSizeOffsetDescription.OffsetValue;
                xmaSettings.XmaParseParameters.BlockSizeOffsetSize = this.XmaParseBlockSizeOffsetDescription.OffsetSize;
                xmaSettings.XmaParseParameters.BlockSizeOffsetEndianessSpecified = true;
                xmaSettings.XmaParseParameters.BlockSizeOffsetEndianess          = getEndiannessForStringValue(this.XmaParseBlockSizeOffsetDescription.OffsetByteOrder);
            }

            // data size
            xmaSettings.XmaParseParameters.UseStaticDataSize         = this.rbXmaParseDataSizeStatic.Checked;
            xmaSettings.XmaParseParameters.UseDynamicDataSize        = this.rbXmaParseDataSizeOffset.Checked;
            xmaSettings.XmaParseParameters.GetDataSizeFromRiffHeader = this.rbGetDataSizeFromRiff.Checked;

            xmaSettings.XmaParseParameters.DataSizeStatic = this.tbXmaParseDataSize.Text;

            if (this.rbXmaParseDataSizeOffset.Checked)
            {
                xmaSettings.XmaParseParameters.DataSizeOffset     = this.XmaParseDataSizeOffsetDescription.OffsetValue;
                xmaSettings.XmaParseParameters.DataSizeOffsetSize = this.XmaParseDataSizeOffsetDescription.OffsetSize;
                xmaSettings.XmaParseParameters.DataSizeOffsetEndianessSpecified = true;
                xmaSettings.XmaParseParameters.DataSizeOffsetEndianess          = getEndiannessForStringValue(this.XmaParseDataSizeOffsetDescription.OffsetByteOrder);
            }

            #endregion

            #region RIFF HEADER

            xmaSettings.AddRiffHeader = this.cbAddRiffHeader.Checked;

            // Frequency
            if (this.rbAddManualFrequency.Checked)
            {
                xmaSettings.RiffParameters.UseStaticFrequency = true;
                xmaSettings.RiffParameters.FrequencyStatic    = this.comboRiffFrequency.Text;
            }
            else if (this.rbFrequencyOffset.Checked)
            {
                xmaSettings.RiffParameters.GetFrequencyFromOffset            = true;
                xmaSettings.RiffParameters.FrequencyOffset                   = this.frequencyOffsetDescription.OffsetValue;
                xmaSettings.RiffParameters.FrequencyOffsetSize               = this.frequencyOffsetDescription.OffsetSize;
                xmaSettings.RiffParameters.FrequencyOffsetEndianessSpecified = true;
                xmaSettings.RiffParameters.FrequencyOffsetEndianess          = getEndiannessForStringValue(this.frequencyOffsetDescription.OffsetByteOrder);
            }

            xmaSettings.RiffParameters.GetFrequencyFromRiffHeader = this.rbGetFrequencyFromRiff.Checked;

            // Channels
            if (this.rbAddManualChannels.Checked)
            {
                xmaSettings.RiffParameters.UseStaticChannels = true;

                switch (this.comboRiffChannels.Text)
                {
                case XmaConverterWorker.RIFF_CHANNELS_1:
                    xmaSettings.RiffParameters.ChannelStatic = "mono";
                    break;

                case XmaConverterWorker.RIFF_CHANNELS_2:
                    xmaSettings.RiffParameters.ChannelStatic = "stereo";
                    break;

                default:
                    xmaSettings.RiffParameters.ChannelStatic = "ERROR";
                    break;
                }
            }
            else if (this.rbNumberOfChannelsOffset.Checked)
            {
                xmaSettings.RiffParameters.GetChannelsFromOffset           = true;
                xmaSettings.RiffParameters.ChannelOffset                   = this.numberOfChannelsOffsetDescription.OffsetValue;
                xmaSettings.RiffParameters.ChannelOffsetSize               = this.numberOfChannelsOffsetDescription.OffsetSize;
                xmaSettings.RiffParameters.ChannelOffsetEndianessSpecified = true;
                xmaSettings.RiffParameters.ChannelOffsetEndianess          = getEndiannessForStringValue(this.numberOfChannelsOffsetDescription.OffsetByteOrder);
            }

            xmaSettings.RiffParameters.GetChannelsFromRiffHeader = this.rbGetChannelsFromRiff.Checked;

            #endregion

            #region POS MAKER

            xmaSettings.CreatePosFile = this.cbMakePosFile.Checked;

            // loop start
            xmaSettings.PosFileParameters.UseStaticStartOffset  = this.rbLoopStartStatic.Checked;
            xmaSettings.PosFileParameters.UseDynamicStartOffset = this.rbLoopStartOffset.Checked;

            xmaSettings.PosFileParameters.StartOffsetStatic = this.tbLoopStartStatic.Text;

            if (this.rbLoopStartOffset.Checked)
            {
                xmaSettings.PosFileParameters.StartOffsetOffset     = this.loopStartValueOffsetDescription.OffsetValue;
                xmaSettings.PosFileParameters.StartOffsetOffsetSize = this.loopStartValueOffsetDescription.OffsetSize;
                xmaSettings.PosFileParameters.StartOffsetOffsetEndianessSpecified = true;
                xmaSettings.PosFileParameters.StartOffsetOffsetEndianess          = getEndiannessForStringValue(this.loopStartValueOffsetDescription.OffsetByteOrder);
                xmaSettings.PosFileParameters.StartOffsetCalculation = this.loopStartValueOffsetDescription.CalculationValue;
            }

            // loop end
            xmaSettings.PosFileParameters.UseStaticEndOffset  = this.rbLoopEndStatic.Checked;
            xmaSettings.PosFileParameters.UseDynamicEndOffset = this.rbLoopEndOffset.Checked;

            xmaSettings.PosFileParameters.EndOffsetStatic = this.tbLoopEndStatic.Text;

            if (this.rbLoopEndOffset.Checked)
            {
                xmaSettings.PosFileParameters.EndOffsetOffset     = this.loopEndValueOffsetDescription.OffsetValue;
                xmaSettings.PosFileParameters.EndOffsetOffsetSize = this.loopEndValueOffsetDescription.OffsetSize;
                xmaSettings.PosFileParameters.EndOffsetOffsetEndianessSpecified = true;
                xmaSettings.PosFileParameters.EndOffsetOffsetEndianess          = getEndiannessForStringValue(this.loopEndValueOffsetDescription.OffsetByteOrder);
                xmaSettings.PosFileParameters.EndOffsetCalculation = this.loopEndValueOffsetDescription.CalculationValue;
            }

            #endregion

            #region WAV CONVERSION

            xmaSettings.WavConversionParameters.UseToWav     = this.rbDoToWav.Checked;
            xmaSettings.WavConversionParameters.UseXmaEncode = this.rbDoXmaEncode.Checked;

            #endregion

            return(xmaSettings);
        }
Пример #6
0
        private void loadXmaConverterSettings(XmaConverterSettings xmaSettings)
        {
            #region XMA PARSE

            //general
            this.cbDoXmaParse.Checked = xmaSettings.UseXmaParse;

            if (xmaSettings.XmaParseParameters.XmaTypeSpecified)
            {
                switch (xmaSettings.XmaParseParameters.XmaType)
                {
                case XmaType.Item1:
                    this.comboXmaParseInputType.Text = "1";
                    break;

                case XmaType.Item2:
                    this.comboXmaParseInputType.Text = "2";
                    break;

                default:
                    this.comboXmaParseInputType.Text = String.Empty;
                    break;
                }
            }

            this.cbXmaParseDoRebuild.Checked    = xmaSettings.XmaParseParameters.RebuildXmaSpecified && xmaSettings.XmaParseParameters.RebuildXma;
            this.cbXmaParseIgnoreErrors.Checked = xmaSettings.XmaParseParameters.IgnoreXmaParseErrorsSpecified && xmaSettings.XmaParseParameters.IgnoreXmaParseErrors;

            // start offset
            this.rbXmaParseStartOffsetStatic.Checked = xmaSettings.XmaParseParameters.UseStaticStartOffset;
            this.rbXmaParseStartOffsetOffset.Checked = xmaSettings.XmaParseParameters.UseDynamicStartOffset;
            this.rbStartOffsetIsAfterRiff.Checked    = xmaSettings.XmaParseParameters.SetStartOffsetAfterRiffHeader;

            this.tbXmaParseStartOffset.Text = xmaSettings.XmaParseParameters.StartOffsetStatic;

            if (xmaSettings.XmaParseParameters.UseDynamicStartOffset)
            {
                this.XmaParseStartOffsetOffsetDescription.OffsetValue     = xmaSettings.XmaParseParameters.StartOffsetOffset;
                this.XmaParseStartOffsetOffsetDescription.OffsetSize      = xmaSettings.XmaParseParameters.StartOffsetOffsetSize;
                this.XmaParseStartOffsetOffsetDescription.OffsetByteOrder = getEndiannessStringForXmlValue(xmaSettings.XmaParseParameters.StartOffsetOffsetEndianess);
            }

            // block size
            this.rbXmaParseBlockSizeStatic.Checked = xmaSettings.XmaParseParameters.UseStaticBlockSize;
            this.rbXmaParseBlockSizeOffset.Checked = xmaSettings.XmaParseParameters.UseDynamicBlockSize;

            this.tbXmaParseBlockSize.Text = xmaSettings.XmaParseParameters.BlockSizeStatic;

            if (xmaSettings.XmaParseParameters.UseDynamicBlockSize)
            {
                this.XmaParseBlockSizeOffsetDescription.OffsetValue     = xmaSettings.XmaParseParameters.BlockSizeOffset;
                this.XmaParseBlockSizeOffsetDescription.OffsetSize      = xmaSettings.XmaParseParameters.BlockSizeOffsetSize;
                this.XmaParseBlockSizeOffsetDescription.OffsetByteOrder = getEndiannessStringForXmlValue(xmaSettings.XmaParseParameters.BlockSizeOffsetEndianess);
            }

            // data size
            this.rbXmaParseDataSizeStatic.Checked = xmaSettings.XmaParseParameters.UseStaticDataSize;
            this.rbXmaParseDataSizeOffset.Checked = xmaSettings.XmaParseParameters.UseDynamicDataSize;
            this.rbGetDataSizeFromRiff.Checked    = xmaSettings.XmaParseParameters.GetDataSizeFromRiffHeader;

            this.tbXmaParseDataSize.Text = xmaSettings.XmaParseParameters.DataSizeStatic;

            if (xmaSettings.XmaParseParameters.UseDynamicDataSize)
            {
                this.XmaParseDataSizeOffsetDescription.OffsetValue     = xmaSettings.XmaParseParameters.DataSizeOffset;
                this.XmaParseDataSizeOffsetDescription.OffsetSize      = xmaSettings.XmaParseParameters.DataSizeOffsetSize;
                this.XmaParseDataSizeOffsetDescription.OffsetByteOrder = getEndiannessStringForXmlValue(xmaSettings.XmaParseParameters.DataSizeOffsetEndianess);
            }

            #endregion

            #region RIFF HEADER

            this.cbAddRiffHeader.Checked = xmaSettings.AddRiffHeader;

            if (xmaSettings.AddRiffHeader)
            {
                // Frequency
                if (xmaSettings.RiffParameters.UseStaticFrequency)
                {
                    this.rbAddManualFrequency.Checked = true;
                    this.comboRiffFrequency.Text      = xmaSettings.RiffParameters.FrequencyStatic;
                }
                else if (xmaSettings.RiffParameters.GetFrequencyFromOffset)
                {
                    this.rbFrequencyOffset.Checked = true;

                    this.frequencyOffsetDescription.OffsetValue     = xmaSettings.RiffParameters.FrequencyOffset;
                    this.frequencyOffsetDescription.OffsetSize      = xmaSettings.RiffParameters.FrequencyOffsetSize;
                    this.frequencyOffsetDescription.OffsetByteOrder = getEndiannessStringForXmlValue(xmaSettings.RiffParameters.FrequencyOffsetEndianess);
                }

                this.rbGetFrequencyFromRiff.Checked = xmaSettings.RiffParameters.GetFrequencyFromRiffHeader;

                // Channels
                if (xmaSettings.RiffParameters.UseStaticChannels)
                {
                    this.rbAddManualChannels.Checked = true;

                    switch (xmaSettings.RiffParameters.ChannelStatic)
                    {
                    case "mono":
                        this.comboRiffChannels.Text = XmaConverterWorker.RIFF_CHANNELS_1;
                        break;

                    case "stereo":
                        this.comboRiffChannels.Text = XmaConverterWorker.RIFF_CHANNELS_2;
                        break;

                    default:
                        this.comboRiffChannels.Text = XmaConverterWorker.RIFF_CHANNELS_2;
                        break;
                    }
                }
                else if (xmaSettings.RiffParameters.GetChannelsFromOffset)
                {
                    this.rbNumberOfChannelsOffset.Checked = true;

                    this.numberOfChannelsOffsetDescription.OffsetValue     = xmaSettings.RiffParameters.ChannelOffset;
                    this.numberOfChannelsOffsetDescription.OffsetSize      = xmaSettings.RiffParameters.ChannelOffsetSize;
                    this.numberOfChannelsOffsetDescription.OffsetByteOrder = getEndiannessStringForXmlValue(xmaSettings.RiffParameters.ChannelOffsetEndianess);
                }

                this.rbGetChannelsFromRiff.Checked = xmaSettings.RiffParameters.GetChannelsFromRiffHeader;
            }

            #endregion

            #region POS MAKER

            this.cbMakePosFile.Checked = xmaSettings.CreatePosFile;

            // loop start
            this.rbLoopStartStatic.Checked = xmaSettings.PosFileParameters.UseStaticStartOffset;
            this.rbLoopStartOffset.Checked = xmaSettings.PosFileParameters.UseDynamicStartOffset;

            this.tbLoopStartStatic.Text = xmaSettings.PosFileParameters.StartOffsetStatic;

            if (xmaSettings.PosFileParameters.UseDynamicStartOffset)
            {
                this.loopStartValueOffsetDescription.OffsetValue      = xmaSettings.PosFileParameters.StartOffsetOffset;
                this.loopStartValueOffsetDescription.OffsetSize       = xmaSettings.PosFileParameters.StartOffsetOffsetSize;
                this.loopStartValueOffsetDescription.OffsetByteOrder  = getEndiannessStringForXmlValue(xmaSettings.PosFileParameters.StartOffsetOffsetEndianess);
                this.loopStartValueOffsetDescription.CalculationValue = xmaSettings.PosFileParameters.StartOffsetCalculation;
            }

            // loop end
            this.rbLoopEndStatic.Checked = xmaSettings.PosFileParameters.UseStaticEndOffset;
            this.rbLoopEndOffset.Checked = xmaSettings.PosFileParameters.UseDynamicEndOffset;

            this.tbLoopEndStatic.Text = xmaSettings.PosFileParameters.EndOffsetStatic;

            if (xmaSettings.PosFileParameters.UseDynamicEndOffset)
            {
                this.loopEndValueOffsetDescription.OffsetValue      = xmaSettings.PosFileParameters.EndOffsetOffset;
                this.loopEndValueOffsetDescription.OffsetSize       = xmaSettings.PosFileParameters.EndOffsetOffsetSize;
                this.loopEndValueOffsetDescription.OffsetByteOrder  = getEndiannessStringForXmlValue(xmaSettings.PosFileParameters.EndOffsetOffsetEndianess);
                this.loopEndValueOffsetDescription.CalculationValue = xmaSettings.PosFileParameters.EndOffsetCalculation;
            }

            #endregion

            #region WAV CONVERSION

            this.rbDoToWav.Checked     = xmaSettings.WavConversionParameters.UseToWav;
            this.rbDoXmaEncode.Checked = xmaSettings.WavConversionParameters.UseXmaEncode;

            #endregion
        }