1 // Copyright (C) 2018 Kazuhiro Fujieda <fujieda@users.osdn.me>
\r
3 // Licensed under the Apache License, Version 2.0 (the "License");
\r
4 // you may not use this file except in compliance with the License.
\r
5 // You may obtain a copy of the License at
\r
7 // http://www.apache.org/licenses/LICENSE-2.0
\r
9 // Unless required by applicable law or agreed to in writing, software
\r
10 // distributed under the License is distributed on an "AS IS" BASIS,
\r
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
12 // See the License for the specific language governing permissions and
\r
13 // limitations under the License.
\r
16 using System.Drawing;
\r
18 namespace KancolleSniffer.Model
\r
20 public class ItemSpec
\r
23 public bool Empty => Id == -1;
\r
26 public string TypeName;
\r
27 public int Firepower;
\r
28 public int IconType;
\r
31 public int AntiSubmarine;
\r
34 public int Interception;
\r
35 public int AntiBomber;
\r
36 public int Distance;
\r
44 public bool CanAirCombat
\r
64 // http://ja.kancolle.wikia.com/wiki/%E3%83%9E%E3%83%83%E3%83%97%E7%B4%A2%E6%95%B5
\r
65 public double LoSScaleFactor
\r
85 public int LoSSgRadarBonus => Id == 315 ? 4 : 0;
\r
87 public bool IsAircraft
\r
116 public bool IsDiveBomber => Type == 7 || Type == 11 || Type == 57;
\r
118 public bool IsTorpedoBomber => Type == 8 || Type == 58;
\r
120 public int EffectiveAntiSubmarine
\r
126 case 1: // 小口径(12.7cm連装高角砲(後期型))
\r
128 case 12: // 小型電探(22号対水上電探改四)
\r
132 return AntiSubmarine;
\r
137 public bool IsSonar => Type == 14 || // ソナー
\r
138 Type == 40; // 大型ソナー
\r
140 public bool IsDCT => // Depth Charge Thrower
\r
141 Id == 44 || // 九四式爆雷投射機
\r
142 Id == 45; // 三式爆雷投射機
\r
144 public bool IsDC => // Depth Charge
\r
145 Id == 226 || // 九五式爆雷
\r
148 public bool IsSpecialDCT => Type == 15 && !IsDCT && !IsDC;
\r
150 public bool IsRepairFacility => Type == 31;
\r
152 public bool IsDrum => Id == 75;
\r
154 public bool IsArmyAircraft => Type == 25 || Type == 26;
\r
156 public bool IsNightRecon => Id == 102;
\r
158 public double ContactTriggerRate
\r
175 public Func<double> GetItemTp { get; set; }
\r
177 public double TransportPoint
\r
181 var tp = GetItemTp?.Invoke();
\r
186 case 75: // ドラム缶(輸送用)
\r
192 case 166: // 大発動艇(八九式中戦車&陸戦隊)
\r
194 case 167: // 特二式内火艇
\r
196 case 230: // 特大発動艇+戦車第11連隊
\r
200 case 150: // 秋刀魚の缶詰
\r
202 case 241: // 戦闘糧食(特別なおにぎり)
\r
210 public AirCorpsFighterPower.Pair ReconPlaneAirBaseBonus
\r
217 return new AirCorpsFighterPower.Pair(1.0, LoS <= 7 ? 1.2 : 1.3);
\r
220 return new AirCorpsFighterPower.Pair(1.0, LoS <= 7 ? 1.1 : LoS <= 8 ? 1.13 : 1.16);
\r
222 return new AirCorpsFighterPower.Pair(LoS <= 8 ? 1.15 : 1.18, LoS <= 8 ? 1.18 : 1.24);
\r
224 return new AirCorpsFighterPower.Pair(1.0, 1.0);
\r
228 public double CalcAirReconScore(int slot)
\r
234 return LoS * Math.Sqrt(Math.Sqrt(slot));
\r
236 return LoS * Math.Sqrt(slot);
\r
252 return Color.FromArgb(209, 89, 89);
\r
254 return Color.FromArgb(253, 233, 0);
\r
256 return Color.FromArgb(88, 134, 170);
\r
258 return Color.FromArgb(93, 179, 108);
\r
260 return Color.FromArgb(223, 102, 102);
\r
262 return Color.FromArgb(95, 173, 234);
\r
264 return Color.FromArgb(254, 191, 0);
\r
267 return Color.FromArgb(142, 203, 152);
\r
269 return Color.FromArgb(231, 153, 53);
\r
271 return Color.FromArgb(69, 175, 88);
\r
273 return Color.FromArgb(254, 254, 254);
\r
276 return Color.FromArgb(102, 204, 118);
\r
279 return Color.FromArgb(126, 203, 215);
\r
281 return Color.FromArgb(254, 195, 77);
\r
284 return Color.FromArgb(154, 163, 90);
\r
285 case 21: // オートジャイロ
\r
286 return Color.FromArgb(99, 203, 115);
\r
288 return Color.FromArgb(125, 205, 217);
\r
290 return Color.FromArgb(152, 124, 172);
\r
293 return Color.FromArgb(254, 155, 0);
\r
295 return Color.FromArgb(161, 161, 160);
\r
297 return Color.FromArgb(175, 156, 126);
\r
299 return Color.FromArgb(204, 172, 252);
\r
301 return Color.FromArgb(206, 166, 108);
\r
303 return Color.FromArgb(137, 153, 77);
\r
305 return Color.FromArgb(253, 49, 49);
\r
307 return Color.FromArgb(188, 238, 155);
\r
309 return Color.FromArgb(142, 203, 152);
\r
311 return Color.FromArgb(254, 254, 254);
\r
313 return Color.FromArgb(90, 200, 155);
\r
317 return Color.FromArgb(57, 182, 78);
\r
320 return Color.FromArgb(72, 178, 141);
\r
322 return Color.FromArgb(158, 187, 226);
\r
325 return Color.FromArgb(128, 121, 161);
\r
326 case 47: // 陸上対潜哨戒機
\r
327 return Color.FromArgb(91, 113, 209);
\r
329 return SystemColors.Control;
\r