From: masakih Date: Sun, 2 Aug 2015 14:44:08 +0000 (+0900) Subject: 泊地修理タイマーがおかしかったので直した X-Git-Tag: 1.3beta8~4 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=bb8081bfc2149c79d91045bffad6bca90cfc8e16;p=kcd%2FKCD.git 泊地修理タイマーがおかしかったので直した 関係のない艦隊の編成を変えただけでリセットが掛かるようになっていた 関係のない艦隊でタイマーが表示されていた --- diff --git a/KCD/HMAnchorageRepairManager.m b/KCD/HMAnchorageRepairManager.m index 9a0e3e04..9633c579 100644 --- a/KCD/HMAnchorageRepairManager.m +++ b/KCD/HMAnchorageRepairManager.m @@ -25,6 +25,7 @@ @property (strong) NSDate *repairTime; @property (strong) HMKCDeck* fleet; +@property (strong) NSNumber *deckID; @property (strong) NSArray *members; @property (strong) NSObjectController *fleetController; @@ -34,11 +35,22 @@ @implementation HMAnchorageRepairManager +static NSMutableArray *sRepairableDeckIDs; + ++ (void)initialize +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sRepairableDeckIDs = [NSMutableArray new]; + }); +} + - (instancetype)initWithDeck:(HMKCDeck *)deck { self = [super init]; if(self) { _fleet = deck; + _deckID = _fleet.id; _fleetController = [NSObjectController new]; _fleetController.managedObjectContext = deck.managedObjectContext; @@ -52,7 +64,7 @@ [self.fleetController addObserver:self forKeyPath:@"selection.ship_0" - options:0 + options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@"0"]; [self.fleetController addObserver:self forKeyPath:@"selection.ship_1" @@ -99,6 +111,8 @@ - (NSDate *)repairTime { + if(!self.repairable) return nil; + return HMStandardDefaults.repairTime;; } - (void)setRepairTime:(NSDate *)repairTime @@ -177,7 +191,13 @@ HMKCMasterShipObject *flagShipMaster = flagShip.master_ship; id stype = flagShipMaster.stype; id stypeId = [stype valueForKey:@"id"]; - return [self.repairShipIds containsObject:stypeId]; + BOOL result = [self.repairShipIds containsObject:stypeId]; + if(!result && [sRepairableDeckIDs containsObject:self.deckID]) { + [sRepairableDeckIDs removeObject:self.deckID]; + } else if(result && ![sRepairableDeckIDs containsObject:self.deckID]) { + [sRepairableDeckIDs addObject:self.deckID]; + } + return result; } - (NSNumber *)repairableShipCount @@ -196,6 +216,9 @@ - (void)resetRepairTime { + BOOL prevRepairable = [sRepairableDeckIDs containsObject:self.deckID]; + if(!prevRepairable && !self.repairable) return; + if(self.repairable) { self.repairTime = [NSDate dateWithTimeIntervalSinceNow:0.0]; } else {