/// <summary> /// Constructor for the JumpEngine Definition /// </summary> /// <param name="title">Name of the engine.</param> /// <param name="EfficiencyTech">How many HS of hull can 1 HS of JE support?</param> /// <param name="SquadSizeTech">How many craft cane use this JE in a squadron transit</param> /// <param name="RadiusTech">How far can this JE support jumping away from the Jump Point</param> /// <param name="JType">Is this a military or commercial engine?</param> /// <param name="size">Size in HS of this jump engine. Max of 1000, will run into issues with htk above that in any event.</param> public JumpEngineDefTN(string title, int EfficiencyTech, int SquadSizeTech, int RadiusTech, JDType JType, int HS) { /// <summary> /// Everything needs a unique Id, or probably will if it doesn't already. Id = Guid.NewGuid(); componentType = ComponentTypeTN.JumpEngine; Name = title; JumpDriveType = JType; /// <summary> /// Full efficiency: 1HS for Eff HS /// Full Squadron size /// Full Jump Radius /// </summary> if (JumpDriveType == JDType.Military) { /// <summary> /// Validation for all these is handled in the UI. There is only one place where jump engines should be created by the user. same for all components. /// </summary> JumpEngineEfficiency = Constants.JumpEngineTN.JumpEfficiency[EfficiencyTech]; SquadronSize = Constants.JumpEngineTN.SquadSize[SquadSizeTech]; JumpRadius = Constants.JumpEngineTN.JumpRadius[RadiusTech] * 10000; size = HS * Constants.JumpEngineTN.SquadSizeModifier[SquadSizeTech] * Constants.JumpEngineTN.JumpRadiusModifier[RadiusTech]; MaxJumpRating = (int)(size * JumpEngineEfficiency) * (int)Constants.ShipTN.TonsPerHS; isMilitary = true; } /// <summary> /// 3/4ths Efficiency: (1HS * 10) for 3/4ths Eff HS 100 = 380 110 = 410 /// Squadron size - 1 /// Half Jump Radius(5000 instead of 10000) /// </summary> else if (JumpDriveType == JDType.Commercial) { JumpEngineEfficiency = Constants.JumpEngineTN.JumpEfficiency[EfficiencyTech] * 0.75f; SquadronSize = Constants.JumpEngineTN.SquadSize[SquadSizeTech] - 1; JumpRadius = Constants.JumpEngineTN.JumpRadius[RadiusTech] * 5000; size = HS * 10 * Constants.JumpEngineTN.SquadSizeModifier[SquadSizeTech] * Constants.JumpEngineTN.JumpRadiusModifier[RadiusTech]; MaxJumpRating = (int)Math.Round(JumpEngineEfficiency * HS) * 10 * (int)Constants.ShipTN.TonsPerHS; isMilitary = false; } /// <summary> /// commercial jump drives shouldn't have a ridiculous HTK, especially because htk is a byte in length itself. /// </summary> htk = (byte)Math.Round(((float)HS / 5.0f)); crew = (HS * 2); cost = (decimal)HS * 2.5m * (decimal)Constants.JumpEngineTN.SquadSizeModifier[SquadSizeTech] * (decimal)Constants.JumpEngineTN.JumpRadiusModifier[RadiusTech]; if (cost < 10) { cost = 10; } //20% Duranium 80% Sorium minerialsCost = new decimal[Constants.Minerals.NO_OF_MINERIALS]; for (int mineralIterator = 0; mineralIterator < (int)Constants.Minerals.MinerialNames.MinerialCount; mineralIterator++) { minerialsCost[mineralIterator] = 0; } minerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = cost * 0.2m; minerialsCost[(int)Constants.Minerals.MinerialNames.Sorium] = cost * 0.8m; isObsolete = false; isSalvaged = false; isElectronic = false; isDivisible = false; }
/// <summary> /// Constructor for the JumpEngine Definition /// </summary> /// <param name="title">Name of the engine.</param> /// <param name="EfficiencyTech">How many HS of hull can 1 HS of JE support?</param> /// <param name="SquadSizeTech">How many craft cane use this JE in a squadron transit</param> /// <param name="RadiusTech">How far can this JE support jumping away from the Jump Point</param> /// <param name="JType">Is this a military or commercial engine?</param> /// <param name="size">Size in HS of this jump engine. Max of 1000, will run into issues with htk above that in any event.</param> public JumpEngineDefTN(string title, int EfficiencyTech, int SquadSizeTech, int RadiusTech, int MinTech, JDType JType, int HS) { /// <summary> /// Everything needs a unique Id, or probably will if it doesn't already. Id = Guid.NewGuid(); componentType = ComponentTypeTN.JumpEngine; Name = title; JumpDriveType = JType; /// <summary> /// Full efficiency: 1HS for Eff HS /// Full Squadron size /// Full Jump Radius /// </summary> if (JumpDriveType == JDType.Military) { /// <summary> /// Validation for all these is handled in the UI. There is only one place where jump engines should be created by the user. same for all components. /// </summary> JumpEngineEfficiency = Constants.JumpEngineTN.JumpEfficiency[EfficiencyTech]; SquadronSize = Constants.JumpEngineTN.SquadSize[SquadSizeTech]; JumpRadius = Constants.JumpEngineTN.JumpRadius[RadiusTech] * 10000; size = (float)Math.Round(HS * Constants.JumpEngineTN.SquadSizeModifier[SquadSizeTech] * Constants.JumpEngineTN.JumpRadiusModifier[RadiusTech]); MaxJumpRating = (int)(HS * JumpEngineEfficiency) * (int)Constants.ShipTN.TonsPerHS; isMilitary = true; } /// <summary> /// 3/4ths Efficiency: (1HS * 10) for 3/4ths Eff HS 100 = 380 110 = 410 /// Squadron size - 1 /// Half Jump Radius(5000 instead of 10000) /// </summary> else if (JumpDriveType == JDType.Commercial) { JumpEngineEfficiency = Constants.JumpEngineTN.JumpEfficiency[EfficiencyTech] * 0.75f; SquadronSize = Constants.JumpEngineTN.SquadSize[SquadSizeTech] - 1; JumpRadius = Constants.JumpEngineTN.JumpRadius[RadiusTech] * 5000; size = (float)Math.Round(HS * 10 * Constants.JumpEngineTN.SquadSizeModifier[SquadSizeTech] * Constants.JumpEngineTN.JumpRadiusModifier[RadiusTech]); MaxJumpRating = (int)Math.Round(JumpEngineEfficiency * HS) * 10 * (int)Constants.ShipTN.TonsPerHS; isMilitary = false; } /// <summary> /// very small jump drives cannot take other vessels with them. /// </summary> if (HS < Constants.JumpEngineTN.MinimumSize[MinTech]) { SquadronSize = 1; } /// <summary> /// commercial jump drives shouldn't have a ridiculous HTK, especially because htk is a byte in length itself. /// </summary> htk = (byte)Math.Round( ((float)HS / 5.0f) ); crew = (HS * 2); cost = (decimal)HS * 2.5m * (decimal)Constants.JumpEngineTN.SquadSizeModifier[SquadSizeTech] * (decimal)Constants.JumpEngineTN.JumpRadiusModifier[RadiusTech]; if (cost < 10) { cost = 10; } //20% Duranium 80% Sorium minerialsCost = new decimal[Constants.Minerals.NO_OF_MINERIALS]; for (int mineralIterator = 0; mineralIterator < (int)Constants.Minerals.MinerialNames.MinerialCount; mineralIterator++) { minerialsCost[mineralIterator] = 0; } minerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = cost * 0.2m; minerialsCost[(int)Constants.Minerals.MinerialNames.Sorium] = cost * 0.8m; isObsolete = false; isSalvaged = false; isElectronic = false; isDivisible = false; }