Пример #1
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            SceneManager.Current.OnProgress += scene_OnProgress;

            btnOK.Visible     = false;
            btnCancel.Visible = false;

            gbProgress.Visible = true;
            pbProgress.Visible = true;

            Application.DoEvents();
            timer.Start();

            if (!Directory.Exists(txtPath.Text))
            {
                Directory.CreateDirectory(txtPath.Text);
            }

            flump.Settings["car"]         = car;
            flump.Settings["pretty.name"] = txtPrettyCarName.Text;

            lblInfo               = lblInfoMeshes;
            lblProgress           = lblProgressMeshes;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 30;

            new CNTExporter().Export(SceneManager.Current.Models[0], txtPath.Text + "car.cnt");
            new MDLExporter().Export(SceneManager.Current.Models[0], txtPath.Text);

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Meshes";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoTextures;
            lblProgress           = lblProgressTextures;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 50;

            var textures = new List <string>();

            foreach (var material in SceneManager.Current.Materials)
            {
                string fileName = txtPath.Text + "\\" + material.Texture.Name;

                if (!textures.Contains(material.Texture.Name))
                {
                    if (!File.Exists(fileName + ".tdx"))
                    {
                        var tx = new TDXExporter();
                        tx.ExportSettings.AddSetting("Format", ToxicRagers.Helpers.D3DFormat.DXT5);
                        tx.Export(material.Texture, txtPath.Text);
                    }

                    //if (!File.Exists(fileName + ".img"))
                    //{
                    //    var tx = new IMGExporter();
                    //    tx.Export(material.Texture, txtPath.Text);
                    //}

                    textures.Add(material.Texture.Name);
                }
            }

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Textures";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoMaterials;
            lblProgress           = lblProgressMaterials;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 60;

            foreach (var material in SceneManager.Current.Materials)
            {
                string fileName = Path.Combine(txtPath.Text, material.Name + ".mt2");

                if (!File.Exists(fileName))
                {
                    var simple = new ToxicRagers.CarmageddonReincarnation.Formats.Materials.simple_base();
                    simple.DiffuseColour = material.Texture.Name;
                    simple.Save(fileName);
                }
            }

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Materials";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoPaperwork;
            lblProgress           = lblProgressPaperwork;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 75;

            if (!File.Exists(txtPath.Text + "setup.lol"))
            {
                Setup setup = new Setup(SetupContext.Vehicle);

                setup.Settings.SetParameterForMethod("PowerMultiplier", "Value", 1.5f);
                setup.Settings.SetParameterForMethod("TractionFactor", "Factor", 1.2f);
                setup.Settings.SetParameterForMethod("RearGrip", "Value", 1.6f);
                setup.Settings.SetParameterForMethod("FrontGrip", "Value", 1.7f);
                setup.Settings.SetParameterForMethod("FrontRoll", "Value", 0.4f);
                setup.Settings.SetParameterForMethod("RearRoll", "Value", 0.3f);
                setup.Settings.SetParameterForMethod("FrontSuspGive", "Value", 0.1f);
                setup.Settings.SetParameterForMethod("RearSuspGive", "Value", 0.08f);
                setup.Settings.SetParameterForMethod("SteerCentreMultiplier", "Value", 2);
                setup.Settings.SetParameterForMethod("DragCoefficient", "Value", 0.4f);
                setup.Settings.SetParameterForMethod("Mass", "Value", 1300);
                setup.Settings.SetParameterForMethod("TorqueCurve", "1", 150);
                setup.Settings.SetParameterForMethod("TorqueCurve", "2", 232);

                SceneManager.Current.Models[0].SupportingDocuments["Setup"] = setup;

                var sx = new SetupLOLExporter();
                sx.ExportSettings.AddSetting("Context", SetupContext.Vehicle);
                sx.Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (!File.Exists(txtPath.Text + "Structure.xml"))
            {
                new StructureXMLExporter().Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (!File.Exists(txtPath.Text + "SystemsDamage.xml"))
            {
                new SystemsDamageXMLExporter().Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (!File.Exists(txtPath.Text + "vehicle_setup.cfg"))
            {
                var cfgx = new VehicleSetupCFGExporter();
                cfgx.ExportSettings.AddSetting("VehicleName", txtCarName.Text);
                cfgx.Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Paperwork";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoZAD;
            lblProgress           = lblProgressZAD;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 100;

            var minge = new ToxicRagers.CarmageddonReincarnation.Formats.MINGE();

            minge.Name    = txtPrettyCarName.Text;
            minge.Author  = Properties.Settings.Default.PersonalAuthor;
            minge.Website = Properties.Settings.Default.PersonalWebsite;
            minge.Type    = MINGE.ModType.Vehicle;
            minge.Save(Path.Combine(txtPath.Text, txtCarName.Text + ".minge"));

            var zad = ToxicRagers.Stainless.Formats.ZAD.Create(Path.Combine(txtPath.Text, txtCarName.Text + ".zip"));

            zad.AddDirectory(Path.GetDirectoryName(txtPath.Text));

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "CarMODgeddon ZIP file";
            pbProgress.Value      = progressMax;

            flump.Save(txtPath.Text + "car.flump");

            timer.Stop();
            SceneManager.Current.OnProgress -= scene_OnProgress;

            btnClose.Visible = true;

            Application.DoEvents();

            SceneManager.Current.UpdateProgress(string.Format("Vehicle '{0}' saved successfully!", car));
        }
Пример #2
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            SceneManager.Current.OnProgress += scene_OnProgress;

            btnOK.Visible     = false;
            btnCancel.Visible = false;

            gbProgress.Visible = true;
            pbProgress.Visible = true;

            Application.DoEvents();
            timer.Start();

            if (!Directory.Exists(txtPath.Text))
            {
                Directory.CreateDirectory(txtPath.Text);
            }

            flump.Settings["car"]         = car;
            flump.Settings["pretty.name"] = txtPrettyCarName.Text;

            lblInfo               = lblInfoMeshes;
            lblProgress           = lblProgressMeshes;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 30;

            new CNTExporter().Export(SceneManager.Current.Models[0], Path.Combine(txtPath.Text, "car.cnt"));
            new MDLExporter().Export(SceneManager.Current.Models[0], txtPath.Text);

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Meshes";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoTextures;
            lblProgress           = lblProgressTextures;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 50;

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

            foreach (Material material in SceneManager.Current.Materials)
            {
                foreach (Texture texture in material.Textures)
                {
                    if (texture.FileName == null)
                    {
                        continue;
                    }

                    string fileName = Path.Combine(txtPath.Text, texture.FileName);

                    if (!textures.Contains(fileName))
                    {
                        if (!File.Exists($"{fileName}.tdx"))
                        {
                            TDXExporter tx = new TDXExporter();
                            tx.ExportSettings.AddSetting("Format", ToxicRagers.Helpers.D3DFormat.DXT5);
                            tx.Export(texture, $"{fileName}.tdx");
                        }

                        textures.Add(texture.FileName);
                    }
                }
            }

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Textures";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoMaterials;
            lblProgress           = lblProgressMaterials;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 60;

            foreach (Material material in SceneManager.Current.Materials)
            {
                string fileName = Path.Combine(txtPath.Text, $"{material.Name}.mt2");

                if (material.SupportingDocuments.ContainsKey("Source"))
                {
                    (material.SupportingDocuments["Source"] as MT2).Save(fileName);
                }
                else
                {
                    if (!File.Exists(fileName) && material.Textures.Count > 0)
                    {
                        simple_base simple = new simple_base
                        {
                            DiffuseColour = material.Texture.Name
                        };

                        simple.Save(fileName);
                    }
                }
            }

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Materials";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoPaperwork;
            lblProgress           = lblProgressPaperwork;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 75;

            if (!File.Exists(Path.Combine(txtPath.Text, "setup.lol")))
            {
                Setup setup;

                if (!SceneManager.Current.Models[0].SupportingDocuments.ContainsKey("Setup"))
                {
                    setup = new Setup(SetupContext.Vehicle);

                    setup.Settings.SetParameterForMethod("PowerMultiplier", "Value", 1.35f);
                    setup.Settings.SetParameterForMethod("TractionFactor", "Factor", 1.2f);
                    setup.Settings.SetParameterForMethod("FinalDrive", "Factor", 0.8f);
                    setup.Settings.SetParameterForMethod("RearGrip", "Value", 1.68f);
                    setup.Settings.SetParameterForMethod("FrontGrip", "Value", 1.85f);
                    setup.Settings.SetParameterForMethod("CMPosY", "Value", 0.4f);
                    setup.Settings.SetParameterForMethod("FrontRoll", "Value", 0.45f);
                    setup.Settings.SetParameterForMethod("RearRoll", "Value", 0.4f);
                    setup.Settings.SetParameterForMethod("FrontSuspGive", "Value", 0.0667f);
                    setup.Settings.SetParameterForMethod("RearSuspGive", "Value", 0.0667f);
                    setup.Settings.SetParameterForMethod("SteerCentreMultiplier", "Value", 2);
                    setup.Settings.SetParameterForMethod("BrakeForce", "Value", 75);
                    setup.Settings.SetParameterForMethod("HandBrakeStrength", "Value", 20);
                    setup.Settings.SetParameterForMethod("DragCoefficient", "Value", 0.2f);
                    setup.Settings.SetParameterForMethod("Mass", "Value", 1300);
                    setup.Settings.SetParameterForMethod("TorqueCurve", "1", 160);
                    setup.Settings.SetParameterForMethod("TorqueCurve", "2", 232);
                    setup.Settings.SetParameterForMethod("TorqueCurve", "3", 280);
                    setup.Settings.SetParameterForMethod("TorqueCurve", "4", 312);
                    setup.Settings.SetParameterForMethod("TorqueCurve", "5", 280);
                }
                else
                {
                    setup = SceneManager.Current.Models[0].GetSupportingDocument <Setup>("Setup");
                }

                SceneManager.Current.Models[0].SupportingDocuments["Setup"] = setup;

                SetupLOLExporter sx = new SetupLOLExporter();
                sx.ExportSettings.AddSetting("Context", SetupContext.Vehicle);
                sx.Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (!File.Exists(Path.Combine(txtPath.Text, "Structure.xml")))
            {
                new StructureXMLExporter().Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (!File.Exists(Path.Combine(txtPath.Text, "SystemsDamage.xml")))
            {
                new SystemsDamageXMLExporter().Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (!File.Exists(Path.Combine(txtPath.Text, "vehicle_setup.cfg")))
            {
                VehicleSetupCFGExporter cfgx = new VehicleSetupCFGExporter();
                cfgx.ExportSettings.AddSetting("VehicleName", txtCarName.Text);
                cfgx.Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (!File.Exists(Path.Combine(txtPath.Text, "vehicle_setup.lol")))
            {
                new VehicleSetupLOLExporter().Export(SceneManager.Current.Models[0], txtPath.Text);
            }

            if (SceneManager.Current.Models[0].SupportingDocuments.ContainsKey("VFXAnchors"))
            {
                SceneManager.Current.Models[0].GetSupportingDocument <VFXAnchors>("VFXAnchors").Save(txtPath.Text);
            }

            if (SceneManager.Current.Models[0].SupportingDocuments.ContainsKey("Collision"))
            {
                new CNTExporter().Export(SceneManager.Current.Models[0].GetSupportingDocument <Model>("Collision"), Path.Combine(txtPath.Text, "collision.cnt"));
                new MDLExporter().Export(SceneManager.Current.Models[0].GetSupportingDocument <Model>("Collision"), txtPath.Text);
            }

            if (SceneManager.Current.Models[0].SupportingDocuments.ContainsKey("OpponentCollision"))
            {
                new CNTExporter().Export(SceneManager.Current.Models[0].GetSupportingDocument <Model>("OpponentCollision"), Path.Combine(txtPath.Text, "opponent_collision.cnt"));
                new MDLExporter().Export(SceneManager.Current.Models[0].GetSupportingDocument <Model>("OpponentCollision"), txtPath.Text);
            }

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "Paperwork";
            pbProgress.Value      = progressMax;

            Application.DoEvents();

            lblInfo               = lblInfoZAD;
            lblProgress           = lblProgressZAD;
            lblProgress.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
            progressMax           = 100;

            MINGE minge = new MINGE
            {
                Name = txtPrettyCarName.Text,
                //Author = Properties.Settings.Default.PersonalAuthor,
                //Website = Properties.Settings.Default.PersonalWebsite,
                Type = MINGE.ModType.Vehicle
            };

            minge.Save(Path.Combine(txtPath.Text, $"{txtCarName.Text}.minge"));

            ZAD zad = ZAD.Create(Path.Combine(txtPath.Text, $"{txtCarName.Text}.zip"));

            zad.AddDirectory(Path.GetDirectoryName(txtPath.Text));

            lblProgress.Text      = "✓";
            lblProgress.ForeColor = Color.Green;
            lblInfo.Text          = "CarMODgeddon ZIP file";
            pbProgress.Value      = progressMax;

            flump.Save(Path.Combine(txtPath.Text, "car.flump"));

            timer.Stop();
            SceneManager.Current.OnProgress -= scene_OnProgress;

            btnClose.Visible = true;

            Application.DoEvents();

            SceneManager.Current.UpdateProgress($"Vehicle '{car}' saved successfully!");
        }