From 1701579905626eb3ca23c39ae616e687b172a9a2 Mon Sep 17 00:00:00 2001 From: masakih Date: Sun, 20 Mar 2016 14:49:22 +0900 Subject: [PATCH] =?utf8?q?=E8=89=A6=E9=9A=8A=E3=81=AB=E7=B7=A8=E6=88=90?= =?utf8?q?=E4=B8=AD=E3=81=AE=E8=89=A6=E5=A8=98=E3=82=92=E8=A7=A3=E4=BD=93?= =?utf8?q?=E3=81=99=E3=82=8B=E3=81=A8=E8=90=BD=E3=81=A1=E3=82=8B=E5=8F=AF?= =?utf8?q?=E8=83=BD=E6=80=A7=E3=81=8B=E3=82=99=E3=81=82=E3=82=8B=E5=95=8F?= =?utf8?q?=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KCD.xcodeproj/project.pbxproj | 4 +- KCD/HMFleet.m | 189 ++++++++++++++----------- KCD/ja.lproj/HMFleetMinimumViewController.xib | 21 +-- KCD/ja.lproj/HMFleetViewController.xib | 25 ++-- KCD/ja.lproj/HMVerticalFleetViewController.xib | 7 +- 5 files changed, 144 insertions(+), 102 deletions(-) diff --git a/KCD.xcodeproj/project.pbxproj b/KCD.xcodeproj/project.pbxproj index 0416853e..00b0dacd 100644 --- a/KCD.xcodeproj/project.pbxproj +++ b/KCD.xcodeproj/project.pbxproj @@ -872,6 +872,8 @@ F4F9F8A51C78596900D0EE76 /* HMAnchorageRepairManager.m */, F448F9901B6FBF80004901AD /* HMResourceHistoryManager.h */, F448F9911B6FBF80004901AD /* HMResourceHistoryManager.m */, + F4F9F8991C6CB7D400D0EE76 /* HMFleet.h */, + F4F9F89A1C6CB7D400D0EE76 /* HMFleet.m */, F4F9F8A11C70AFB600D0EE76 /* HMFleetManager.h */, F4F9F8A21C70AFB600D0EE76 /* HMFleetManager.m */, F4D2CBBF18ACE7D7000EBC59 /* Command */, @@ -1383,8 +1385,6 @@ F4D6BC991AA1FAC600742FEB /* HMUITestWindowController.h */, F4D6BC9A1AA1FAC600742FEB /* HMUITestWindowController.m */, F4BEF0101B11A645004702B8 /* HMUITestWindowController.xib */, - F4F9F8991C6CB7D400D0EE76 /* HMFleet.h */, - F4F9F89A1C6CB7D400D0EE76 /* HMFleet.m */, F4F9F89C1C6CBFF400D0EE76 /* HMFleetTestViewController.h */, F4F9F89D1C6CBFF400D0EE76 /* HMFleetTestViewController.m */, F4F9F89E1C6CBFF400D0EE76 /* HMFleetTestViewController.xib */, diff --git a/KCD/HMFleet.m b/KCD/HMFleet.m index 15bd73b0..17a081e9 100644 --- a/KCD/HMFleet.m +++ b/KCD/HMFleet.m @@ -18,6 +18,11 @@ @property (strong) NSObjectController *deckController; @property (weak) HMKCDeck *deck; +@property (readonly) NSArray *deckObserveKeys; + +@property (strong) NSArray *ships; +@property (readonly) NSArray *shipObserveKeys; + @end @implementation HMFleet @@ -47,21 +52,120 @@ error:NULL]; self.deck = _deckController.content; + for(NSString *key in self.deckObserveKeys) { + [_deckController addObserver:self + forKeyPath:key + options:0 + context:(__bridge void * _Nullable)(_deck)]; + } } return self; } +- (void)dealloc +{ + for(NSString *key in self.deckObserveKeys) { + [_deckController removeObserver:self forKeyPath:key]; + } + for(HMKCShipObject *ship in _ships) { + for(NSString *key in self.shipObserveKeys) { + [ship removeObserver:self forKeyPath:key]; + } + } +} - (instancetype)self { return self; } +- (NSArray *)deckObserveKeys +{ + return [NSArray arrayWithObjects: + @"selection.ship_0", + @"selection.ship_1", + @"selection.ship_2", + @"selection.ship_3", + @"selection.ship_4", + @"selection.ship_5", + nil]; +} +-(NSArray *)shipObserveKeys +{ + return [NSArray arrayWithObjects: + @"sakuteki_0", + @"seiku", + @"lv", + @"totalDrums", + nil]; +} + - (HMKCShipObject *)objectAtIndexedSubscript:(NSUInteger)idx { return self.deck[idx]; } +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + id obj = (__bridge id)(context); + if(obj == _deck) { + + for(HMKCShipObject *ship in _ships) { + for(NSString *key in self.shipObserveKeys) { + [ship removeObserver:self forKeyPath:key]; + } + } + + NSMutableArray *result = [NSMutableArray array]; + + for(NSUInteger i = 0; i < 6; i++) { + HMKCShipObject *ship = self[i]; + if(ship) { + [result addObject:ship]; + } + } + self.ships = result; + + + for(HMKCShipObject *ship in _ships) { + for(NSString *key in self.shipObserveKeys) { + [ship addObserver:self + forKeyPath:key + options:0 + context:(__bridge void * _Nullable)(_ships)]; + } + } + + return; + } + + if(obj == _ships) { + if([keyPath isEqualToString:@"sakuteki_0"]) { + [self willChangeValueForKey:@"totalSakuteki"]; + [self didChangeValueForKey:@"totalSakuteki"]; + } + if([keyPath isEqualToString:@"seiku"]) { + [self willChangeValueForKey:@"totalSeiku"]; + [self didChangeValueForKey:@"totalSeiku"]; + + [self willChangeValueForKey:@"totalCalclatedSeiku"]; + [self didChangeValueForKey:@"totalCalclatedSeiku"]; + } + if([keyPath isEqualToString:@"lv"]) { + [self willChangeValueForKey:@"totalLevel"]; + [self didChangeValueForKey:@"totalLevel"]; + } + if([keyPath isEqualToString:@"totalDrums"]) { + [self willChangeValueForKey:@"totalDrums"]; + [self didChangeValueForKey:@"totalDrums"]; + } + + return; + } + + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; +} + + (NSSet *)keyPathsForValuesAffectingFlagShip { return [NSSet setWithObject:@"deck.ship_0"]; @@ -111,31 +215,6 @@ return self[5]; } -+ (NSSet *)keyPathsForValuesAffectingShips -{ - return [NSSet setWithObjects: - @"deck", - @"deck.ship_0", - @"deck.ship_1", - @"deck.ship_2", - @"deck.ship_3", - @"deck.ship_4", - @"deck.ship_5", - nil]; -} -- (NSArray *)ships -{ - NSMutableArray *result = [NSMutableArray array]; - - for(NSUInteger i = 0; i < 6; i++) { - HMKCShipObject *ship = self[i]; - if(ship) { - [result addObject:ship]; - } - } - return result; -} - + (NSSet *)keyPathsForValuesAffectingName { return [NSSet setWithObject:@"deck.name"]; @@ -147,7 +226,7 @@ return name; } - +(NSSet *)keyPathsForValuesAffectingId ++ (NSSet *)keyPathsForValuesAffectingId { return [NSSet setWithObject:@"deck.id"]; } @@ -156,17 +235,6 @@ return self.deck.id; } -+ (NSSet *)keyPathsForValuesAffectingTotalSakuteki -{ - return [NSSet setWithObjects: - @"flagShip.sakuteki_0", - @"secondShip.sakuteki_0", - @"thirdShip.sakuteki_0", - @"fourthShip.sakuteki_0", - @"fifthShip.sakuteki_0", - @"sixthShip.sakuteki_0", - nil]; -} - (NSNumber *)totalSakuteki { NSInteger total = 0; @@ -177,17 +245,6 @@ return @(total); } -+ (NSSet *)keyPathsForValuesAffectingTotalSeiku -{ - return [NSSet setWithObjects: - @"flagShip.seiku", - @"secondShip.seiku", - @"thirdShip.seiku", - @"fourthShip.seiku", - @"fifthShip.seiku", - @"sixthShip.seiku", - nil]; -} - (NSNumber *)totalSeiku { NSInteger total = 0; @@ -197,17 +254,7 @@ } return @(total); } -+ (NSSet *)keyPathsForValuesAffectingTotalCalclatedSeiku -{ - return [NSSet setWithObjects: - @"flagShip.seiku", - @"secondShip.seiku", - @"thirdShip.seiku", - @"fourthShip.seiku", - @"fifthShip.seiku", - @"sixthShip.seiku", - nil]; -} + - (NSNumber *)totalCalclatedSeiku { NSInteger total = 0; @@ -218,17 +265,7 @@ } return @(total); } -+ (NSSet *)keyPathsForValuesAffectingTotalLevel -{ - return [NSSet setWithObjects: - @"flagShip.lv", - @"secondShip.lv", - @"thirdShip.lv", - @"fourthShip.lv", - @"fifthShip.lv", - @"sixthShip.lv", - nil]; -} + - (NSNumber *)totalLevel { NSInteger total = 0; @@ -238,17 +275,7 @@ } return @(total); } -+ (NSSet *)keyPathsForValuesAffectingTotalDrums -{ - return [NSSet setWithObjects: - @"flagShip.totalDrums", - @"secondShip.totalDrums", - @"thirdShip.totalDrums", - @"fourthShip.totalDrums", - @"fifthShip.totalDrums", - @"sixthShip.totalDrums", - nil]; -} + - (NSNumber *)totalDrums { NSInteger total = 0; diff --git a/KCD/ja.lproj/HMFleetMinimumViewController.xib b/KCD/ja.lproj/HMFleetMinimumViewController.xib index f271fb6c..529f7692 100644 --- a/KCD/ja.lproj/HMFleetMinimumViewController.xib +++ b/KCD/ja.lproj/HMFleetMinimumViewController.xib @@ -32,7 +32,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -100,7 +100,7 @@ - + 【 %{value1}@ 】 @@ -140,7 +140,7 @@ - + @@ -154,12 +154,12 @@ - NSNegateBoolean + @@ -188,7 +188,7 @@ - + (%{value1}@) @@ -206,7 +206,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -244,5 +244,10 @@ + + + + + diff --git a/KCD/ja.lproj/HMFleetViewController.xib b/KCD/ja.lproj/HMFleetViewController.xib index fd5613f9..66d9d353 100644 --- a/KCD/ja.lproj/HMFleetViewController.xib +++ b/KCD/ja.lproj/HMFleetViewController.xib @@ -77,7 +77,7 @@ - + @@ -89,7 +89,7 @@ - + 【 %{value1}@ 】 @@ -116,7 +116,7 @@ - + @@ -138,12 +138,12 @@ - + %{value1}@ (%{value2}@) - + %{value1}@ (%{value2}@) @@ -165,12 +165,12 @@ - - + NSNegateBoolean + @@ -182,7 +182,7 @@ - + NSNegateBoolean @@ -209,7 +209,7 @@ - + @@ -232,11 +232,16 @@ - + + + + + + diff --git a/KCD/ja.lproj/HMVerticalFleetViewController.xib b/KCD/ja.lproj/HMVerticalFleetViewController.xib index 27d94da4..8616a377 100644 --- a/KCD/ja.lproj/HMVerticalFleetViewController.xib +++ b/KCD/ja.lproj/HMVerticalFleetViewController.xib @@ -47,7 +47,7 @@ - + 【 %{value1}@ 】 @@ -57,5 +57,10 @@ + + + + + -- 2.11.0