using System.Collections.Generic; namespace ZenithInfo.Models { public class Turret { public required string Name { get; set; } public double Damage { get; set; } public double Reload { get; set; } public double Range { get; set; } public double OptimalRange { get; set; } public double FalloffRange { get; set; } public double Accuracy { get; set; } public Enums.ModuleSizes Size { get; set; } public Enums.TurretTypes Type { get; set; } public int Icon { get; set; } public double BeamSize { get; set; } public double BaseCost { get; set; } public string? Rarity { get; set; } public Enums.DamageTypes DamageType() { return Enums.TurretDamageTypes[this.Type]; } public DamageStats Dps(int range = 0) { if (range > this.Range) { return new DamageStats(0, 0, 0, 0, 0, 0); } double baseAlpha = this.Damage; double shieldAlpha = 0; double hullAlpha = 0; double baseDps = baseAlpha / (this.Reload != 0 ? this.Reload : 1); // prevent divide by zero double shieldDps = 0; double hullDps = 0; if (this.DamageType() == Enums.DamageTypes.Shield) { shieldAlpha = baseAlpha; hullAlpha = baseAlpha * 0.5; shieldDps = baseDps; hullDps = baseDps * 0.5; } else if (this.DamageType() == Enums.DamageTypes.Hull) { shieldAlpha = baseAlpha * 0.5; hullAlpha = baseAlpha; shieldDps = baseDps * 0.5; hullDps = baseDps; } double averageDps = (shieldDps + hullDps) / 2; double averageAlpha = (shieldAlpha + hullAlpha) / 2; return new DamageStats( averageDps, shieldDps, hullDps, averageAlpha, shieldAlpha, hullAlpha ); } } }