OSDN Git Service

護衛退避を修正&単艦退避に対応
[kcd/KCD.git] / KCD / TemporaryDataStoreAccessor.swift
1 //
2 //  TemporaryDataStoreAccessor.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/10/25.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 extension TemporaryDataStore {
10     
11     func battle() -> Battle? {
12         
13         return battles().first
14     }
15     
16     func battles() -> [Battle] {
17         
18         guard let battles = try? self.objects(of: Battle.entity) else { return [] }
19         
20         return battles
21     }
22     
23     func resetBattle() {
24         
25         battles().forEach { delete($0) }
26     }
27     
28     func createBattle() -> Battle? {
29         
30         return insertNewObject(for: Battle.entity)
31     }
32     
33     func sortedDamagesById() -> [Damage] {
34         
35         let sortDescriptor = NSSortDescriptor(key: #keyPath(Damage.id), ascending: true)
36         
37         guard let damages = try? objects(of: Damage.entity, sortDescriptors: [sortDescriptor]) else { return [] }
38         
39         return damages
40     }
41     
42     func damages() -> [Damage] {
43         
44         guard let damages = try? objects(of: Damage.entity) else { return [] }
45         
46         return damages
47     }
48     
49     func createDamage() -> Damage? {
50         
51         return insertNewObject(for: Damage.entity)
52     }
53     
54     func guardEscaped() -> [GuardEscaped] {
55         
56         guard let escapeds = try? objects(of: GuardEscaped.entity) else { return [] }
57         
58         return escapeds
59     }
60     
61     func ensuredGuardEscaped(byShipId shipId: Int) -> GuardEscaped? {
62         
63         let p = NSPredicate.empty
64             .and(NSPredicate(#keyPath(GuardEscaped.shipID), equal: shipId))
65             .and(.true(#keyPath(GuardEscaped.ensured)))
66         
67         guard let escapes = try? objects(of: GuardEscaped.entity, predicate: p) else { return nil }
68         
69         return escapes.first
70     }
71     
72     func notEnsuredGuardEscaped() -> [GuardEscaped] {
73         
74         let predicate = NSPredicate.false(#keyPath(GuardEscaped.ensured))
75         
76         guard let escapeds = try? objects(of: GuardEscaped.entity, predicate: predicate) else { return [] }
77         
78         return escapeds
79     }
80     
81     func createGuardEscaped() -> GuardEscaped? {
82         
83         return insertNewObject(for: GuardEscaped.entity)
84     }
85 }