OSDN Git Service

Doutakuを導入
[kcd/KCD.git] / KCD / StoreCreateSlotItemHistoryCommand.swift
1 //
2 //  StoreCreateSlotItemHistoryCommand.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/01/11.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10 import SwiftyJSON
11
12 final class StoreCreateSlotItemHistoryCommand: JSONCommand {
13     
14     override func execute() {
15         
16         guard let fuel = parameter["api_item1"].int,
17             let bull = parameter["api_item2"].int,
18             let steel = parameter["api_item3"].int,
19             let bauxite = parameter["api_item4"].int else {
20                 
21                 return Logger.shared.log("Parameter is Wrong")
22         }
23         
24         let success = data["api_create_flag"].int ?? 0
25         let name = masterSlotItemName(sccess: success, data: data)
26         let numberOfUsedKaihatuSizai = (success != 0 ? 1 : 0)
27         
28         let store = ServerDataStore.default
29         guard let flagShip = store.sync(execute: { store.deck(by: 1)?[0] }) else {
30             
31             return Logger.shared.log("Flagship is not found")
32         }
33         
34         guard let commanderLv = store.sync(execute: { store.basic()?.level }) else {
35             
36             return print("Basic is wrong")
37         }
38         
39         let localStore = LocalDataStore.oneTimeEditor()
40         guard let newHistory = localStore.sync(execute: { localStore.createKaihatuHistory() }) else {
41             
42             return Logger.shared.log("Can not create new KaihatuHistory entry")
43         }
44         
45         localStore.sync {
46             
47             newHistory.name = name
48             newHistory.fuel = fuel
49             newHistory.bull = bull
50             newHistory.steel = steel
51             newHistory.bauxite = bauxite
52             newHistory.kaihatusizai = numberOfUsedKaihatuSizai
53             newHistory.flagShipLv = store.sync { flagShip.lv }
54             newHistory.flagShipName = store.sync { flagShip.name }
55             newHistory.commanderLv = commanderLv
56             newHistory.date = Date()
57         }
58     }
59     
60     private func masterSlotItemName(sccess: Int, data: JSON) -> String {
61         
62         if sccess == 0 {
63             
64             return LocalizedStrings.failDevelop.string
65         }
66         
67         guard let slotItemId = data["api_slot_item"]["api_slotitem_id"].int else {
68             
69             return Logger.shared.log("api_slotitem_id is wrong", value: "")
70         }
71         
72         let store = ServerDataStore.default
73         return store.sync { store.masterSlotItem(by: slotItemId)?.name ?? "" }
74     }
75 }