static DamageAnalysis() { using (var service = new FittingService()) { ALL_V_CHARACTER = service.GetAllVCharacter(); _hobgoblin = service.CreateItem("Hobgoblin II"); _hammerhead = service.CreateItem("Hammerhead II"); _ogre = service.CreateItem("Ogre II"); } }
public void Init() { _service = new FittingService(); }
public static DamageOutput.WeaponEntry GetDamageEntry(Context context, Item item) { WeaponSystem weaponSystem; if (!TryGetWeaponSystem(item, out weaponSystem)) { throw new ArgumentException("invalid item group for weapon analysis: " + item.GroupId); } List<DamageOutput.WeaponEntry.AmmoEntry> ammoEntries = new List<DamageOutput.WeaponEntry.AmmoEntry>(); if (!IsNeedingAmmo(weaponSystem)) { ammoEntries.Add( new DamageOutput.WeaponEntry.AmmoEntry { Ammunition = "(none)", Damage = GetDamage(item, item), OptimalInKm = item.GetAttributeById(OPTIMAL_ID) .Value / 1000.0, FalloffInKm = item.GetAttributeById(FALLOFF_ID) .Value / 1000.0, TrackingInRadPerSecond = item.GetAttributeById(TRACKING_ID) .Value }); } else { //TODO create service/DI using (var service = new FittingService()) { var ammo = new Ammo(service); var factionAmmo = ammo.GetFactionAmmoForWeapon(item); if (factionAmmo != null) { var factionEntry = GetAmmoEntry(context, item, factionAmmo); ammoEntries.Add(factionEntry); } var t2Range = ammo.GetLongRangeT2AmmoForWeapon(item); if (t2Range != null) { var t2RangeEntry = GetAmmoEntry(context, item, t2Range); ammoEntries.Add(t2RangeEntry); } var t2Dps = ammo.GetHighDamageT2AmmoForWeapon(item); if (t2Dps != null) { var t2DpsEntry = GetAmmoEntry(context, item, t2Dps); ammoEntries.Add(t2DpsEntry); } } } return new DamageOutput.WeaponEntry { AmmoEntries = ammoEntries.ToArray(), WeaponSystem = weaponSystem, WeaponType = item.TypeName }; }
public Ammo(FittingService service) { IDictionary<ChargeSize, Item> factionHybridAmmo = new Dictionary<ChargeSize, Item> { { ChargeSize.Small, service.CreateItem("Federation Navy Antimatter Charge S") }, { ChargeSize.Medium, service.CreateItem("Federation Navy Antimatter Charge M") }, { ChargeSize.Large, service.CreateItem("Federation Navy Antimatter Charge L") }, {ChargeSize.XLarge, service.CreateItem("Antimatter Charge XL")} }; IDictionary<ChargeSize, Item> factionEnergyAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Imperial Navy Multifrequency S")}, {ChargeSize.Medium, service.CreateItem("Imperial Navy Multifrequency M")}, {ChargeSize.Large, service.CreateItem("Imperial Navy Multifrequency L")}, {ChargeSize.XLarge, service.CreateItem("Multifrequency XL")} }; IDictionary<ChargeSize, Item> factionProjectileAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Republic Fleet EMP S")}, {ChargeSize.Medium, service.CreateItem("Republic Fleet EMP M")}, {ChargeSize.Large, service.CreateItem("Republic Fleet EMP L")}, {ChargeSize.XLarge, service.CreateItem("EMP XL")} }; _factionAmmoTypesByWeaponType = new Dictionary<int, IDictionary<ChargeSize, Item>> { {HYBRID_WEAPON_GROUP_ID, factionHybridAmmo}, {ENERGY_WEAPON_GROUP_ID, factionEnergyAmmo}, {PROJECTILE_WEAPON_GROUP_ID, factionProjectileAmmo}, { LIGHT_MISSILE_WEAPON_GROUP_ID, new Dictionary<ChargeSize, Item> { { ChargeSize.NoSize, service.CreateItem( "Caldari Navy Inferno Light Missile") } } }, { HEAVY_MISSILE_WEAPON_GROUP_ID, new Dictionary<ChargeSize, Item> { { ChargeSize.NoSize, service.CreateItem( "Caldari Navy Inferno Heavy Missile") } } }, { HEAVY_ASSAULT_MISSILE_WEAPON_GROUP_ID, new Dictionary<ChargeSize, Item> { { ChargeSize.NoSize, service.CreateItem( "Caldari Navy Inferno Heavy Assault Missile") } } }, { ROCKET_WEAPON_GROUP_ID, new Dictionary<ChargeSize, Item> { { ChargeSize.NoSize, service.CreateItem("Caldari Navy Inferno Rocket") } } }, { RAPID_LIGHT_MISSILE_WEAPON_GROUP_ID, new Dictionary<ChargeSize, Item> { { ChargeSize.NoSize, service.CreateItem( "Caldari Navy Inferno Light Missile") } } }, { RAPID_HEAVY_MISSILE_WEAPON_GROUP_ID, new Dictionary<ChargeSize, Item> { { ChargeSize.NoSize, service.CreateItem( "Caldari Navy Inferno Heavy Missile") } } }, }; //TODO torpedo + bomb IDictionary<ChargeSize, Item> t2BlasterHighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Void S")}, {ChargeSize.Medium, service.CreateItem("Void M")}, {ChargeSize.Large, service.CreateItem("Void L")} }; IDictionary<ChargeSize, Item> t2BlasterRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Null S")}, {ChargeSize.Medium, service.CreateItem("Null M")}, {ChargeSize.Large, service.CreateItem("Null L")} }; IDictionary<ChargeSize, Item> t2RailgunHighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Spike S")}, {ChargeSize.Medium, service.CreateItem("Spike M")}, {ChargeSize.Large, service.CreateItem("Spike L")} }; IDictionary<ChargeSize, Item> t2RailgunRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Javelin S")}, {ChargeSize.Medium, service.CreateItem("Javelin M")}, {ChargeSize.Large, service.CreateItem("Javelin L")} }; IDictionary<ChargeSize, Item> t2PulseHighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Conflagration S")}, {ChargeSize.Medium, service.CreateItem("Conflagration M")}, {ChargeSize.Large, service.CreateItem("Conflagration L")} }; IDictionary<ChargeSize, Item> t2PulseRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Scorch S")}, {ChargeSize.Medium, service.CreateItem("Scorch M")}, {ChargeSize.Large, service.CreateItem("Scorch L")} }; IDictionary<ChargeSize, Item> t2BeamHighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Gleam S")}, {ChargeSize.Medium, service.CreateItem("Gleam M")}, {ChargeSize.Large, service.CreateItem("Gleam L")} }; IDictionary<ChargeSize, Item> t2BeamRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Aurora S")}, {ChargeSize.Medium, service.CreateItem("Aurora M")}, {ChargeSize.Large, service.CreateItem("Aurora L")} }; IDictionary<ChargeSize, Item> t2ArtilleryHighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Quake S")}, {ChargeSize.Medium, service.CreateItem("Quake M")}, {ChargeSize.Large, service.CreateItem("Quake L")} }; IDictionary<ChargeSize, Item> t2ArtilleryRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Tremor S")}, {ChargeSize.Medium, service.CreateItem("Tremor M")}, {ChargeSize.Large, service.CreateItem("Tremor L")} }; IDictionary<ChargeSize, Item> t2AutocannonHighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Hail S")}, {ChargeSize.Medium, service.CreateItem("Hail M")}, {ChargeSize.Large, service.CreateItem("Hail L")} }; IDictionary<ChargeSize, Item> t2AutocannonRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.Small, service.CreateItem("Barrage S")}, {ChargeSize.Medium, service.CreateItem("Barrage M")}, {ChargeSize.Large, service.CreateItem("Barrage L")} }; _t2Ammo = new Dictionary<int, T2> { { 372, new T2 { HighDamageAmmo = t2AutocannonHighDamageAmmo, LongRangeAmmo = t2AutocannonRangeAmmo } }, { 373, new T2 { HighDamageAmmo = t2RailgunHighDamageAmmo, LongRangeAmmo = t2RailgunRangeAmmo } }, { 374, new T2 { HighDamageAmmo = t2BeamHighDamageAmmo, LongRangeAmmo = t2BeamRangeAmmo } }, { 375, new T2 { HighDamageAmmo = t2PulseHighDamageAmmo, LongRangeAmmo = t2PulseRangeAmmo } }, { 376, new T2 { HighDamageAmmo = t2ArtilleryHighDamageAmmo, LongRangeAmmo = t2ArtilleryRangeAmmo } }, { 377, new T2 { HighDamageAmmo = t2BlasterHighDamageAmmo, LongRangeAmmo = t2BlasterRangeAmmo } }, { 653, new T2 { HighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Fury Light Missile")}, }, LongRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Precision Light Missile")}, } } }, { 648, new T2 { HighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Rage Rocket")}, }, LongRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Javelin Rocket")}, } } }, { 655, new T2 { HighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Fury Heavy Missile")}, }, LongRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Precision Heavy Missile")}, } } }, { 654, new T2 { HighDamageAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Rage Heavy Assault Missile")}, }, LongRangeAmmo = new Dictionary<ChargeSize, Item> { {ChargeSize.NoSize, service.CreateItem("Inferno Javelin Heavy Assault Missile")}, } } } }; }