OSDN Git Service

guard の書き方を統一した
[kcd/KCD.git] / KCD / MainTabVIewItemViewController.swift
1 //
2 //  MainTabVIewItemViewController.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2016/12/27.
6 //  Copyright © 2016年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 @objc
12 enum ShipTabType: Int {
13     
14     case all = 0
15     case destroyer = 1
16     case lightCruiser = 2
17     case heavyCruiser = 3
18     case aircraftCarrier = 4
19     case battleShip = 5
20     case submarine = 6
21     case other = 7
22 }
23
24 class MainTabVIewItemViewController: NSViewController {
25     
26     let shipTypeCategories: [[Int]] = [
27         [0],    // dummy
28         [2],    // destoryer
29         [3, 4], // leght cruiser
30         [5, 6], // heavy crusier
31         [7, 11, 16, 18],    // aircraft carrier
32         [8, 9, 10, 12], // battle ship
33         [13, 14],   // submarine
34         [1, 15, 17, 19, 20, 21, 22]
35     ]
36     
37     @objc dynamic var hasShipTypeSelector: Bool { return false }
38     @objc dynamic var selectedShipType: ShipTabType = .all
39     
40     var shipTypePredicte: NSPredicate? {
41         
42         switch selectedShipType {
43         case .all:
44             return nil
45             
46         case .destroyer, .lightCruiser, .heavyCruiser,
47              .aircraftCarrier, .battleShip, .submarine:
48             return NSPredicate(format: "master_ship.stype.id IN %@", shipTypeCategories[selectedShipType.rawValue])
49             
50         case .other:
51             let omitTypes = shipTypeCategories
52                 .enumerated()
53                 .filter { $0.offset != 0 && $0.offset != 7 }
54                 .flatMap { $0.element }
55             return NSPredicate(format: "NOT master_ship.stype.id IN %@", omitTypes)
56         }
57     }
58 }