ZenithInfo/Models/Spinal.cs
cswimr a126d6415b
fix: fix a bunch of syntax / logic errors
my intellisense and linter wasn't working until the previous commit, where I added the solution file. now it does, and holy shit was everything broken 😭
2024-12-31 12:20:52 -05:00

63 lines
2.1 KiB
C#

namespace ZenithInfo.Models
{
public class Spinal
{
public required string Name { get; set; }
public double Damage { get; set; }
public double Reload { get; set; }
public double Range { get; set; }
public Enums.SpinalTypes Type { get; set; }
public Enums.DamageTypes DamageType { get; set; }
public Enums.ModuleSizes Size { get; set; }
public double Velocity { get; set; }
public double Interval { get; set; }
public int Icon { get; set; }
public double ParticleSize { get; set; }
public double BaseCost { get; set; }
public string? Rarity { get; set; }
public DamageStats Dps(int range = 0, int barrelCount = 1)
{
if (range > this.Range)
{
return new DamageStats(0, 0, 0, 0, 0, 0);
}
double baseAlpha = this.Damage * barrelCount;
double shieldAlpha = 0;
double hullAlpha = 0;
double intervalTime = this.Interval * (barrelCount - 1);
double totalDelay = this.Reload + intervalTime;
double baseDps = baseAlpha / (totalDelay != 0 ? totalDelay : 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
);
}
}
}