ZenithInfo/Models/Turret.cs

72 lines
2.3 KiB
C#

using System.Collections.Generic;
namespace ZenithInfo.Models
{
public class Turret
{
// required by EF Core. see https://learn.microsoft.com/en-us/aspnet/core/blazor/tutorials/movie-database-app/part-2?view=aspnetcore-9.0&pivots=vs#add-a-data-model
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public double Damage { get; set; }
public double Reload { get; set; }
public double Range { get; set; }
public double OptimalRange { get; set; }
public double AccuracyFalloffRange { 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 Enums.Rarities Rarity { get; set; }
public Enums.DamageTypes DamageType()
{
return Enums.TurretDamageTypes[Type];
}
public DamageStats Dps(int range = 0)
{
if (range > Range)
{
return new DamageStats(0, 0, 0, 0, 0, 0);
}
double baseAlpha = Damage;
double shieldAlpha = 0;
double hullAlpha = 0;
double baseDps = baseAlpha / (Reload != 0 ? Reload : 1); // prevent divide by zero
double shieldDps = 0;
double hullDps = 0;
if (DamageType() == Enums.DamageTypes.Shield)
{
shieldAlpha = baseAlpha;
hullAlpha = baseAlpha * 0.5;
shieldDps = baseDps;
hullDps = baseDps * 0.5;
}
else if (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
);
}
}
}