OSDN Git Service

staticプロパティをインスタンスプロパティに変更
[kcd/KCD.git] / KCD / DummyShipCommand.swift
index ec0081a..cf77517 100644 (file)
@@ -11,30 +11,47 @@ import Cocoa
 /**
  * 出撃中にドロップした艦をマスクした上で入居数に反映させるためのダミーデータの生成と削除を行う
  **/
-class DummyShipCommand: JSONCommand {
+final class DummyShipCommand: JSONCommand {
+    
     private static var needsEnterDummy = false
     
     override func execute() {
-        if api == "/kcsapi/api_req_sortie/battleresult" { checkGetShip() }
-        if api == "/kcsapi/api_get_member/ship_deck" { enterDummy() }
-        if api == "/kcsapi/api_port/port" { removeDummy() }
+        
+        switch api.endpoint {
+            
+        case .battleResult, .combinedBattleResult: checkGetShip()
+        
+        case .shipDeck: enterDummy()
+        
+        case .port: removeDummy()
+        
+        default:
+            Logger.shared.log("Missing API: \(apiResponse.api)")
+            
+        }
     }
     
     private func checkGetShip() {
-        guard let data = json[dataKey] as? [String: Any],
-            let _ = data["api_get_ship"]
-            else { return }
-        DummyShipCommand.needsEnterDummy = true
+        
+        DummyShipCommand.needsEnterDummy = data["api_get_ship"].exists()
     }
+    
     private func enterDummy() {
-        if !DummyShipCommand.needsEnterDummy { return }
+        
+        guard DummyShipCommand.needsEnterDummy else {
+            
+            return
+        }
+        
         let store = ServerDataStore.oneTimeEditor()
-        store.createShip()?.id = -2
+        store.sync { store.createShip()?.id = -2 }
         DummyShipCommand.needsEnterDummy = false
     }
+    
     private func removeDummy() {
+        
         let store = ServerDataStore.oneTimeEditor()
-        store.ships(byId: -2).forEach { store.delete($0) }
+        store.sync { store.ships(by: -2).forEach(store.delete) }
         DummyShipCommand.needsEnterDummy = false
     }
 }