OSDN Git Service

Timerをクロージャ方式にした
[kcd/KCD.git] / KCD / NyukyoSpeedChangeCommand.swift
index 75b499c..fd9471a 100644 (file)
@@ -8,24 +8,25 @@
 
 import Cocoa
 
-class NyukyoSpeedChangeCommand: JSONCommand {
-    override class func canExecuteAPI(_ api: String) -> Bool {
-        if api == "/kcsapi/api_req_nyukyo/speedchange" { return true }
-        return false
+final class NyukyoSpeedChangeCommand: JSONCommand {
+    
+    override class func canExecuteAPI(_ api: API) -> Bool {
+        
+        return api.endpoint == .speedChange
     }
+    
     override func execute() {
-        let store = ServerDataStore.oneTimeEditor()
-        let nDock = arguments["api_ndock_id"]
-            .flatMap { Int($0) }
-            .flatMap { store.nyukyoDock(by: $0) }
-        nDock
-            .flatMap { $0.ship_id }
-            .flatMap { store.ship(byId: $0) }
-            .map { $0.nowhp = $0.maxhp }
-        nDock?.ship_id = 0
-        nDock?.state = 0
         
-        store.material()
-            .map { $0.kousokushuhuku = $0.kousokushuhuku - 1 }
+        let store = ServerDataStore.oneTimeEditor()
+        store.sync {
+            
+            let nDock = self.parameter["api_ndock_id"].int.flatMap(store.nyukyoDock(by:))
+            
+            nDock.flatMap { $0.ship_id }.flatMap(store.ship(by:)).map { $0.nowhp = $0.maxhp }
+            nDock?.ship_id = 0
+            nDock?.state = 0
+            
+            store.material().map { $0.kousokushuhuku = $0.kousokushuhuku - 1 }
+        }
     }
 }