From 59247d39d24bf6ce491214a12ce2da68c1a35748 Mon Sep 17 00:00:00 2001 From: masakih Date: Fri, 17 Feb 2017 23:10:02 +0900 Subject: [PATCH] =?utf8?q?=E9=80=A3=E5=90=88=E8=89=A6=E9=9A=8Avs=E9=80=A3?= =?utf8?q?=E5=90=88=E8=89=A6=E9=9A=8A=E3=81=AE=E5=A4=A7=E7=A0=B4=E3=83=81?= =?utf8?q?=E3=82=A7=E3=83=83=E3=82=AF=E3=81=8C=E8=AA=A4=E3=81=A3=E3=81=A6?= =?utf8?q?=E3=81=84=E3=81=9F=E3=81=AE=E3=81=A7=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KCD/HMCalculateDamageCommand.swift | 54 ++++++++++++++++++++++---------------- KCD/HMTemporaryDataStore.swift | 25 ++++++++++++------ 2 files changed, 48 insertions(+), 31 deletions(-) diff --git a/KCD/HMCalculateDamageCommand.swift b/KCD/HMCalculateDamageCommand.swift index bb2560d5..7254cd5d 100644 --- a/KCD/HMCalculateDamageCommand.swift +++ b/KCD/HMCalculateDamageCommand.swift @@ -103,7 +103,7 @@ class HMCalculateDamageCommand: HMJSONCommand { store.battles().forEach { store.delete($0) } } private func resetDamage() { - store.damagesWithSortDescriptors(nil)?.forEach { store.delete($0) } + store.damages().forEach { store.delete($0) } } private func startBattle() { guard let deckIdString = arguments["api_deck_id"], @@ -163,7 +163,7 @@ class HMCalculateDamageCommand: HMJSONCommand { ships.append(0) } ships.enumerated().forEach { - guard let damage = store.insertNewObject(forEntityName: "Damage") as? HMKCDamage + guard let damage = store.createDamage() else { return print("Can not create Damage") } damage.battle = battle damage.id = $0.offset @@ -176,18 +176,18 @@ class HMCalculateDamageCommand: HMJSONCommand { // private var damages: [HMKCDamage] { - let sortDescriptor = NSSortDescriptor(key: "id", ascending: true) - let array = store.damagesWithSortDescriptors([sortDescriptor]) - if array == nil || array!.count != 12 { + let array = store.sortedDamagesById() + if array.count != 12 { buildDamagedEntity() - guard let newDamages = store.damagesWithSortDescriptors([sortDescriptor]) + let newDamages = store.sortedDamagesById() + guard newDamages.count == 12 else { print("ERROR!!!! CAN NOT CREATE DAMAGE OBJECT") return [] } return newDamages } - return array! + return array } // @@ -209,7 +209,7 @@ class HMCalculateDamageCommand: HMJSONCommand { targetArraysArray.count == hougeki1Damages.count else { return print("api_damage is wrong") } - let eFlags: [Int]? = data["api_at_eflag"] as? [Int] + let eFlags: [Int]? = (data["api_at_eflag"] as? [Int])?.filter { $0 != -1 } #if DAMAGE_CHECK print("Start Hougeki \(baseKeyPath)") @@ -217,19 +217,24 @@ class HMCalculateDamageCommand: HMJSONCommand { let shipOffset = (battleFleet == .second) ? 6 : 0 targetArraysArray.enumerated().forEach { (i, targetArray) in targetArray.enumerated().forEach { (j, targetPosition) in - if let e = eFlags, e.count > i { + // targetは自軍か? + if let e = eFlags, 0.. 12 { return } - } - else { - if targetPosition < 0 || targetPosition > 6 { return } + guard 1...12 ~= targetPosition else { return } + } else { + guard 1...6 ~= targetPosition else { return } } } - let damageObject = damages[targetPosition - 1 + shipOffset] + let damagePos = targetPosition - 1 + shipOffset + guard 0.. BattleFleet = { switch self.battleType { - case .combinedWater, .combinedAir: return .second - case .eachCombinedWater, .eachCombinedAir: return .each + case .combinedWater, .combinedAir, + .eachCombinedWater, .eachCombinedAir: + return .second default: return .first } } @@ -362,7 +371,7 @@ class HMCalculateDamageCommand: HMJSONCommand { switch battleType { case .combinedWater: return .second case .eachCombinedWater: return .each - case .eachCombinedAir: return .second +// case .eachCombinedAir: return .second default: return .first } } @@ -376,7 +385,7 @@ class HMCalculateDamageCommand: HMJSONCommand { calculateHogeki(baseKeyPath: "api_data.api_hougeki3") { switch battleType { case .combinedWater: return .second - case .eachCombinedWater: return .second +// case .eachCombinedWater: return .second case .eachCombinedAir: return .each default: return .first } @@ -452,7 +461,7 @@ class HMCalculateDamageCommand: HMJSONCommand { private func damageControlIfPossible(nowhp: Int, ship: HMKCShipObject) -> Int { var nowHp = nowhp if nowHp < 0 { nowHp = 0 } - let maxhp = ship.maxhp + let maxhp = ship.maxhp let store = HMServerDataStore.default var useDamageControl = false ship.equippedItem.forEach { @@ -524,9 +533,8 @@ class HMCalculateDamageCommand: HMJSONCommand { // private func applyDamage() { - let sortDesc = NSSortDescriptor(key: "id", ascending: true) - guard let totalDamages = store.damagesWithSortDescriptors([sortDesc]), - totalDamages.count == 12 + let totalDamages = store.sortedDamagesById() + guard totalDamages.count == 12 else { return print("Damages count is invalid") } let aStore = HMServerDataStore.oneTimeEditor() totalDamages.forEach { diff --git a/KCD/HMTemporaryDataStore.swift b/KCD/HMTemporaryDataStore.swift index 713d885d..a9416bce 100644 --- a/KCD/HMTemporaryDataStore.swift +++ b/KCD/HMTemporaryDataStore.swift @@ -45,22 +45,31 @@ extension HMTemporaryDataStore { return battles().first } func battles() -> [HMKCBattle] { - guard let a = try? self.objects(withEntityName: "Battle"), + guard let a = try? self.objects(withEntityName: "Battle"), let array = a as? [HMKCBattle] - else { return [] } - return array + else { return [] } + return array } func resetBattle() { battles().forEach { delete($0) } } - func damagesWithSortDescriptors(_ sortDescriptors: [NSSortDescriptor]?) -> [HMKCDamage]? { - guard let a = try? objects(withEntityName: "Damage", sortDescriptors: sortDescriptors, predicate: nil), - let array = a as? [HMKCDamage], - array.count != 0 - else { return nil } + func sortedDamagesById() -> [HMKCDamage] { + let sortDescriptor = NSSortDescriptor(key: "id", ascending: true) + guard let a = try? objects(withEntityName: "Damage", sortDescriptors: [sortDescriptor]), + let array = a as? [HMKCDamage] + else { return [] } return array } + func damages() -> [HMKCDamage] { + guard let a = try? objects(withEntityName: "Damage"), + let array = a as? [HMKCDamage] + else { return [] } + return array + } + func createDamage() -> HMKCDamage? { + return insertNewObject(forEntityName: "Damage") as? HMKCDamage + } func guardEscaped() -> [HMKCGuardEscaped] { guard let e = try? objects(withEntityName: "GuardEscaped"), -- 2.11.0