// See the License for the specific language governing permissions and\r
// limitations under the License.\r
\r
+using System;\r
using System.Collections.Generic;\r
using System.Drawing;\r
+using System.IO;\r
using System.Linq;\r
using static System.Math;\r
\r
\r
public bool IsRepairFacility => Type == 31;\r
\r
+ public bool IsAntiAirGun => Type == 21;\r
+\r
public double ContactTriggerRate\r
{\r
get\r
{\r
get\r
{\r
+ var tp = DataLoader.ItemTp(Id);\r
+ if (tp >= 0)\r
+ return tp;\r
switch (Id)\r
{\r
case 75: // ドラム缶(輸送用)\r
case 193: // 特大発動艇\r
return 8.0;\r
case 166: // 大発動艇(八九式中戦車&陸戦隊)\r
- return IncreaceLandPowerTp ? 13.0 : 8.0;\r
+ return 8.0;\r
case 167: // 特二式内火艇\r
- return IncreaceLandPowerTp ? 7.0 : 2.0;\r
+ return 2.0;\r
case 230: // 特大発動艇+戦車第11連隊\r
return 8.0;\r
case 145: // 戦闘糧食\r
return 1.0;\r
case 150: // 秋刀魚の缶詰\r
return 1.0;\r
+ case 241: // 戦闘糧食(特別なおにぎり)\r
+ return 1.0;\r
default:\r
return 0;\r
}\r
return LoS <= 7 ? 1.2 : 1.3;\r
case 10:\r
case 41:\r
- return LoS <= 7 ? 1.1 : LoS <= 8 ? 1.13 : 1.16;\r
+ return LoS <= 7 ? 1.1 :\r
+ LoS <= 8 ? 1.13 : 1.16;\r
}\r
return 1;\r
}\r
\r
public int MaxShips { get; private set; }\r
public int MarginShips { get; set; }\r
- public bool RingShips { get; set; }\r
+ public bool AlarmShips { get; set; }\r
public int MaxEquips { get; private set; }\r
public int MarginEquips { get; set; }\r
- public bool RingEquips { get; set; }\r
+ public bool AlarmEquips { get; set; }\r
\r
public int NowShips\r
{\r
if (MaxShips != 0)\r
{\r
var limit = MaxShips - MarginShips;\r
- RingShips = RingShips || _nowShips < limit && value >= limit;\r
+ AlarmShips = AlarmShips || _nowShips < limit && value >= limit;\r
}\r
_nowShips = value;\r
}\r
if (MaxEquips != 0)\r
{\r
var limit = MaxEquips - MarginEquips;\r
- RingEquips = RingEquips || _nowEquips < limit && value >= limit;\r
+ AlarmEquips = AlarmEquips || _nowEquips < limit && value >= limit;\r
}\r
_nowEquips = value;\r
}\r
var check = MaxEquips == 0;\r
MaxEquips = (int)json.api_max_slotitem;\r
if (check)\r
- RingEquips = NowEquips >= MaxEquips - MarginEquips;\r
+ AlarmEquips = NowEquips >= MaxEquips - MarginEquips;\r
}\r
\r
public void InspectMaster(dynamic json)\r
}\r
}\r
\r
- public ItemSpec GetSpecByItemId(int id) => _itemSpecs[id];\r
+ public ItemSpec GetSpecByItemId(int id) => _itemSpecs.TryGetValue(id, out var spec) ? spec : new ItemSpec();\r
\r
public string GetName(int id) => GetStatus(id).Spec.Name;\r
\r
\r
public string GetUseItemName(int id) => _useItemName[id];\r
\r
- public IEnumerable<ItemStatus> InjectItems(IEnumerable<int> itemIds)\r
+ public void InjectItemSpec(IEnumerable<ItemSpec> specs)\r
+ {\r
+ foreach (var spec in specs)\r
+ _itemSpecs.Add(spec.Id, spec);\r
+ }\r
+\r
+ public ItemStatus[] InjectItems(IEnumerable<int> itemIds)\r
{\r
var id = _itemInfo.Keys.Count + 1;\r
return itemIds.Select(itemId =>\r
var item = new ItemStatus {Id = id++, Spec = spec};\r
_itemInfo.Add(item.Id, item);\r
return item;\r
- });\r
+ }).ToArray();\r
}\r
}\r
}
\ No newline at end of file