public static AmmoDescription CreateFrom(MyAmmoDefinition ammo) { if (string.IsNullOrWhiteSpace(ammo.DescriptionString)) { return(null); } AmmoDescription desc = new AmmoDescription(); try { XML_Amendments <AmmoDescription> ammender = new XML_Amendments <AmmoDescription>(desc); ammender.primarySeparator = new char[] { ';' }; ammender.AmendAll(ammo.DescriptionString, true); desc = ammender.Deserialize(); desc.CosAcquisitionAngle = (float)Math.Cos(desc.AcquisitionAngle); return(desc); } catch (Exception ex) { Logger.DebugNotify("Failed to load description for an ammo", 10000, Logger.severity.ERROR); Logable Log = new Logable(ammo.Id.SubtypeName); Log.AlwaysLog("Failed to load description for an ammo", Logger.severity.ERROR); Log.AlwaysLog("Exception: " + ex, Logger.severity.ERROR); return(null); } }
private Ammo(MyAmmoMagazineDefinition ammoMagDef) { MyAmmoDefinition ammoDef = MyDefinitionManager.Static.GetAmmoDefinition(ammoMagDef.AmmoDefinitionId); this.AmmoDefinition = ammoDef; this.MissileDefinition = AmmoDefinition as MyMissileAmmoDefinition; this.MagazineDefinition = ammoMagDef; if (MissileDefinition != null && !MissileDefinition.MissileSkipAcceleration) { this.TimeToMaxSpeed = (MissileDefinition.DesiredSpeed - MissileDefinition.MissileInitialSpeed) / MissileDefinition.MissileAcceleration; this.DistanceToMaxSpeed = (MissileDefinition.DesiredSpeed + MissileDefinition.MissileInitialSpeed) / 2 * TimeToMaxSpeed; } else { this.TimeToMaxSpeed = 0; this.DistanceToMaxSpeed = 0; } Description = AmmoDescription.CreateFrom(AmmoDefinition); if (Description == null) { return; } if (Description.ClusterCooldown > 0f) { Log.DebugLog("Is a cluster missile"); IsCluster = true; } if (!string.IsNullOrWhiteSpace(Description.Radar)) { try { RadarDefinition = new RadarEquipment.Definition(); XML_Amendments <RadarEquipment.Definition> ammender = new XML_Amendments <RadarEquipment.Definition>(RadarDefinition); ammender.primarySeparator = new char[] { ',' }; ammender.AmendAll(Description.Radar, true); RadarDefinition = ammender.Deserialize(); Log.DebugLog("Loaded description for radar", Logger.severity.DEBUG); } catch (Exception ex) { Logger.DebugNotify("Failed to load radar description for an ammo", 10000, Logger.severity.ERROR); Log.AlwaysLog("Failed to load radar description for an ammo", Logger.severity.ERROR); Log.AlwaysLog("Exception: " + ex, Logger.severity.ERROR); RadarDefinition = null; } } }
private Ammo(MyAmmoMagazineDefinition ammoMagDef) { MyAmmoDefinition ammoDef = MyDefinitionManager.Static.GetAmmoDefinition(ammoMagDef.AmmoDefinitionId); this.myLogger = new Logger("Ammo", () => ammoMagDef.Id.ToString(), () => ammoDef.Id.ToString()); this.AmmoDefinition = ammoDef; this.MissileDefinition = AmmoDefinition as MyMissileAmmoDefinition; this.MagazineDefinition = ammoMagDef; if (MissileDefinition != null && !MissileDefinition.MissileSkipAcceleration) { this.TimeToMaxSpeed = (MissileDefinition.DesiredSpeed - MissileDefinition.MissileInitialSpeed) / MissileDefinition.MissileAcceleration; this.DistanceToMaxSpeed = (MissileDefinition.DesiredSpeed + MissileDefinition.MissileInitialSpeed) / 2 * TimeToMaxSpeed; } else { this.TimeToMaxSpeed = 0; this.DistanceToMaxSpeed = 0; } Description = AmmoDescription.CreateFrom(AmmoDefinition); if (Description == null) return; if (Description.ClusterCooldown > 0f) { myLogger.debugLog("Is a cluster missile"); IsCluster = true; } if (!string.IsNullOrWhiteSpace(Description.Radar)) { try { RadarDefinition = new RadarEquipment.Definition(); XML_Amendments<RadarEquipment.Definition> ammender = new XML_Amendments<RadarEquipment.Definition>(RadarDefinition); ammender.primarySeparator = new char[] { ',' }; ammender.AmendAll(Description.Radar, true); RadarDefinition = ammender.Deserialize(); myLogger.debugLog("Loaded description for radar", Logger.severity.DEBUG); } catch (Exception ex) { Logger.debugNotify("Failed to load radar description for an ammo", 10000, Logger.severity.ERROR); myLogger.alwaysLog("Failed to load radar description for an ammo", Logger.severity.ERROR); myLogger.alwaysLog("Exception: " + ex, Logger.severity.ERROR); RadarDefinition = null; } } }
public static AmmoDescription CreateFrom(MyAmmoDefinition ammo) { if (string.IsNullOrWhiteSpace(ammo.DescriptionString)) return null; AmmoDescription desc = new AmmoDescription(ammo.Id.SubtypeName); try { XML_Amendments<AmmoDescription> ammender = new XML_Amendments<AmmoDescription>(desc); ammender.AmendAll(ammo.DescriptionString, true); return ammender.Deserialize(); } catch (Exception ex) { Logger.debugNotify("Failed to load description for an ammo", 10000, Logger.severity.ERROR); desc.myLogger.alwaysLog("Failed to load description for an ammo", "CreateFrom()", Logger.severity.ERROR); desc.myLogger.alwaysLog("Exception: " + ex, "CreateFrom()", Logger.severity.ERROR); return null; } }
private Ammo(MyAmmoMagazineDefinition ammoMagDef) { MyAmmoDefinition ammoDef = MyDefinitionManager.Static.GetAmmoDefinition(ammoMagDef.AmmoDefinitionId); this.myLogger = new Logger("Ammo", () => ammoMagDef.Id.ToString(), () => ammoDef.Id.ToString()); this.AmmoDefinition = ammoDef; this.MissileDefinition = AmmoDefinition as MyMissileAmmoDefinition; this.MagazineDefinition = ammoMagDef; if (MissileDefinition != null && !MissileDefinition.MissileSkipAcceleration) { this.TimeToMaxSpeed = (MissileDefinition.DesiredSpeed - MissileDefinition.MissileInitialSpeed) / MissileDefinition.MissileAcceleration; this.DistanceToMaxSpeed = (MissileDefinition.DesiredSpeed + MissileDefinition.MissileInitialSpeed) / 2 * TimeToMaxSpeed; } else { this.TimeToMaxSpeed = 0; this.DistanceToMaxSpeed = 0; } Description = AmmoDescription.CreateFrom(AmmoDefinition); if (Description == null) return; #region Check Cluster //if (Description.ClusterSplitRange < 1 || Description.ClusterCooldown < 1) // if any value is bad //{ // if (Description.ClusterSplitRange >= 1 || Description.ClusterCooldown >= 1) // if any value is good // { // Logger.debugNotify("Cluster description is incomplete", 10000, Logger.severity.ERROR); // //myLogger.alwaysLog("Cluster description is incomplete: " + Description.ClusterSplitRange + ", " + Description.ClusterSpread + ", " + Description.ClusterCooldown, "VerifyCluster()", Logger.severity.ERROR); // } // return; //} if (Description.ClusterCooldown < 1) return; // BuildOffsets // ClusterOffset_Back can be +/- //Description.ClusterOffset_Radial = MathHelper.Max(Description.ClusterOffset_Radial, 0f); //Description.ClusterFormDistance = MathHelper.Max(Description.ClusterFormDistance, 1f); //ClusterOffsets = new Vector3[ammoMagDef.Capacity - 1]; //float radius = ClusterOffsets.Length / MathHelper.TwoPi * Description.ClusterOffset_Radial; //float angle = MathHelper.TwoPi / ClusterOffsets.Length; //for (int i = 0; i < ClusterOffsets.Length; i++) //{ // float partAngle = angle * i; // float right = (float)Math.Sin(partAngle) * radius; // float up = (float)Math.Cos(partAngle) * radius; // ClusterOffsets[i] = new Vector3(right, up, Description.ClusterOffset_Back); //} myLogger.debugLog("Is a cluster missile", "VerifyCluster()"); IsCluster = true; #endregion }