WIP: Add source #3

Draft
cswimr wants to merge 25 commits from cswimr/add-src into main
4 changed files with 81 additions and 61 deletions
Showing only changes of commit a126d6415b - Show all commits

View file

@ -1,12 +1,19 @@
namespace ZenithInfo.Models
{
public class DamageStats
public class DamageStats(
double averageDps,
double shieldDps,
double hullDps,
double averageAlpha,
double shieldAlpha,
double hullAlpha
)
{
public double AverageDps { get; set; }
public double ShieldDps { get; set; }
public double HullDps { get; set; }
public double AverageAlpha { get; set; }
public double ShieldAlpha { get; set; }
public double HullAlpha { get; set; }
public double AverageDps { get; set; } = averageDps;
public double ShieldDps { get; set; } = shieldDps;
public double HullDps { get; set; } = hullDps;
public double AverageAlpha { get; set; } = averageAlpha;
public double ShieldAlpha { get; set; } = shieldAlpha;
public double HullAlpha { get; set; } = hullAlpha;
}
}

View file

@ -2,44 +2,47 @@ using System.Collections.Generic;
namespace ZenithInfo.Models
{
public enum ModuleSizes
public static class Enums
{
Small,
Medium,
Large,
Capital,
}
public enum DamageTypes
{
Shield,
Hull,
}
public enum SpinalTypes
{
Hitscan,
Multishot,
}
public enum TurretTypes
{
Artillery,
Autocannon,
BeamLaser,
Blaster,
Railgun,
PulseLaser,
}
public Dictionary<TurretTypes, DamageTypes> TurretDamageTypes { get; } =
new Dictionary<TurretTypes, DamageTypes>
public enum ModuleSizes
{
{ TurretTypes.Artillery, DamageTypes.Hull },
{ TurretTypes.Autocannon, DamageTypes.Hull },
{ TurretTypes.BeamLaser, DamageTypes.Shield },
{ TurretTypes.Blaster, DamageTypes.Shield },
{ TurretTypes.Railgun, DamageTypes.Hull },
{ TurretTypes.PulseLaser, DamageTypes.Shield },
};
Small,
Medium,
Large,
Capital,
}
public enum DamageTypes
{
Shield,
Hull,
}
public enum SpinalTypes
{
Hitscan,
Multishot,
}
public enum TurretTypes
{
Artillery,
Autocannon,
BeamLaser,
Blaster,
Railgun,
PulseLaser,
}
public static Dictionary<TurretTypes, DamageTypes> TurretDamageTypes { get; } =
new Dictionary<TurretTypes, DamageTypes>
{
{ TurretTypes.Artillery, DamageTypes.Hull },
{ TurretTypes.Autocannon, DamageTypes.Hull },
{ TurretTypes.BeamLaser, DamageTypes.Shield },
{ TurretTypes.Blaster, DamageTypes.Shield },
{ TurretTypes.Railgun, DamageTypes.Hull },
{ TurretTypes.PulseLaser, DamageTypes.Shield },
};
}
}

View file

@ -2,13 +2,13 @@ namespace ZenithInfo.Models
{
public class Spinal
{
public string Name { get; set; }
public required string Name { get; set; }
public double Damage { get; set; }
public double Reload { get; set; }
public double Range { get; set; }
public SpinalTypes Type { get; set; }
public DamageTypes DamageType { get; set; }
public ModuleSizes Size { 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; }
@ -16,7 +16,7 @@ namespace ZenithInfo.Models
public double BaseCost { get; set; }
public string? Rarity { get; set; }
public DamageStats Dps(int range: 0, int barrelCount: 1)
public DamageStats Dps(int range = 0, int barrelCount = 1)
{
if (range > this.Range)
{
@ -33,12 +33,15 @@ namespace ZenithInfo.Models
double shieldDps = 0;
double hullDps = 0;
if (this.DamageType == DamageTypes.Shield) {
if (this.DamageType == Enums.DamageTypes.Shield)
{
shieldAlpha = baseAlpha;
hullAlpha = baseAlpha * 0.5;
shieldDps = baseDps;
hullDps = baseDps * 0.5;
} else if (this.DamageType == DamageTypes.Hull) {
}
else if (this.DamageType == Enums.DamageTypes.Hull)
{
shieldAlpha = baseAlpha * 0.5;
hullAlpha = baseAlpha;
shieldDps = baseDps * 0.5;
@ -47,7 +50,14 @@ namespace ZenithInfo.Models
double averageDps = (shieldDps + hullDps) / 2;
double averageAlpha = (shieldAlpha + hullAlpha) / 2;
return new DamageStats(averageDps, shieldDps, hullDps, averageAlpha, shieldAlpha, hullAlpha);
return new DamageStats(
averageDps,
shieldDps,
hullDps,
averageAlpha,
shieldAlpha,
hullAlpha
);
}
}
}

View file

@ -4,26 +4,26 @@ namespace ZenithInfo.Models
{
public class Turret
{
public string Name { get; set; }
public required 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 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 string? Rarity { get; set; }
public DamageTypes DamageType()
public Enums.DamageTypes DamageType()
{
TurretDamageTypes[this.Type];
return Enums.TurretDamageTypes[this.Type];
}
public DamageStats Dps(int range: 0)
public DamageStats Dps(int range = 0)
{
if (range > this.Range)
{
@ -39,14 +39,14 @@ namespace ZenithInfo.Models
double hullDps = 0;
// all percentages are placeholders until david tells me what they're actually supposed to be
if (this.DamageType() == DamageTypes.Shield)
if (this.DamageType() == Enums.DamageTypes.Shield)
{
shieldAlpha = baseAlpha;
hullAlpha = baseAlpha * 0.5;
shieldDps = baseDps;
hullDps = baseDps * 0.5;
}
else if (this.DamageType() == DamageTypes.Hull)
else if (this.DamageType() == Enums.DamageTypes.Hull)
{
shieldAlpha = baseAlpha * 0.5;
hullAlpha = baseAlpha;