OSDN Git Service

HMRemodelSlotItemCommandを修正
authormasakih <masakih@users.sourceforge.jp>
Sat, 14 Jan 2017 00:47:02 +0000 (09:47 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sat, 14 Jan 2017 00:47:02 +0000 (09:47 +0900)
装備を使用しない場合、状態が更新されない問題を修正

KCD/HMRemodelSlotItemCommand.swift

index 95a6982..6be6655 100644 (file)
@@ -10,17 +10,9 @@ import Cocoa
 
 class HMRemodelSlotItemCommand: HMJSONCommand {
     override func execute() {
-        // remove used slot items.
         guard let d = json as? [String:Any],
-            let data = d[dataKey] as? [String:Any],
-            let useSlot = data["api_use_slot_id"] as? [NSNumber]
-            else { return print("api_use_slot_id is wrong") }
-        let p = NSPredicate(format: "id IN %@", useSlot)
-        let store = HMServerDataStore.oneTimeEditor()
-        guard let s = try? store?.objects(withEntityName: "SlotItem", predicate: p),
-        let useSlotItems = s as? [HMKCSlotItemObject]
-            else { return print("slotItem not found") }
-        useSlotItems.forEach { store?.delete($0) }
+            let data = d[dataKey] as? [String:Any]
+            else { return print("JSON is wrong") }
         
         guard let success = data["api_remodel_flag"] as? Bool else { return }
         if !success {
@@ -32,6 +24,7 @@ class HMRemodelSlotItemCommand: HMJSONCommand {
             let slotItemId = Int(sl)
             else { return print("api_slot_id is wrong") }
         let pp = NSPredicate(format: "id = %ld", slotItemId)
+        let store = HMServerDataStore.oneTimeEditor()
         guard let sls = try? store?.objects(withEntityName: "SlotItem", predicate: pp),
             let slotItems = sls as? [HMKCSlotItemObject],
             let slotItem = slotItems.first
@@ -50,6 +43,14 @@ class HMRemodelSlotItemCommand: HMJSONCommand {
         guard let level = afterSlot["api_level"] as? NSNumber
             else { return print("api_level is wrong") }
         slotItem.level = level
+        
+        // remove used slot items.
+        guard let useSlot = data["api_use_slot_id"] as? [NSNumber] else { return }
+        let p = NSPredicate(format: "id IN %@", useSlot)
+        guard let s = try? store?.objects(withEntityName: "SlotItem", predicate: p),
+            let useSlotItems = s as? [HMKCSlotItemObject]
+            else { return print("slotItem not found") }
+        useSlotItems.forEach { store?.delete($0) }
     }
     
     private func setMasterSlotItem(_ slotItemId: NSNumber, to slotItem: HMKCSlotItemObject, store: HMCoreDataManager) {