2024-12-31 10:33:24 -05:00
|
|
|
using System.Collections.Generic;
|
|
|
|
|
2024-12-31 02:26:53 -05:00
|
|
|
namespace ZenithInfo.Models
|
|
|
|
{
|
|
|
|
public class Turret
|
|
|
|
{
|
2024-12-31 12:20:52 -05:00
|
|
|
public required string Name { get; set; }
|
2024-12-31 13:46:29 -05:00
|
|
|
public required string Description { get; set; }
|
2024-12-31 02:26:53 -05:00
|
|
|
public double Damage { get; set; }
|
|
|
|
public double Reload { get; set; }
|
|
|
|
public double Range { get; set; }
|
|
|
|
public double OptimalRange { get; set; }
|
2024-12-31 12:32:59 -05:00
|
|
|
public double AccuracyFalloffRange { get; set; }
|
2024-12-31 02:26:53 -05:00
|
|
|
public double Accuracy { get; set; }
|
2024-12-31 12:20:52 -05:00
|
|
|
public Enums.ModuleSizes Size { get; set; }
|
|
|
|
public Enums.TurretTypes Type { get; set; }
|
2024-12-31 02:26:53 -05:00
|
|
|
public int Icon { get; set; }
|
|
|
|
public double BeamSize { get; set; }
|
|
|
|
public double BaseCost { get; set; }
|
2024-12-31 12:40:12 -05:00
|
|
|
public Enums.Rarities Rarity { get; set; }
|
2024-12-31 10:33:24 -05:00
|
|
|
|
2024-12-31 12:20:52 -05:00
|
|
|
public Enums.DamageTypes DamageType()
|
2024-12-31 10:33:24 -05:00
|
|
|
{
|
2024-12-31 12:40:59 -05:00
|
|
|
return Enums.TurretDamageTypes[Type];
|
2024-12-31 10:33:24 -05:00
|
|
|
}
|
|
|
|
|
2024-12-31 12:20:52 -05:00
|
|
|
public DamageStats Dps(int range = 0)
|
2024-12-31 10:33:24 -05:00
|
|
|
{
|
2024-12-31 12:40:59 -05:00
|
|
|
if (range > Range)
|
2024-12-31 10:33:24 -05:00
|
|
|
{
|
|
|
|
return new DamageStats(0, 0, 0, 0, 0, 0);
|
|
|
|
}
|
|
|
|
|
2024-12-31 12:40:59 -05:00
|
|
|
double baseAlpha = Damage;
|
2024-12-31 10:33:24 -05:00
|
|
|
double shieldAlpha = 0;
|
|
|
|
double hullAlpha = 0;
|
|
|
|
|
2024-12-31 12:40:59 -05:00
|
|
|
double baseDps = baseAlpha / (Reload != 0 ? Reload : 1); // prevent divide by zero
|
2024-12-31 10:33:24 -05:00
|
|
|
double shieldDps = 0;
|
|
|
|
double hullDps = 0;
|
|
|
|
|
2024-12-31 12:40:59 -05:00
|
|
|
if (DamageType() == Enums.DamageTypes.Shield)
|
2024-12-31 10:33:24 -05:00
|
|
|
{
|
|
|
|
shieldAlpha = baseAlpha;
|
|
|
|
hullAlpha = baseAlpha * 0.5;
|
|
|
|
shieldDps = baseDps;
|
|
|
|
hullDps = baseDps * 0.5;
|
|
|
|
}
|
2024-12-31 12:40:59 -05:00
|
|
|
else if (DamageType() == Enums.DamageTypes.Hull)
|
2024-12-31 10:33:24 -05:00
|
|
|
{
|
|
|
|
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
|
|
|
|
);
|
|
|
|
}
|
2024-12-31 02:26:53 -05:00
|
|
|
}
|
|
|
|
}
|