public ComponentTemplateAbilitySD CreateSD() { ComponentTemplateAbilitySD sd = new ComponentTemplateAbilitySD(); sd.Name = Name; sd.Description = Description; sd.AbilityDataBlobType = AbilityDataBlobType; sd.GuiHint = SelectedGuiHint.GetKey(); sd.AbilityFormula = AbilityFormula; sd.MinFormula = MinFormula; sd.MaxFormula = MaxFormula; sd.StepFormula = StepFormula; if (GuidDict != null) { Dictionary <object, string> guidict = new Dictionary <object, string>(); foreach (var item in GuidDict.SelectedItems) { guidict.Add(item.Key, item.Value); } sd.GuidDictionary = guidict; } if (ItemDict != null) { Dictionary <object, string> guidict = new Dictionary <object, string>(); foreach (var item in ItemDict) { if (item.Items.SelectedIndex >= 0 && !string.IsNullOrWhiteSpace(item.Formula)) { guidict.Add(item.Items.SelectedKey, item.Formula); } } sd.GuidDictionary = guidict; } return(sd); }
/// <summary> /// Constructor for filled /// </summary> /// <param name="parent"></param> /// <param name="abilitySD"></param> /// <param name="parentList"></param> /// <param name="staticData"></param> public ComponentAbilityTemplateVM(ComponentTemplateParentVM parent, ComponentTemplateAbilitySD abilitySD, ObservableCollection <ComponentAbilityTemplateVM> parentList, StaticDataStore staticData) : this(parent, parentList, staticData) { Name = abilitySD.Name; Description = abilitySD.Description; SelectedGuiHint.SelectedIndex = (int)abilitySD.GuiHint; if (abilitySD.AbilityDataBlobType != null) { AbilityDataBlobType = abilitySD.AbilityDataBlobType; } AbilityFormula = abilitySD.AbilityFormula; MinFormula = abilitySD.MinFormula; MaxFormula = abilitySD.MaxFormula; StepFormula = abilitySD.StepFormula; //GuidDictionary = abilitySD.GuidDictionary; DictionaryVM <Guid, string> techSelected = new DictionaryVM <Guid, string>(); if (abilitySD.GuiHint == GuiHint.GuiTechSelectionList) { foreach (var item in abilitySD.GuidDictionary) { techSelected.Add(Guid.Parse(item.Key.ToString()), _staticData.Techs[Guid.Parse(item.Key.ToString())].Name); } GuidDict = new TechListVM(techSelected, _staticData); } }
public static ComponentTemplateSD MineInstallation() { ComponentTemplateSD component = new ComponentTemplateSD(); component.Name = "Mine"; component.Description = "Mines Resources"; component.ID = new Guid("F7084155-04C3-49E8-BF43-C7EF4BEFA550"); component.MassFormula = "25000"; component.VolumeFormula = "[Mass] / 2"; component.HTKFormula = "[Mass]"; component.CrewReqFormula = "50000"; component.ResearchCostFormula = "0"; component.BuildPointCostFormula = "[Mass]"; component.MineralCostFormula = new Dictionary <Guid, string> { { new Guid("2d4b2866-aa4a-4b9a-b8aa-755fe509c0b3"), "60" }, { new Guid("2ae2a928-3e14-45d5-befc-5bd6ed16ec0a"), "60" } }; component.CreditCostFormula = "120"; component.MountType = ComponentMountType.PlanetInstallation | ComponentMountType.ShipCargo; component.ComponentAbilitySDs = new List <ComponentTemplateAbilitySD>(); ComponentTemplateAbilitySD mineAbility = new ComponentTemplateAbilitySD(); mineAbility.Name = "MiningAmount"; mineAbility.Description = ""; mineAbility.GuiHint = GuiHint.None; mineAbility.GuidDictionary = new Dictionary <object, string> { { new Guid("08f15d35-ea1d-442f-a2e3-bde04c5c22e9"), "10" }, { new Guid("2dfc78ea-f8a4-4257-bc04-47279bf104ef"), "10" }, { new Guid("b12acce2-7c7d-4acf-ad41-1c08093fcad8"), "10" }, { new Guid("a03863a3-a364-45ff-8c7b-a4f7486bd710"), "10" }, { new Guid("14a83fc3-04fd-4ea3-82f4-290995c4418e"), "10" }, { new Guid("29b3797d-f9d7-4e73-a593-2b05bf4ef012"), "10" }, { new Guid("5fdfb85c-fad2-4a48-8a75-04eb65dc9741"), "10" }, { new Guid("2ae2a928-3e14-45d5-befc-5bd6ed16ec0a"), "10" }, { new Guid("c3bcb597-a2d1-4b12-9349-26586c8a921c"), "10" }, { new Guid("6a38b268-041f-4103-9d23-c13c1041cecd"), "10" }, { new Guid("2d4b2866-aa4a-4b9a-b8aa-755fe509c0b3"), "10" } }; mineAbility.AbilityDataBlobType = typeof(MineResourcesAtbDB).ToString(); mineAbility.AbilityFormula = "DataBlobArgs([GuidDict])"; component.ComponentAbilitySDs.Add(mineAbility); return(component); }
public static ComponentTemplateSD Refinery() { ComponentTemplateSD component = new ComponentTemplateSD(); component.Name = "Refinery"; component.Description = "Creates Research Points"; component.ID = new Guid("{90592586-0BD6-4885-8526-7181E08556B5}"); component.MassFormula = "500000"; component.VolumeFormula = "[Mass] / 2"; component.HTKFormula = "[Mass]"; component.CrewReqFormula = "1000000"; component.ResearchCostFormula = "0"; component.BuildPointCostFormula = "[Mass]"; component.MineralCostFormula = new Dictionary <Guid, string> { { new Guid("2dfc78ea-f8a4-4257-bc04-47279bf104ef"), "60" }, { new Guid("c3bcb597-a2d1-4b12-9349-26586c8a921c"), "60" } }; component.CreditCostFormula = "120"; component.MountType = ComponentMountType.PlanetInstallation | ComponentMountType.ShipCargo; component.ComponentAbilitySDs = new List <ComponentTemplateAbilitySD>(); ComponentTemplateAbilitySD refinePointsAbility = new ComponentTemplateAbilitySD(); refinePointsAbility.Name = "RP Amount Per EconTick"; refinePointsAbility.Description = ""; refinePointsAbility.GuiHint = GuiHint.None; refinePointsAbility.AbilityDataBlobType = typeof(ResearchPointsAtbDB).ToString(); refinePointsAbility.AbilityFormula = "100"; component.ComponentAbilitySDs.Add(refinePointsAbility); ComponentTemplateAbilitySD refineJobsAbility = new ComponentTemplateAbilitySD(); refineJobsAbility.Name = "RefineAbilitys"; refineJobsAbility.Description = ""; refineJobsAbility.GuiHint = GuiHint.None; refineJobsAbility.GuidDictionary = new Dictionary <object, string> { { new Guid("33E6AC88-0235-4917-A7FF-35C8886AAD3A"), "0" }, { new Guid("6DA93677-EE08-4853-A8A5-0F46D93FE0EB"), "0" } }; refineJobsAbility.AbilityDataBlobType = typeof(RefineResourcesAtbDB).ToString(); refineJobsAbility.AbilityFormula = "DataBlobArgs([GuidDict], Ability(0))"; component.ComponentAbilitySDs.Add(refineJobsAbility); return(component); }
public static ComponentTemplateSD GeneralCargo() { ComponentTemplateSD component = new ComponentTemplateSD(); component.Name = "General Storage"; component.Description = "Stores General Cargo"; component.ID = new Guid("{30CD60F8-1DE3-4FAA-ACBA-0933EB84C199}"); component.MassFormula = "500000"; component.VolumeFormula = "[Mass] / 100"; component.HTKFormula = "[Mass]"; component.CrewReqFormula = "1000000"; component.ResearchCostFormula = "0"; component.BuildPointCostFormula = "[Mass]"; component.MineralCostFormula = new Dictionary <Guid, string> { { new Guid("2dfc78ea-f8a4-4257-bc04-47279bf104ef"), "60" }, { new Guid("c3bcb597-a2d1-4b12-9349-26586c8a921c"), "60" } }; component.CreditCostFormula = "120"; component.MountType = ComponentMountType.PlanetInstallation | ComponentMountType.ShipCargo; component.ConstructionType = ConstructionType.Installations | ConstructionType.ShipComponents; component.ComponentAbilitySDs = new List <ComponentTemplateAbilitySD>(); ComponentTemplateAbilitySD genralCargoAbility = new ComponentTemplateAbilitySD(); genralCargoAbility.Name = "Storage Capacity"; genralCargoAbility.Description = ""; genralCargoAbility.GuiHint = GuiHint.None; genralCargoAbility.AbilityFormula = "100"; component.ComponentAbilitySDs.Add(genralCargoAbility); ComponentTemplateAbilitySD generalCargoCapacityAbility = new ComponentTemplateAbilitySD(); generalCargoCapacityAbility.Name = "Construction Points"; generalCargoCapacityAbility.Description = ""; generalCargoCapacityAbility.GuiHint = GuiHint.None; generalCargoCapacityAbility.AbilityDataBlobType = typeof(CargoStorageAtbDB).ToString(); generalCargoCapacityAbility.AbilityFormula = "DataBlobArgs(Ability(0), GuidString('16b4c4f0-7292-4f4d-8fea-22103c70b288'))"; component.ComponentAbilitySDs.Add(generalCargoCapacityAbility); return(component); }
public static ComponentTemplateSD ResearchLab() { ComponentTemplateSD component = new ComponentTemplateSD(); component.Name = "ResearchLab"; component.Description = "Creates Research Points"; component.ID = new Guid("C203B7CF-8B41-4664-8291-D20DFE1119EC"); component.MassFormula = "500000"; component.VolumeFormula = "[Mass] / 2"; component.HTKFormula = "[Mass]"; component.CrewReqFormula = "1000000"; component.ResearchCostFormula = "0"; component.BuildPointCostFormula = "[Mass]"; component.MineralCostFormula = new Dictionary <Guid, string> { { new Guid("2dfc78ea-f8a4-4257-bc04-47279bf104ef"), "60" }, { new Guid("c3bcb597-a2d1-4b12-9349-26586c8a921c"), "60" } }; component.CreditCostFormula = "120"; component.MountType = ComponentMountType.PlanetInstallation | ComponentMountType.ShipCargo; component.ComponentAbilitySDs = new List <ComponentTemplateAbilitySD>(); ComponentTemplateAbilitySD researchPointsAbility = new ComponentTemplateAbilitySD(); researchPointsAbility.Name = "RP Amount Per EconTick"; researchPointsAbility.Description = ""; researchPointsAbility.GuiHint = GuiHint.None; researchPointsAbility.AbilityDataBlobType = typeof(ResearchPointsAtbDB).ToString(); researchPointsAbility.AbilityFormula = "DataBlobArgs(20)"; component.ComponentAbilitySDs.Add(researchPointsAbility); return(component); }
public static ComponentTemplateSD Factory() { ComponentTemplateSD component = new ComponentTemplateSD(); component.Name = "Factory"; component.Description = "Constructs Facilities, Fighters Ammo and Components"; component.ID = new Guid("{07817639-E0C6-43CD-B3DC-24ED15EFB4BA}"); component.MassFormula = "500000"; component.VolumeFormula = "[Mass] / 2"; component.HTKFormula = "[Mass]"; component.CrewReqFormula = "1000000"; component.ResearchCostFormula = "0"; component.BuildPointCostFormula = "[Mass]"; component.MineralCostFormula = new Dictionary <Guid, string> { { new Guid("2dfc78ea-f8a4-4257-bc04-47279bf104ef"), "60" }, { new Guid("c3bcb597-a2d1-4b12-9349-26586c8a921c"), "60" } }; component.CreditCostFormula = "120"; component.MountType = ComponentMountType.PlanetInstallation | ComponentMountType.ShipCargo; component.ConstructionType = ConstructionType.Installations; component.ComponentAbilitySDs = new List <ComponentTemplateAbilitySD>(); ComponentTemplateAbilitySD instalationConstructionAbility = new ComponentTemplateAbilitySD(); instalationConstructionAbility.Name = "Instalation Construction Points"; instalationConstructionAbility.Description = ""; instalationConstructionAbility.GuiHint = GuiHint.GuiTextDisplay; instalationConstructionAbility.AbilityFormula = "100"; component.ComponentAbilitySDs.Add(instalationConstructionAbility); ComponentTemplateAbilitySD shipComponentsConstructionAbility = new ComponentTemplateAbilitySD(); shipComponentsConstructionAbility.Name = "Component Construction Points"; shipComponentsConstructionAbility.Description = ""; shipComponentsConstructionAbility.GuiHint = GuiHint.GuiTextDisplay; shipComponentsConstructionAbility.AbilityFormula = "100"; component.ComponentAbilitySDs.Add(shipComponentsConstructionAbility); ComponentTemplateAbilitySD shipConstructionAbility = new ComponentTemplateAbilitySD(); shipConstructionAbility.Name = "Ship Construction Points"; shipConstructionAbility.Description = ""; shipConstructionAbility.GuiHint = GuiHint.GuiTextDisplay; shipConstructionAbility.AbilityFormula = "100"; component.ComponentAbilitySDs.Add(shipConstructionAbility); ComponentTemplateAbilitySD fighterConstructionAbility = new ComponentTemplateAbilitySD(); fighterConstructionAbility.Name = "Fighter Construction Points"; fighterConstructionAbility.Description = ""; fighterConstructionAbility.GuiHint = GuiHint.GuiTextDisplay; fighterConstructionAbility.AbilityFormula = "100"; component.ComponentAbilitySDs.Add(fighterConstructionAbility); ComponentTemplateAbilitySD ammoConstructionAbility = new ComponentTemplateAbilitySD(); ammoConstructionAbility.Name = "Ordnance Construction Points"; ammoConstructionAbility.Description = ""; ammoConstructionAbility.GuiHint = GuiHint.GuiTextDisplay; ammoConstructionAbility.AbilityFormula = "100"; component.ComponentAbilitySDs.Add(ammoConstructionAbility); ComponentTemplateAbilitySD atbconstructor = new ComponentTemplateAbilitySD(); atbconstructor.Name = "Construction Points"; atbconstructor.Description = ""; atbconstructor.GuiHint = GuiHint.None; atbconstructor.GuidDictionary = new Dictionary <object, string>() { { "Installations", "Ability(0)" }, { "ShipComponents", "Ability(1)" }, { "Ships", "Ability(2)" }, { "Fighters", "Ability(3)" }, { "Ordnance", "Ability(4)" } }; atbconstructor.AbilityDataBlobType = typeof(ConstructionAtbDB).ToString(); atbconstructor.AbilityFormula = "DataBlobArgs(EnumDict('Pulsar4X.ECSLib.ConstructionType'))"; component.ComponentAbilitySDs.Add(atbconstructor); return(component); }
public static ComponentTemplateSD EngineComponentSD() { ComponentTemplateSD component = new ComponentTemplateSD(); component.Name = "Engine"; component.Description = "Moves a ship"; component.ID = new Guid("E76BD999-ECD7-4511-AD41-6D0C59CA97E6"); component.MassFormula = "Ability(0)"; component.VolumeFormula = "[Mass] / 2"; component.HTKFormula = "Max(1, [Mass] / 100)"; component.CrewReqFormula = "[Mass]"; component.ResearchCostFormula = "[Mass] * 10"; component.BuildPointCostFormula = "[Mass]"; component.MineralCostFormula = new Dictionary <Guid, string> { { new Guid("2d4b2866-aa4a-4b9a-b8aa-755fe509c0b3"), "[Mass] * 8" } }; component.CreditCostFormula = "[Mass]"; component.MountType = ComponentMountType.ShipComponent | ComponentMountType.ShipCargo | ComponentMountType.Fighter; component.ComponentAbilitySDs = new List <ComponentTemplateAbilitySD>(); ComponentTemplateAbilitySD SizeFormula0 = new ComponentTemplateAbilitySD(); SizeFormula0.Name = "Size"; SizeFormula0.Description = "Size of this engine in Tons"; SizeFormula0.GuiHint = GuiHint.GuiSelectionMaxMin; SizeFormula0.AbilityFormula = "250"; SizeFormula0.MaxFormula = "2500"; SizeFormula0.MinFormula = "1"; SizeFormula0.StepFormula = "1"; component.ComponentAbilitySDs.Add(SizeFormula0); ComponentTemplateAbilitySD engineTypeAbility1 = new ComponentTemplateAbilitySD(); engineTypeAbility1.Name = "Engine Type"; engineTypeAbility1.Description = "Type of engine Tech"; engineTypeAbility1.GuiHint = GuiHint.GuiTechSelectionList; engineTypeAbility1.GuidDictionary = new Dictionary <object, string> { { new Guid("35608fe6-0d65-4a5f-b452-78a3e5e6ce2c"), "" }, { new Guid("c827d369-3f16-43ef-b112-7d5bcafb74c7"), "" }, { new Guid("db6818f3-99e9-46c1-b903-f3af978c38b2"), "" }, { new Guid("f3f10e56-9345-40cc-af42-342e7240355d"), "" } //new Guid("58d047e6-c567-4db6-8c76-bfd4a201af94"), //new Guid("bd75bf88-1dad-4022-b401-acdf05ab73f8"), //new Guid("042ce9d4-5a2c-4d8e-9ae4-be059920839c"), //new Guid("93611831-9183-484a-9920-13b39d64e272"), //new Guid("32eda0ab-c117-4224-b148-6c9d0e474296"), //new Guid("cbb1a7ce-3c26-4b5b-abd7-9a99c670d68d"), //new Guid("6e34cc46-0693-4676-b0ca-f076fb36acaf"), //new Guid("9bb4d1c4-680f-4c98-b927-337654073575"), //new Guid("c9587310-f7dd-45d0-ac4c-b6f59a1e1897") }; engineTypeAbility1.AbilityFormula = "TechData('f3f10e56-9345-40cc-af42-342e7240355d')"; component.ComponentAbilitySDs.Add(engineTypeAbility1); ComponentTemplateAbilitySD enginePowerEfficency2 = new ComponentTemplateAbilitySD(); enginePowerEfficency2.Name = "Engine Consumption vs Power"; enginePowerEfficency2.Description = "More Powerfull engines are less efficent for a given size"; enginePowerEfficency2.GuiHint = GuiHint.GuiSelectionMaxMin; enginePowerEfficency2.AbilityFormula = "1"; enginePowerEfficency2.MaxFormula = "TechData('b8ef73c7-2ef0-445e-8461-1e0508958a0e')"; enginePowerEfficency2.MinFormula = "TechData('08fa4c4b-0ddb-4b3a-9190-724d715694de')"; enginePowerEfficency2.StepFormula = "0.1"; component.ComponentAbilitySDs.Add(enginePowerEfficency2); ComponentTemplateAbilitySD enginePowerAbility3 = new ComponentTemplateAbilitySD(); enginePowerAbility3.Name = "Engine Power"; enginePowerAbility3.Description = "Move Power for ship"; enginePowerAbility3.GuiHint = GuiHint.GuiTextDisplay; enginePowerAbility3.AbilityFormula = "Ability(1) * [Mass] * Ability(2)"; component.ComponentAbilitySDs.Add(enginePowerAbility3); ComponentTemplateAbilitySD enginePowerDBArgs4 = new ComponentTemplateAbilitySD(); enginePowerDBArgs4.Name = "Engine Powerdb"; enginePowerDBArgs4.Description = "Move Power for ship"; enginePowerDBArgs4.GuiHint = GuiHint.None; enginePowerDBArgs4.AbilityDataBlobType = typeof(WarpDriveAtb).ToString(); enginePowerDBArgs4.AbilityFormula = "DataBlobArgs(Ability(3))"; component.ComponentAbilitySDs.Add(enginePowerDBArgs4); ComponentTemplateAbilitySD fuelConsumptionTechMod5 = new ComponentTemplateAbilitySD(); fuelConsumptionTechMod5.Name = "Fuel Consumption"; fuelConsumptionTechMod5.Description = "From Tech"; fuelConsumptionTechMod5.GuiHint = GuiHint.None; fuelConsumptionTechMod5.AbilityFormula = "TechData('8557acb9-c764-44e7-8ee4-db2c2cebf0bc') * Pow(Ability(2), 2.25)"; component.ComponentAbilitySDs.Add(fuelConsumptionTechMod5); ComponentTemplateAbilitySD fuelConsumptionFinalCalc6 = new ComponentTemplateAbilitySD(); fuelConsumptionFinalCalc6.Name = "Fuel Consumptioncalc"; fuelConsumptionFinalCalc6.Description = "Fuel Consumption Calc"; fuelConsumptionFinalCalc6.GuiHint = GuiHint.GuiTextDisplay; fuelConsumptionFinalCalc6.AbilityFormula = "Ability(3) - Ability(3) * [Mass] * 0.002 * Ability(5)"; component.ComponentAbilitySDs.Add(fuelConsumptionFinalCalc6); ComponentTemplateAbilitySD fuelConsumptionArgsDB7 = new ComponentTemplateAbilitySD(); fuelConsumptionArgsDB7.Name = "Fuel Consumptiondb"; fuelConsumptionArgsDB7.Description = ""; fuelConsumptionArgsDB7.GuiHint = GuiHint.None; fuelConsumptionArgsDB7.AbilityDataBlobType = typeof(ResourceConsumptionAtbDB).ToString(); fuelConsumptionArgsDB7.AbilityFormula = "DataBlobArgs(GuidString('33e6ac88-0235-4917-a7ff-35c8886aad3a'), Ability(6), 1)"; component.ComponentAbilitySDs.Add(fuelConsumptionArgsDB7); ComponentTemplateAbilitySD thermalReduction8 = new ComponentTemplateAbilitySD(); thermalReduction8.Name = "Thermal Signature Reduction"; thermalReduction8.Description = ""; thermalReduction8.GuiHint = GuiHint.GuiSelectionMaxMin; thermalReduction8.AbilityFormula = "0"; thermalReduction8.MinFormula = "0"; thermalReduction8.MaxFormula = "0.5"; thermalReduction8.StepFormula = "0.1"; component.ComponentAbilitySDs.Add(thermalReduction8); ComponentTemplateAbilitySD sensorSigDisplay9 = new ComponentTemplateAbilitySD(); sensorSigDisplay9.Name = "Thermal Signature"; sensorSigDisplay9.Description = ""; sensorSigDisplay9.GuiHint = GuiHint.GuiTextDisplay; sensorSigDisplay9.AbilityFormula = "Ability(3) * Ability(8)"; component.ComponentAbilitySDs.Add(sensorSigDisplay9); ComponentTemplateAbilitySD sensorSigDBArgs10 = new ComponentTemplateAbilitySD(); sensorSigDBArgs10.Name = "Sensor Signaturedb"; sensorSigDBArgs10.Description = ""; sensorSigDBArgs10.GuiHint = GuiHint.None; sensorSigDBArgs10.AbilityDataBlobType = typeof(SensorSignatureAtbDB).ToString(); sensorSigDBArgs10.AbilityFormula = "DataBlobArgs(Ability(9),0)"; component.ComponentAbilitySDs.Add(sensorSigDBArgs10); return(component); }