/// <summary> /// 装備と搭載数を指定して、スロット単位の制空能力を計算します。 /// </summary> public static int GetAirSuperiorityPotential(this SlotItem slotItem, int onslot, AirSuperiorityCalculationOptions options = AirSuperiorityCalculationOptions.Default) { var calculator = slotItem.GetCalculator(); return options.HasFlag(calculator.Options()) && onslot >= 1 ? calculator.GetAirSuperiority(slotItem, onslot, options) : 0; }
public int GetAirSuperiority(SlotItem slotItem, int onslot, AirSuperiorityCalculationOptions options) { // 装備の対空値とスロットの搭載数による制空値 var airSuperiority = this.GetAirSuperiority(slotItem, onslot); // 装備の熟練度による制空値ボーナス airSuperiority += this.GetProficiencyBonus(slotItem, options); return((int)airSuperiority); }
public int GetAirSuperiority(SlotItem slotItem, int onslot, AirSuperiorityCalculationOptions options) { // 장비 대공치와 슬롯 탑재량 수치 var airSuperiority = this.GetAirSuperiority(slotItem, onslot); // 장비 숙련도 제공 보너스 airSuperiority += this.GetProficiencyBonus(slotItem, options); return((int)airSuperiority); }
/// <summary> /// 内部熟練度値を取得します。 /// </summary> public int GetInternalValue(AirSuperiorityCalculationOptions options) { if (options.HasFlag(AirSuperiorityCalculationOptions.InternalProficiencyMinValue)) { return(this.internalMinValue); } if (options.HasFlag(AirSuperiorityCalculationOptions.InternalProficiencyMaxValue)) { return(this.internalMaxValue); } return((this.internalMaxValue + this.internalMinValue) / 2); }
private static Proficiency GetProficiency(this SlotItemInfo slotItem, AirSuperiorityCalculationOptions options) { int lv; if (options.HasFlag(AirSuperiorityCalculationOptions.ProficiencyMin)) { lv = 0; } else if (options.HasFlag(AirSuperiorityCalculationOptions.ProficiencyMax)) { lv = 7; } else { lv = 4; } return(proficiencies[Math.Max(Math.Min(lv, 7), 0)]); }
public static double GetAirSuperiorityPotential(this PresetShipModel ship, AirSuperiorityCalculationOptions option) { var slots = new PresetShipData(ship).Ship.RawData.api_maxeq; return(ship.Slots .Select((x, y) => { var calc = new PresetSlotData(x).Item?.Type.GetCalculator() ?? EmptyCalculator.Instance; if (slots[y] <= 0) { return 0; } if (!option.HasFlag(calc.Options)) { return 0; } return calc.GetAirSuperiority(x, slots[y], option); }) .Sum()); }
protected override double GetProficiencyBonus(PresetSlotModel slotItem, AirSuperiorityCalculationOptions options) { var proficiency = slotItem.GetProficiency(); return(Math.Sqrt(proficiency.GetInternalValue(options) / 10.0)); }
protected override double GetAirSuperiorityInternal(SlotItemInfo slotItem, int onslot, AirSuperiorityCalculationOptions options) { int level; if (options.HasFlag(AirSuperiorityCalculationOptions.LevelMax)) { level = 10; } else if (options.HasFlag(AirSuperiorityCalculationOptions.LevelMin)) { level = 0; } else { level = 5; } // 装備改修による対空値加算 (★ x 0.2) return((slotItem.AA + level * 0.2) * Math.Sqrt(onslot)); }
/// <summary> /// 艦娘の制空能力を計算します。 /// </summary> public static int GetAirSuperiorityPotential(this Ship ship, AirSuperiorityCalculationOptions options = AirSuperiorityCalculationOptions.Default) { return(ship.EquippedSlots .Select(x => GetAirSuperiorityPotential(x.Item, x.Current, options)) .Sum()); }
protected override double GetProficiencyBonus(SlotItem slotItem, AirSuperiorityCalculationOptions options) { return(0.0); }
protected abstract double GetProficiencyBonus(SlotItem slotItem, AirSuperiorityCalculationOptions options);
public int GetAirSuperiority(SlotItem slotItem, int onslot, AirSuperiorityCalculationOptions options) { // 装備の対空値とスロットの搭載数による制空値 var airSuperiority = this.GetAirSuperiority(slotItem, onslot); // 装備の熟練度による制空値ボーナス airSuperiority += this.GetProficiencyBonus(slotItem, options); return (int)airSuperiority; }
public static int GetAirSuperiorityPotential(this OrganizationSlotItemInfo info, AirSuperiorityCalculationOptions options) { return(info.SlotItemInfo.GetAirSuperiorityPotential(info.Slot, options)); }
protected override double GetProficiencyBonus(SlotItemInfo slotItem, AirSuperiorityCalculationOptions options) => .0;
protected override double GetAirSuperiorityInternal(SlotItemInfo slotItem, int onslot, AirSuperiorityCalculationOptions options) => .0;
protected override double GetProficiencyBonus(PresetSlotModel slotItem, AirSuperiorityCalculationOptions options) => .0;
protected override double GetProficiencyBonus(SlotItem slotItem, AirSuperiorityCalculationOptions options) { var proficiency = slotItem.GetProficiency(); return(Math.Sqrt(proficiency.GetInternalValue(options) / 10.0) + proficiency.SeaplaneBomberBonus); }
protected override double GetProficiencyBonus(SlotItem slotItem, AirSuperiorityCalculationOptions options) { return 0.0; }
/// <summary> /// 内部熟練度値を取得します。 /// </summary> public int GetInternalValue(AirSuperiorityCalculationOptions options) { if (options.HasFlag(AirSuperiorityCalculationOptions.InternalProficiencyMinValue)) return this.internalMinValue; if (options.HasFlag(AirSuperiorityCalculationOptions.InternalProficiencyMaxValue)) return this.internalMaxValue; return (this.internalMaxValue + this.internalMinValue) / 2; }
protected override double GetProficiencyBonus(SlotItem slotItem, AirSuperiorityCalculationOptions options) { var proficiency = slotItem.GetProficiency(); return Math.Sqrt(proficiency.GetInternalValue(options) / 10.0) + proficiency.SeaplaneBomberBonus; }
/// <summary> /// 装備と搭載数を指定して、スロット単位の制空能力を計算します。 /// </summary> public static int GetAirSuperiorityPotential(this SlotItem slotItem, int onslot, AirSuperiorityCalculationOptions options = AirSuperiorityCalculationOptions.Default) { var calculator = slotItem.GetCalculator(); return(options.HasFlag(calculator.Options()) && onslot >= 1 ? calculator.GetAirSuperiority(slotItem, onslot, options) : 0); }
/// <summary> /// 艦娘の制空能力を計算します。 /// </summary> public static int GetAirSuperiorityPotential(this Ship ship, AirSuperiorityCalculationOptions options = AirSuperiorityCalculationOptions.Default) { return ship.EquippedSlots .Select(x => GetAirSuperiorityPotential(x.Item, x.Current, options)) .Sum(); }
protected abstract double GetProficiencyBonus(SlotItem slotItem, AirSuperiorityCalculationOptions options);
protected virtual double GetAirSuperiorityInternal(SlotItemInfo slotItem, int onslot, AirSuperiorityCalculationOptions options) { return(slotItem.AA * Math.Sqrt(onslot)); }