final class ShipMapper: JSONMapper {
- private static let ignoreKeys = ["api_gomes", "api_gomes2", "api_broken", "api_powup",
- "api_voicef", "api_afterlv", "api_aftershipid", "api_backs",
- "api_slotnum", "api_stype", "api_name", "api_yomi",
- "api_raig", "api_luck", "api_saku", "api_raim", "api_baku",
- "api_taik", "api_houg", "api_houm", "api_tyku",
- "api_ndock_item", "api_star",
- "api_ndock_time_str", "api_member_id",
- "api_fuel_max", "api_bull_max"]
+ private static let ignoreKeys: Set<String> = ["api_gomes", "api_gomes2", "api_broken", "api_powup",
+ "api_voicef", "api_afterlv", "api_aftershipid", "api_backs",
+ "api_slotnum", "api_stype", "api_name", "api_yomi",
+ "api_raig", "api_luck", "api_saku", "api_raim", "api_baku",
+ "api_taik", "api_houg", "api_houm", "api_tyku",
+ "api_ndock_item", "api_star",
+ "api_ndock_time_str", "api_member_id",
+ "api_fuel_max", "api_bull_max"]
let apiResponse: APIResponse
let configuration: MappingConfiguration<Ship>
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entity: Ship.entity,
+ self.configuration = MappingConfiguration(entity: Ship.self,
dataKeys: ShipMapper.dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys: ShipMapper.ignoreKeys)
init(forSlotDepriveUnset apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entity: Ship.entity,
+ self.configuration = MappingConfiguration(entity: Ship.self,
dataKeys: ["api_data", "api_ship_data", "api_unset_ship"],
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys: ShipMapper.ignoreKeys)
switch apiResponse.api.endpoint {
case .ship3, .getShip, .shipDeck, .powerup, .slotDeprive:
+
return false
case .ship2:
// 特殊任務のクリア時にship2がapi_shipid付きでリクエストされ、その艦娘のデータしかない時があるため
+
return !apiResponse.parameter["api_shipid"].valid
default:
+
return true
}
private func setExtraSlot(_ exSlotItem: Int, to ship: Ship) {
guard exSlotItem != -1, exSlotItem != 0 else {
+
ship.extraItem = nil
+
return
}
guard let found = slotItems.binarySearch(comparator: { $0.id ==? exSlotItem }),