コード例 #1
0
        private void AddDefaultMaterials()
        {
            // mostly guesses.  big guesses.
            _props.Add(StoneMaterial.Material, StoneMaterial);
            _props.Add(IceMaterial.Material, IceMaterial);

            // http://reference.wolfram.com/language/ref/ElementData.html
            _props.Add(IronMaterial.Material, IronMaterial);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Nickel", density: 8908, thermalConductivity: 91e-3,
                              meltPoint: 1728, boilPoint: 3186, s: 445e-3, molMass: 158.6934, hFus: 7.2, hVap: 378);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Cobalt", density: 8900, thermalConductivity: 100e-3,
                              meltPoint: 1768, boilPoint: 3200, s: 421e-3, molMass: 58.933, hFus: 16.2, hVap: 375);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Magnesium", density: 1738, thermalConductivity: 160e-3,
                              meltPoint: 923, boilPoint: 1363, s: 1020e-3, molMass: 24.305, hFus: 8.7, hVap: 128);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Silicon", density: 2330, thermalConductivity: 150e-3,
                              meltPoint: 1687, boilPoint: 3173, s: 710e-3, molMass: 28.085, hFus: 50.2, hVap: 359);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Silver", density: 10.49e3, thermalConductivity: 430e-3,
                              meltPoint: 1234, boilPoint: 2435, s: 235e-3, molMass: 107.86, hFus: 11.3, hVap: 255);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Gold", density: 19.3e3, thermalConductivity: 320e-3,
                              meltPoint: 1337, boilPoint: 3129, s: 129.1e-3, molMass: 197.97, hFus: 12.5, hVap: 330);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Platinum", density: 21.45e3, thermalConductivity: 71e-3,
                              meltPoint: 2041, boilPoint: 4098, s: 133e-3, molMass: 195.1, hFus: 20, hVap: 490);
            AddMaterialAtomic(typeof(MyObjectBuilder_Ingot), "Uranium", density: 19.05e3, thermalConductivity: 27e-3,
                              meltPoint: 1408, boilPoint: 4200, s: 116e-3, molMass: 238.03, hFus: 14, hVap: 420);

            {
                var scrapId = new MyDefinitionId(typeof(MyObjectBuilder_Ore), "Scrap");
                _props.Add(scrapId, IronMaterial.Clone(scrapId));
            }
        }
コード例 #2
0
        private bool AddDerivedRecipes()
        {
            var changed = false;

            foreach (var kv in MyDefinitionManager.Static.GetBlueprintDefinitions())
            {
                // Try 1:  Map inputs onto outputs
                if (kv.Prerequisites.All(x => _props.ContainsKey(x.Id)) &&
                    kv.Results.All(x => !_props.ContainsKey(x.Id)))
                {
                    float totalInputMass = kv.Prerequisites.Sum(x =>
                                                                (float)x.Amount * MyDefinitionManager.Static.GetPhysicalItemDefinition(x.Id).Mass);
                    MaterialProperties combinedProps =
                        new MaterialProperties(default(MyDefinitionId), 0, 0, 0, 0, 0, 0, 0);
                    foreach (var p in kv.Prerequisites)
                    {
                        var mass = (float)p.Amount * MyDefinitionManager.Static.GetPhysicalItemDefinition(p.Id).Mass;
                        var prop = _props[p.Id];
                        combinedProps =
                            MaterialProperties.LinearCombination(default(MyDefinitionId), combinedProps, 1, prop, mass);
                    }

                    combinedProps = combinedProps.Clone(default(MyDefinitionId), 1 / totalInputMass);

                    foreach (var r in kv.Results)
                    {
                        _props[r.Id] = combinedProps.Clone(r.Id);
                    }
                    changed = true;
                }

                // Try 2:  Outputs onto inputs
                if (kv.Results.All(x => _props.ContainsKey(x.Id)) &&
                    kv.Prerequisites.All(x => !_props.ContainsKey(x.Id)))
                {
                    float totalOutputMass = kv.Results.Sum(x =>
                                                           (float)x.Amount * MyDefinitionManager.Static.GetPhysicalItemDefinition(x.Id).Mass);
                    MaterialProperties combinedProps =
                        new MaterialProperties(default(MyDefinitionId), 0, 0, 0, 0, 0, 0, 0);
                    foreach (var p in kv.Results)
                    {
                        var mass = (float)p.Amount * MyDefinitionManager.Static.GetPhysicalItemDefinition(p.Id).Mass;
                        var prop = _props[p.Id];
                        combinedProps =
                            MaterialProperties.LinearCombination(default(MyDefinitionId), combinedProps, 1, prop, mass);
                    }

                    combinedProps = combinedProps.Clone(default(MyDefinitionId), 1 / totalOutputMass);

                    foreach (var r in kv.Prerequisites)
                    {
                        _props[r.Id] = combinedProps.Clone(r.Id);
                    }
                    changed = true;
                }
            }

            return(changed);
        }