using System.Collections.Generic; namespace ZenithInfo.Models { public class Turret { public 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 ModuleSizes Size { get; set; } public 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 DamageTypes DamageType() { 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; // all percentages are placeholders until david tells me what they're actually supposed to be if (this.DamageType() == DamageTypes.Shield) { shieldAlpha = baseAlpha; hullAlpha = baseAlpha * 0.5; shieldDps = baseDps; hullDps = baseDps * 0.5; } else if (this.DamageType() == 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 ); } } }