OSDN Git Service

MappingConfigurationを簡略化
[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 ShipType: Int {
13     case all = 0
14     case destroyer = 1
15     case lightCruiser = 2
16     case heavyCruiser = 3
17     case aircraftCarrier = 4
18     case battleShip = 5
19     case submarine = 6
20     case other = 7
21 }
22
23 class MainTabVIewItemViewController: NSViewController {
24     let shipTypeCategories: [[Int]] = [
25         [0],    // dummy
26         [2],    // destoryer
27         [3, 4], // leght cruiser
28         [5, 6], // heavy crusier
29         [7, 11, 16, 18],    // aircraft carrier
30         [8, 9, 10, 12], // battle ship
31         [13, 14],   // submarine
32         [1, 15, 17, 19, 20, 21, 22]
33     ]
34     
35     dynamic var hasShipTypeSelector: Bool { return false }
36     dynamic var selectedShipType: ShipType = .all
37     
38     // TODO: var shipTypePredicte: NSPredicate? に変更する
39     func predicate(for shipType: ShipType) -> NSPredicate? {
40         switch shipType {
41         case .all:
42             return nil
43         case .destroyer, .lightCruiser, .heavyCruiser,
44              .aircraftCarrier, .battleShip, .submarine:
45             return NSPredicate(format: "master_ship.stype.id IN %@", shipTypeCategories[Int(shipType.rawValue)])
46         case .other:
47             let omitTypes = shipTypeCategories
48                 .enumerated()
49                 .filter { $0.offset != 0 && $0.offset != 7 }
50                 .flatMap { $0.element }
51             return NSPredicate(format: "NOT master_ship.stype.id IN %@", omitTypes)
52         }
53     }
54 }