private void tsmExport_Click(object sender, EventArgs e)
        {
            IniFile ExportIniFile = new IniFile();

            ExportIniFile.AddValue("Unit Stats", "Description", txtDescription.Text);
            ExportIniFile.AddValue("Unit Stats", "Price", txtPrice.Text);
            ExportIniFile.AddValue("Unit Stats", "EXP", txtEXP.Text);
            ExportIniFile.AddValue("Unit Stats", "BaseHP", txtBaseHP.Text);
            ExportIniFile.AddValue("Unit Stats", "BaseEN", txtBaseEN.Text);
            ExportIniFile.AddValue("Unit Stats", "BaseArmor", txtBaseArmor.Text);
            ExportIniFile.AddValue("Unit Stats", "BaseMobility", txtBaseMobility.Text);
            ExportIniFile.AddValue("Unit Stats", "BaseMovement", txtBaseMovement.Text);
            ExportIniFile.AddValue("Unit Stats", "AttackUpgradesValueIndex", frmAttacks.AttackUpgradesValueIndex.ToString());
            ExportIniFile.AddValue("Unit Stats", "AttackUpgradesCostIndex", frmAttacks.AttackUpgradesCostIndex.ToString());

            if (cbTerrainAir.SelectedIndex >= 0)
            {
                ExportIniFile.AddValue("Unit Terrain", UnitStats.TerrainAir, cbTerrainAir.Text);
            }
            if (cbTerrainLand.SelectedIndex >= 0)
            {
                ExportIniFile.AddValue("Unit Terrain", UnitStats.TerrainLand, cbTerrainLand.Text);
            }
            if (cbTerrainSea.SelectedIndex >= 0)
            {
                ExportIniFile.AddValue("Unit Terrain", UnitStats.TerrainSea, cbTerrainSea.Text);
            }
            if (cbTerrainSpace.SelectedIndex >= 0)
            {
                ExportIniFile.AddValue("Unit Terrain", UnitStats.TerrainSpace, cbTerrainSpace.Text);
            }

            List <string> UnitMovements = new List <string>();

            if (cboMovementAir.Checked)
            {
                ExportIniFile.AddValue("Unit Movements", UnitStats.TerrainAir, "");
            }
            if (cboMovementLand.Checked)
            {
                ExportIniFile.AddValue("Unit Movements", UnitStats.TerrainLand, "");
            }
            if (cboMovementSea.Checked)
            {
                ExportIniFile.AddValue("Unit Movements", UnitStats.TerrainSea, "");
            }
            if (cboMovementSpace.Checked)
            {
                ExportIniFile.AddValue("Unit Movements", UnitStats.TerrainSpace, "");
            }
            if (cboMovementUnderground.Checked)
            {
                ExportIniFile.AddValue("Unit Movements", UnitStats.TerrainUnderground, "");
            }
            if (cboMovementUnderwater.Checked)
            {
                ExportIniFile.AddValue("Unit Movements", UnitStats.TerrainUnderwater, "");
            }

            if (rbSizeLLL.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size", "LLL");
            }
            else if (rbSizeLL.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size", "LL");
            }
            else if (rbSizeL.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size", "L");
            }
            else if (rbSizeM.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size", "M");
            }
            else if (rbSizeS.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size", "S");
            }
            else if (rbSizeSS.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size", "SS");
            }

            if (frmUnitSizeEditor.rbNone.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size Mask Width", "1");
                ExportIniFile.AddValue("Unit Stats", "Size Mask Height", "1");
                ExportIniFile.AddValue("Size Mask", "Pos X0Y0", "true");
            }
            else if (frmUnitSizeEditor.rbSizeOnly.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size Mask Width", frmUnitSizeEditor.txtWidth.Value.ToString());
                ExportIniFile.AddValue("Unit Stats", "Size Mask Height", frmUnitSizeEditor.txtHeight.Value.ToString());
                for (int X = 0; X < frmUnitSizeEditor.txtWidth.Value; X++)
                {
                    for (int Y = 0; Y < frmUnitSizeEditor.txtHeight.Value; Y++)
                    {
                        ExportIniFile.AddValue("Size Mask", "Pos X" + X + "Y" + Y, "true");
                    }
                }
            }
            else if (frmUnitSizeEditor.rbCustomSizeBox.Checked)
            {
                ExportIniFile.AddValue("Unit Stats", "Size Mask Width", frmUnitSizeEditor.txtWidth.Value.ToString());
                ExportIniFile.AddValue("Unit Stats", "Size Mask Height", frmUnitSizeEditor.txtHeight.Value.ToString());
                for (int X = 0; X < frmUnitSizeEditor.txtWidth.Value; X++)
                {
                    for (int Y = 0; Y < frmUnitSizeEditor.txtHeight.Value; Y++)
                    {
                        ExportIniFile.AddValue("Size Mask", "Pos X" + X + "Y" + Y, frmUnitSizeEditor.ListUnitSize[X][Y].ToString());
                    }
                }
            }

            //Write Pilots whitelist.
            for (int P = 0; P < lstPilots.Items.Count; ++P)
            {
                ExportIniFile.AddValue("Pilot Whitelist", "Pilot #" + P, (string)lstPilots.Items[P]);
            }

            //Attacks.
            for (int A = 0; A < frmAttacks.ListAttack.Count; ++A)
            {
                ExportIniFile.AddValue("Attacks", "Attack " + A, frmAttacks.ListAttack[A].RelativePath);
                for (int An = 0; An < frmAttacks.ListAttack[A].Animations.Count; ++An)
                {
                    ExportIniFile.AddValue("Attack Animations", "Attack " + A + " Path " + An, frmAttacks.ListAttack[A].Animations[0].Animations[An].AnimationName);
                }
            }

            //Animations.
            for (int A = 0; A < lstAnimations.Items.Count; ++A)
            {
                ExportIniFile.AddValue("Animations", "Path " + A, (string)lstAnimations.Items[A].Tag);
            }

            //Abilities.
            for (int A = 0; A < lstAbilities.Items.Count; ++A)
            {
                ExportIniFile.AddValue("Abilities", "Path " + A, (string)lstAbilities.Items[A]);
            }

            ExportIniFile.AddValue("Unit Stats", "Parts Slots", txtPartsSlots.Value.ToString());

            SaveFileDialog SaveDialog = new SaveFileDialog();

            if (SaveDialog.ShowDialog() == DialogResult.OK)
            {
                ExportIniFile.SaveToFile(SaveDialog.FileName);
            }
        }