OSDN Git Service

fd44535ca55dcfacc15d469e39a1f75d77f62367
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / Model / ShipSpec.cs
1 // Copyright (C) 2018 Kazuhiro Fujieda <fujieda@users.osdn.me>\r
2 //\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
6 //\r
7 //    http://www.apache.org/licenses/LICENSE-2.0\r
8 //\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
14 \r
15 using System;\r
16 \r
17 namespace KancolleSniffer.Model\r
18 {\r
19     public class ShipSpec\r
20     {\r
21         public int Id { get; set; }\r
22         public int SortId { get; set; }\r
23         public string Name { get; set; }\r
24         public int FuelMax { get; set; }\r
25         public int BullMax { get; set; }\r
26         public int SlotNum { get; set; }\r
27         public Func<int[]> GetMaxEq { get; set; }\r
28         public int[] MaxEq => GetMaxEq?.Invoke();\r
29         public Func<int> GetNumEquips { get; set; }\r
30         public Action<int> SetNumEquips { get; set; }\r
31 \r
32         public int NumEquips\r
33         {\r
34             get => GetNumEquips();\r
35             set => SetNumEquips(value);\r
36         }\r
37 \r
38         public int ShipType { get; set; }\r
39         public int ShipClass { get; set; }\r
40         public string ShipTypeName { get; set; }\r
41         public RemodelInfo Remodel { get; } = new RemodelInfo();\r
42 \r
43         public class RemodelInfo\r
44         {\r
45             public int Level { get; set; }\r
46             public int After { get; set; }\r
47             public int Base { get; set; } // 艦隊晒しページ用\r
48             public int Step { get; set; } // 同上\r
49         }\r
50 \r
51         public ShipSpec()\r
52         {\r
53             Id = -1;\r
54             Name = "";\r
55         }\r
56 \r
57         public double RepairWeight\r
58         {\r
59             get\r
60             {\r
61                 switch (ShipType)\r
62                 {\r
63                     case 1: // 海防艦\r
64                     case 13: // 潜水艦\r
65                         return 0.5;\r
66                     case 2: // 駆逐艦\r
67                     case 3: // 軽巡洋艦\r
68                     case 4: // 重雷装巡洋艦\r
69                     case 14: // 潜水空母\r
70                     case 16: // 水上機母艦\r
71                     case 17: // 揚陸艦\r
72                     case 21: // 練習巡洋艦\r
73                     case 22: // 補給艦\r
74                         return 1.0;\r
75                     case 5: // 重巡洋艦\r
76                     case 6: // 航空巡洋艦\r
77                     case 7: // 軽空母\r
78                     case 8: // 高速戦艦\r
79                     case 20: // 潜水母艦\r
80                         return 1.5;\r
81                     case 9: // 低速戦艦\r
82                     case 10: // 航空戦艦\r
83                     case 11: // 正規空母\r
84                     case 18: // 装甲空母\r
85                     case 19: // 工作艦\r
86                         return 2.0;\r
87                 }\r
88                 return 1.0;\r
89             }\r
90         }\r
91 \r
92         public double TransportPoint\r
93         {\r
94             get\r
95             {\r
96                 switch (ShipType)\r
97                 {\r
98                     case 2:\r
99                         return 5.0;\r
100                     case 3:\r
101                         return Id == 487 ? 10.0 : 2.0; // 鬼怒改二は大発分を加算\r
102                     case 6:\r
103                         return 4.0;\r
104                     case 10:\r
105                         return 7.0;\r
106                     case 16:\r
107                         return 9.0;\r
108                     case 17:\r
109                         return 12.0;\r
110                     case 20:\r
111                         return 7.0;\r
112                     case 21:\r
113                         return 6.0;\r
114                     case 22:\r
115                         return 15.0;\r
116                     default:\r
117                         return 0;\r
118                 }\r
119             }\r
120         }\r
121 \r
122         public bool IsSubmarine => ShipType == 13 || ShipType == 14;\r
123 \r
124         public bool IsAircraftCarrier => ShipType == 7 || ShipType == 11 || ShipType == 18;\r
125 \r
126         public bool IsAntiSubmarine\r
127         {\r
128             get\r
129             {\r
130                 switch (ShipType)\r
131                 {\r
132                     case 1: // 海防艦\r
133                     case 2: // 駆逐\r
134                     case 3: // 軽巡\r
135                     case 4: // 雷巡\r
136                     case 6: // 航巡\r
137                     case 7: // 軽空\r
138                     case 10: // 航戦\r
139                     case 16: // 水母\r
140                     case 17: // 揚陸艦\r
141                     case 21: // 練巡\r
142                     case 22: // 補給艦\r
143                         return true;\r
144                 }\r
145                 return false;\r
146             }\r
147         }\r
148 \r
149         public bool IsRepairShip => ShipType == 19;\r
150 \r
151         public bool IsTrainingCruiser => ShipType == 21;\r
152     }\r
153 }