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 18:31:47 -08:00
// 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 ; }
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
}
}