From 5279de4e80f2d6184e042913b64b30d2f0c8d1cb Mon Sep 17 00:00:00 2001 From: masakih Date: Sun, 3 Dec 2017 17:09:42 +0900 Subject: [PATCH] =?utf8?q?=E8=AD=B7=E8=A1=9B=E9=80=80=E9=81=BF=E3=82=92?= =?utf8?q?=E4=BF=AE=E6=AD=A3=EF=BC=86=E5=8D=98=E8=89=A6=E9=80=80=E9=81=BF?= =?utf8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KCD/GuardShelterCommand.swift | 63 ++++++++++++++++++++++-------------- KCD/TemporaryDataStoreAccessor.swift | 2 +- 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/KCD/GuardShelterCommand.swift b/KCD/GuardShelterCommand.swift index 0134ef45..48c7d9c3 100644 --- a/KCD/GuardShelterCommand.swift +++ b/KCD/GuardShelterCommand.swift @@ -12,6 +12,7 @@ import Cocoa enum GuardEscapeAPI: String { case goback = "/kcsapi/api_req_combined_battle/goback_port" + case gobakAlone = "/kcsapi/api_req_sortie/goback_port" } extension Notification.Name { @@ -21,9 +22,11 @@ extension Notification.Name { final class GuardShelterCommand: JSONCommand { +// static let infoName = InformationName<[Int]>(name: "Ensured") + override class func canExecuteAPI(_ api: String) -> Bool { - return GuardEscapeAPI(rawValue: api) != nil ? true : false + return GuardEscapeAPI(rawValue: api) != nil } override func execute() { @@ -54,12 +57,21 @@ final class GuardShelterCommand: JSONCommand { private func damagedShipId(damagedPos: Int) -> Int? { + let firstDeckId = TemporaryDataStore.default.battle()?.deckId ?? 1 + let store = ServerDataStore.default - switch damagedPos { - case 1...6: return store.deck(by: 1)?.shipId(of: damagedPos - 1) - case 7...12: return store.deck(by: 2)?.shipId(of: damagedPos - 6 - 1) - default: return nil + switch firstDeckId { + case 1: + switch damagedPos { + case 1...6: return store.deck(by: 1)?.shipId(of: damagedPos - 1) + case 7...12: return store.deck(by: 2)?.shipId(of: damagedPos - 6 - 1) + default: return nil + } + case 3: + return store.deck(by: 3)?.shipId(of: damagedPos - 1) + default: + return nil } } @@ -67,23 +79,32 @@ final class GuardShelterCommand: JSONCommand { let escape = data["api_escape"] + guard let escapeIdx = escape["api_escape_idx"][0].int else { return } + guard let damagedId = damagedShipId(damagedPos: escapeIdx) else { + + return Logger.shared.log("damagedPos is wrong") + } + + let store = TemporaryDataStore.oneTimeEditor() + + guard let damaged = store.createGuardEscaped() else { + + return Logger.shared.log("Can not create GuardEscaped for damaged") + } + + damaged.shipID = damagedId + damaged.ensured = false + + // store guardian if needs guard let guardianPos = escape["api_tow_idx"][0].int else { return } let fixedGuardianPos = guardianPos - 6 - 1 - - guard let guardianId = ServerDataStore.default.deck(by: 2)?.shipId(of: fixedGuardianPos) else { - - return Logger.shared.log("guardianPos is wrong") - } - guard let escapeIdx = escape["api_escape_idx"][0].int, - let damagedId = damagedShipId(damagedPos: escapeIdx) else { - - return Logger.shared.log("damagedPos is wrong") + guard let guardianId = ServerDataStore.default.deck(by: 2)?.shipId(of: fixedGuardianPos) else { + + return Logger.shared.log("guardianPos is wrong") } - let store = TemporaryDataStore.oneTimeEditor() - guard let guardian = store.createGuardEscaped() else { return Logger.shared.log("Can not create GuardEscaped for guardinan") @@ -91,14 +112,6 @@ final class GuardShelterCommand: JSONCommand { guardian.shipID = guardianId guardian.ensured = false - - guard let damaged = store.createGuardEscaped() else { - - return Logger.shared.log("Can not create GuardEscaped for damaged") - } - - damaged.shipID = damagedId - damaged.ensured = false } private func removeInvalidEntry() { @@ -121,7 +134,7 @@ final class GuardShelterCommand: JSONCommand { notify() } - func ensureGuardShelter() { + private func ensureGuardShelter() { let store = TemporaryDataStore.oneTimeEditor() diff --git a/KCD/TemporaryDataStoreAccessor.swift b/KCD/TemporaryDataStoreAccessor.swift index 356d68bb..57a6257f 100644 --- a/KCD/TemporaryDataStoreAccessor.swift +++ b/KCD/TemporaryDataStoreAccessor.swift @@ -62,7 +62,7 @@ extension TemporaryDataStore { let p = NSPredicate.empty .and(NSPredicate(#keyPath(GuardEscaped.shipID), equal: shipId)) - .and(.false(#keyPath(GuardEscaped.ensured))) + .and(.true(#keyPath(GuardEscaped.ensured))) guard let escapes = try? objects(of: GuardEscaped.entity, predicate: p) else { return nil } -- 2.11.0