2 // CreateShipCommand.swift
5 // Created by Hori,Masaki on 2017/01/11.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 final class CreateShipCommand: JSONCommand {
13 override class func canExecuteAPI(_ api: API) -> Bool {
15 return api.endpoint == .createShip
18 override func execute() {
20 DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
26 private func afterExecute() {
28 guard let dockId = parameter["api_kdock_id"].int else {
30 Logger.shared.log("api_kdock_id is wrong")
35 let store = ServerDataStore.default
37 let storedInfos: KenzoMarkCommand.KenzoDockInfo? = store.sync {
39 guard let kenzoDock = store.kenzoDock(by: dockId) else {
44 return KenzoMarkCommand.KenzoDockInfo(dockId: kenzoDock.id,
45 shipId: kenzoDock.created_ship_id,
46 fuel: kenzoDock.item1,
47 bull: kenzoDock.item2,
48 steel: kenzoDock.item3,
49 bauxite: kenzoDock.item4,
50 kaihatusizai: kenzoDock.item5)
53 guard let infos = storedInfos else {
55 Logger.shared.log("Can not load KenzoDeck")
60 guard let flagShip = store.sync(execute: { store.deck(by: 1)?[0] }) else {
62 Logger.shared.log("Can not load deck")
66 guard let commanderLv = store.sync(execute: { store.basic()?.level }) else {
68 Logger.shared.log("Can not load basic")
73 let localStore = LocalDataStore.oneTimeEditor()
76 guard let newMark = localStore.kenzoMark(byDockId: dockId) ?? localStore.createKenzoMark() else {
78 Logger.shared.log("Can not create KenzoMark")
83 newMark.fuel = infos.fuel
84 newMark.bull = infos.bull
85 newMark.steel = infos.steel
86 newMark.bauxite = infos.bauxite
87 newMark.kaihatusizai = infos.kaihatusizai
88 newMark.created_ship_id = infos.shipId
89 newMark.flagShipName = store.sync { flagShip.name }
90 newMark.flagShipLv = store.sync { flagShip.lv }
91 newMark.commanderLv = commanderLv
92 newMark.kDockId = dockId