F49688651B3AFE4900D3CEDE /* HMProgressPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = F49688631B3AFE4900D3CEDE /* HMProgressPanel.xib */; };
F49688671B3EA16800D3CEDE /* RemoveDatabaseFileAndRestart.app in Resources */ = {isa = PBXBuildFile; fileRef = F49688661B3EA16800D3CEDE /* RemoveDatabaseFileAndRestart.app */; };
F49828FC1902A226000D6BBE /* HMStrokeTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F49828FB1902A226000D6BBE /* HMStrokeTextFieldCell.m */; };
+ F499E88D1B5BCA7300189029 /* HMAnchorageRepairManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F499E88C1B5BCA7300189029 /* HMAnchorageRepairManager.m */; };
F4A2AF521A074DCF0024BD9E /* HMScreenshotListWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A2AF501A074DCF0024BD9E /* HMScreenshotListWindowController.m */; };
F4A2AF541A074DE40024BD9E /* HMScreenshotListWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4A2AF561A074DE40024BD9E /* HMScreenshotListWindowController.xib */; };
F4A2AF581A0930160024BD9E /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4A2AF571A0930160024BD9E /* Quartz.framework */; };
F49688661B3EA16800D3CEDE /* RemoveDatabaseFileAndRestart.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; path = RemoveDatabaseFileAndRestart.app; sourceTree = "<group>"; };
F49828FA1902A226000D6BBE /* HMStrokeTextFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMStrokeTextFieldCell.h; sourceTree = "<group>"; };
F49828FB1902A226000D6BBE /* HMStrokeTextFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMStrokeTextFieldCell.m; sourceTree = "<group>"; };
+ F499E88B1B5BCA7300189029 /* HMAnchorageRepairManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMAnchorageRepairManager.h; sourceTree = "<group>"; };
+ F499E88C1B5BCA7300189029 /* HMAnchorageRepairManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMAnchorageRepairManager.m; sourceTree = "<group>"; };
F4A2AF4F1A074DCF0024BD9E /* HMScreenshotListWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMScreenshotListWindowController.h; sourceTree = "<group>"; };
F4A2AF501A074DCF0024BD9E /* HMScreenshotListWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMScreenshotListWindowController.m; sourceTree = "<group>"; };
F4A2AF551A074DE40024BD9E /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ja; path = ja.lproj/HMScreenshotListWindowController.xib; sourceTree = "<group>"; };
F495462A1B14CBA600E0D8D0 /* HMBookmarkManager.m */,
F4F6E80A1B2BC81C0008B66E /* HMPeriodicNotifier.h */,
F4F6E80B1B2BC81C0008B66E /* HMPeriodicNotifier.m */,
+ F499E88B1B5BCA7300189029 /* HMAnchorageRepairManager.h */,
+ F499E88C1B5BCA7300189029 /* HMAnchorageRepairManager.m */,
F4D2CBBF18ACE7D7000EBC59 /* Command */,
F4BEEEA918D890660006F70C /* UI */,
F4BEEEA818D88FF30006F70C /* CoreData */,
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ F499E88D1B5BCA7300189029 /* HMAnchorageRepairManager.m in Sources */,
F4513EE818B77A5300073552 /* HMMemberKDockCommand.m in Sources */,
F426802B194D0F4800B2C27F /* HMMemberShip2Command.m in Sources */,
F4AA06101931869E00844688 /* HMBattleResultCommand.m in Sources */,
--- /dev/null
+//
+// HMAnchorageRepairManager.m
+// KCD
+//
+// Created by Hori,Masaki on 2015/07/19.
+// Copyright (c) 2015年 Hori,Masaki. All rights reserved.
+//
+
+#import "HMAnchorageRepairManager.h"
+
+#import "HMServerDataStore.h"
+#import "HMKCDeck+Extension.h"
+#import "HMKCShipObject+Extensions.h"
+#import "HMKCMasterShipObject.h"
+#import "HMKCSlotItemObject+Extensions.h"
+#import "HMKCMasterSlotItemObject.h"
+
+
+@interface HMAnchorageRepairManager ()
+
+
+@property (strong) NSDate *repairTime;
+
+@property (strong) HMKCDeck* fleet;
+@property (strong) NSArray *members;
+
+@property (strong) NSObjectController *fleetController;
+@property (strong) NSArrayController *memberController;
+
+@end
+
+@implementation HMAnchorageRepairManager
+
+- (instancetype)initWithDeck:(HMKCDeck *)deck
+{
+ self = [super init];
+ if(self) {
+ _fleet = deck;
+
+ _fleetController = [NSObjectController new];
+ _fleetController.managedObjectContext = deck.managedObjectContext;
+ _fleetController.entityName = @"Deck";
+ _fleetController.fetchPredicate = [NSPredicate predicateWithFormat:@"id = %@", deck.id];
+ NSError *error = nil;
+ [_fleetController fetchWithRequest:nil merge:NO error:&error];
+ if(error) {
+ NSLog(@"%@", error);
+ }
+
+ [self.fleetController addObserver:self
+ forKeyPath:@"selection.ship_0"
+ options:0
+ context:@"0"];
+ [self.fleetController addObserver:self
+ forKeyPath:@"selection.ship_1"
+ options:0
+ context:@"1"];
+ [self.fleetController addObserver:self
+ forKeyPath:@"selection.ship_2"
+ options:0
+ context:@"2"];
+ [self.fleetController addObserver:self
+ forKeyPath:@"selection.ship_3"
+ options:0
+ context:@"3"];
+ [self.fleetController addObserver:self
+ forKeyPath:@"selection.ship_4"
+ options:0
+ context:@"4"];
+ [self.fleetController addObserver:self
+ forKeyPath:@"selection.ship_5"
+ options:0
+ context:@"5"];
+
+ [self buildMembers];
+
+ [self resetRepairTime];
+ }
+ return self;
+}
+
+- (void)dealloc
+{
+ NSArray *shipKeys = @[@"ship_0", @"ship_1", @"ship_2", @"ship_3", @"ship_4", @"ship_5"];
+ for (NSString *key in shipKeys) {
+ [_fleetController removeObserver:self
+ forKeyPath:[NSString stringWithFormat:@"selection.%@", key]];
+ }
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+ id contextObject = (__bridge id)(context);
+
+// if([contextObject isEqual:@"members"]) {
+//
+// return;
+// }
+ if([contextObject isKindOfClass:[NSString class]]) {
+
+ [self resetRepairTime];
+ [self buildMembers];
+ return;
+ }
+
+ [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
+}
+
+- (void)buildMembers
+{
+// NSString *observeKeyPath = @"arrangedObjects.equippedItem";
+//
+// [self.memberController removeObserver:self forKeyPath:observeKeyPath];
+//
+// NSArray *shipKeys = @[@"ship_0", @"ship_1", @"ship_2", @"ship_3", @"ship_4", @"ship_5"];
+// HMServerDataStore *store = [HMServerDataStore defaultManager];
+// NSMutableArray *array = [NSMutableArray new];
+// [shipKeys enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) {
+// id shipID = [_fleet valueForKey:key];
+// NSError *error = nil;
+// NSArray *ships = [store objectsWithEntityName:@"Ship"
+// error:&error
+// predicateFormat:@"id = %ld", [shipID integerValue]];
+// if(error) {
+// NSLog(@"%s error: %@", __PRETTY_FUNCTION__, error);
+// }
+// if(ships.count != 0) {
+// [array addObject:ships[0]];
+// }
+// }];
+// _members = array;
+// _memberController = [[NSArrayController alloc] initWithContent:array];
+// [self.memberController addObserver:self
+// forKeyPath:observeKeyPath
+// options:0
+// context:@"members"];
+}
+
+- (NSArray *)repairShipIds
+{
+ return @[@(19)];
+}
+- (NSArray *)repairSlotItemIds
+{
+ return @[@(31)];
+}
+- (BOOL)repairable
+{
+ HMKCShipObject *flagShip = self.fleet[0];
+ HMKCMasterShipObject *flagShipMaster = flagShip.master_ship;
+ id stype = flagShipMaster.stype;
+ id stypeId = [stype valueForKey:@"id"];
+ return [self.repairShipIds containsObject:stypeId];
+}
+
+- (NSNumber *)repairableShipCount
+{
+ if(![self repairable]) return @0;
+
+ NSUInteger count = 2;
+ HMKCShipObject *flagShip = self.fleet[0];
+ for(HMKCSlotItemObject *item in flagShip.equippedItem) {
+ if([self.repairSlotItemIds containsObject:item.master_slotItem.type_2]) {
+ count++;
+ }
+ }
+ return @(count);
+}
+
+- (void)resetRepairTime
+{
+ if(self.repairable) {
+ self.repairTime = [NSDate dateWithTimeIntervalSinceNow:0.0];
+ } else {
+ self.repairTime = nil;
+ }
+}
+
+
+@end