error:&error];
// TODO: error handling
- if(array.count != 6) {
+ NSInteger frendShipCount = 12;
+ if(array.count != frendShipCount) {
// Battleエンティティ取得
NSArray *battles = [self.store objectsWithEntityName:@"Battle"
predicate:nil
// Damage エンティティ作成6個
NSMutableArray *damages = [NSMutableArray new];
- for(NSInteger i = 0; i < 6; i++) {
+ for(NSInteger i = 0; i < frendShipCount; i++) {
id damage = [NSEntityDescription insertNewObjectForEntityForName:@"Damage"
inManagedObjectContext:moc];
[damage setValue:battle forKeyPath:@"battle"];
id hougeki1Damages = [self.json valueForKeyPath:damageKeyPath];
NSInteger i = 0;
+ NSInteger offset = self.calcSecondFleet ? 6 : 0;
for(NSArray *array in targetShips) {
if(![array isKindOfClass:[NSArray class]]) {
i++;
continue;
}
- id damageObject = [damages objectAtIndex:target - 1];
+ id damageObject = [damages objectAtIndex:target - 1 + offset];
NSInteger damage = [[[hougeki1Damages objectAtIndex:i] objectAtIndex:j] integerValue];
damage += [[damageObject valueForKey:@"damage"] integerValue];
[damageObject setValue:@(damage) forKeyPath:@"damage"];
{
id koukuDamage = [self.json valueForKeyPath:fdamKeyPath];
if(!koukuDamage || [koukuDamage isEqual:[NSNull null]]) return;
+
+ NSInteger offset = self.calcSecondFleet ? 6 : 0;
for(NSInteger i = 1; i <= 6; i++) {
- id damageObject = [damages objectAtIndex:i - 1];
+ id damageObject = [damages objectAtIndex:i - 1 + offset];
NSInteger damage = [[koukuDamage objectAtIndex:i] integerValue];
damage += [[damageObject valueForKey:@"damage"] integerValue];
[damageObject setValue:@(damage) forKeyPath:@"damage"];
error:&error];
// TODO: error handling
- if(damages.count != 6) {
+ if(damages.count != 12) {
NSLog(@"Damage is invalid. count %lxd", damages.count);
return;
}
return;
}
- // 艦隊メンバーを取得
HMServerDataStore *serverStore = [HMServerDataStore oneTimeEditor];
- NSArray *decks = [serverStore objectsWithEntityName:@"Deck"
- error:NULL
- predicateFormat:@"id = %@", [array[0] valueForKey:@"deckId"]];
- if(decks.count == 0) {
- NSLog(@"Deck is invalid. %s", __PRETTY_FUNCTION__);
- return;
- }
- id deck = decks[0];
- NSMutableArray *shipIds = [NSMutableArray new];
- [shipIds addObject:[deck valueForKey:@"ship_0"]];
- [shipIds addObject:[deck valueForKey:@"ship_1"]];
- [shipIds addObject:[deck valueForKey:@"ship_2"]];
- [shipIds addObject:[deck valueForKey:@"ship_3"]];
- [shipIds addObject:[deck valueForKey:@"ship_4"]];
- [shipIds addObject:[deck valueForKey:@"ship_5"]];
-
- NSMutableArray *ships = [NSMutableArray new];
- for(id shipId in shipIds) {
- NSArray *ship = [serverStore objectsWithEntityName:@"Ship"
- error:NULL
- predicateFormat:@"id = %@", @([shipId integerValue])];
- if(ship.count != 0 && ![ship[0] isEqual:[NSNull null]]) {
- [ships addObject:ship[0]];
+ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id = %@", [array[0] valueForKey:@"deckId"]];
+ BOOL firstRun = YES;
+ for(NSInteger i = 0; i < 2; i++) {
+ // 艦隊メンバーを取得
+ NSArray *decks = [serverStore objectsWithEntityName:@"Deck"
+ predicate:predicate
+ error:NULL];
+
+ if(decks.count == 0) {
+ NSLog(@"Deck is invalid. %s", __PRETTY_FUNCTION__);
+ return;
}
- }
-
- NSUInteger shipCount = ships.count;
- for(NSInteger i = 0; i < shipCount; i++) {
- id ship = ships[i];
- NSInteger damage = [[damages[i] valueForKey:@"damage"] integerValue];
- NSInteger nowhp = [[ship valueForKey:@"nowhp"] integerValue];
- nowhp -= damage;
- [ship setValue:@(nowhp) forKeyPath:@"nowhp"];
+ id deck = decks[0];
+ NSMutableArray *shipIds = [NSMutableArray new];
+ [shipIds addObject:[deck valueForKey:@"ship_0"]];
+ [shipIds addObject:[deck valueForKey:@"ship_1"]];
+ [shipIds addObject:[deck valueForKey:@"ship_2"]];
+ [shipIds addObject:[deck valueForKey:@"ship_3"]];
+ [shipIds addObject:[deck valueForKey:@"ship_4"]];
+ [shipIds addObject:[deck valueForKey:@"ship_5"]];
+
+ NSMutableArray *ships = [NSMutableArray new];
+ for(id shipId in shipIds) {
+ NSArray *ship = [serverStore objectsWithEntityName:@"Ship"
+ error:NULL
+ predicateFormat:@"id = %@", @([shipId integerValue])];
+ if(ship.count != 0 && ![ship[0] isEqual:[NSNull null]]) {
+ [ships addObject:ship[0]];
+ }
+ }
+
+ NSUInteger shipCount = ships.count;
+ NSUInteger offset = (self.calcSecondFleet && !firstRun) ? 6 : 0;
+ for(NSInteger i = 0; i < shipCount; i++) {
+ id ship = ships[i];
+ NSInteger damage = [[damages[i + offset] valueForKey:@"damage"] integerValue];
+ NSInteger nowhp = [[ship valueForKey:@"nowhp"] integerValue];
+ nowhp -= damage;
+ [ship setValue:@(nowhp) forKeyPath:@"nowhp"];
+ }
+ if(!self.calcSecondFleet) {
+ NSLog(@"Not combined.");
+ break;
+ }
+
+ predicate = [NSPredicate predicateWithFormat:@"id = %@", @2];
+ firstRun = NO;
}
[serverStore saveAction:nil];
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="5064" systemVersion="13C1021" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
+<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="5064" systemVersion="13E28" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
<entity name="Battle" syncable="YES">
<attribute name="deckId" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
<attribute name="mapArea" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
<attribute name="mapInfo" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
- <relationship name="damages" optional="YES" toMany="YES" maxCount="6" deletionRule="Cascade" ordered="YES" destinationEntity="Damage" inverseName="battle" inverseEntity="Damage" syncable="YES"/>
+ <relationship name="damages" optional="YES" toMany="YES" maxCount="12" deletionRule="Cascade" ordered="YES" destinationEntity="Damage" inverseName="battle" inverseEntity="Damage" syncable="YES"/>
</entity>
<entity name="Damage" syncable="YES">
- <attribute name="damage" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
- <attribute name="id" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
+ <attribute name="damage" optional="YES" attributeType="Float" defaultValueString="0" syncable="YES"/>
+ <attribute name="id" optional="YES" attributeType="Float" defaultValueString="0" syncable="YES"/>
<relationship name="battle" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Battle" inverseName="damages" inverseEntity="Battle" syncable="YES"/>
</entity>
<elements>
- <element name="Battle" positionX="-63" positionY="-18" width="128" height="103"/>
- <element name="Damage" positionX="-54" positionY="18" width="128" height="88"/>
+ <element name="Battle" positionX="-63" positionY="-18" width="128" height="105"/>
+ <element name="Damage" positionX="-54" positionY="18" width="128" height="90"/>
</elements>
</model>
\ No newline at end of file