From fbac7f7047f1b01c0f397a05ab660b9ad47bce01 Mon Sep 17 00:00:00 2001 From: masakih Date: Sun, 27 Nov 2016 00:11:54 +0900 Subject: [PATCH] =?utf8?q?=E5=9F=BA=E5=9C=B0=E8=88=AA=E7=A9=BA=E9=9A=8A?= =?utf8?q?=E3=81=AE=E8=A3=9C=E7=B5=A6=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KCD.xcodeproj/project.pbxproj | 6 ++++ KCD/HMAirCorpsSupplyCommand.h | 13 +++++++ KCD/HMAirCorpsSupplyCommand.m | 84 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 KCD/HMAirCorpsSupplyCommand.h create mode 100644 KCD/HMAirCorpsSupplyCommand.m diff --git a/KCD.xcodeproj/project.pbxproj b/KCD.xcodeproj/project.pbxproj index 71e7a173..0c2aa0c7 100644 --- a/KCD.xcodeproj/project.pbxproj +++ b/KCD.xcodeproj/project.pbxproj @@ -245,6 +245,7 @@ F4E7802B18DC3A820011BC4C /* HMLocalDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E7802A18DC3A820011BC4C /* HMLocalDataStore.m */; }; F4E7802E18DC3AF00011BC4C /* LocalData.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F4E7802C18DC3AF00011BC4C /* LocalData.xcdatamodeld */; }; F4E90B5E1DE713FF00643B5F /* HMSetPlaneCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E90B5D1DE713FF00643B5F /* HMSetPlaneCommand.m */; }; + F4E90B611DE8899F00643B5F /* HMAirCorpsSupplyCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E90B601DE8899F00643B5F /* HMAirCorpsSupplyCommand.m */; }; F4ECA36F1C6102FC0098AB6A /* HMMillisecondTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4ECA36E1C6102FC0098AB6A /* HMMillisecondTransformer.m */; }; F4ED5D2A1B78D0CA00D1BDEF /* HMGuardEscapedView.m in Sources */ = {isa = PBXBuildFile; fileRef = F4ED5D291B78D0CA00D1BDEF /* HMGuardEscapedView.m */; }; F4ED5D2D1B7C677E00D1BDEF /* HMGuardShelterCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4ED5D2C1B7C677E00D1BDEF /* HMGuardShelterCommand.m */; }; @@ -719,6 +720,8 @@ F4E7802D18DC3AF00011BC4C /* LocalData.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = LocalData.xcdatamodel; sourceTree = ""; }; F4E90B5C1DE713FF00643B5F /* HMSetPlaneCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSetPlaneCommand.h; sourceTree = ""; }; F4E90B5D1DE713FF00643B5F /* HMSetPlaneCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMSetPlaneCommand.m; sourceTree = ""; }; + F4E90B5F1DE8899F00643B5F /* HMAirCorpsSupplyCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMAirCorpsSupplyCommand.h; sourceTree = ""; }; + F4E90B601DE8899F00643B5F /* HMAirCorpsSupplyCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMAirCorpsSupplyCommand.m; sourceTree = ""; }; F4ECA36D1C6102FC0098AB6A /* HMMillisecondTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMillisecondTransformer.h; sourceTree = ""; }; F4ECA36E1C6102FC0098AB6A /* HMMillisecondTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMillisecondTransformer.m; sourceTree = ""; }; F4ED5D281B78D0CA00D1BDEF /* HMGuardEscapedView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMGuardEscapedView.h; sourceTree = ""; }; @@ -1443,6 +1446,8 @@ F48F7B011907D7B800E78AE1 /* HMPortCommand.m */, F499E88E1B5D4E7F00189029 /* HMPortNotifyCommand.h */, F499E88F1B5D4E7F00189029 /* HMPortNotifyCommand.m */, + F4E90B5F1DE8899F00643B5F /* HMAirCorpsSupplyCommand.h */, + F4E90B601DE8899F00643B5F /* HMAirCorpsSupplyCommand.m */, ); name = Command; sourceTree = ""; @@ -1944,6 +1949,7 @@ F4D6BC551A93903E00742FEB /* HMDropShipHistory.m in Sources */, F4131EE91911445F004F7F9A /* HMSlotItemEquipTypeTransformer.m in Sources */, F402D5371BE3AFAB008D5881 /* HMSlotResetCommand.m in Sources */, + F4E90B611DE8899F00643B5F /* HMAirCorpsSupplyCommand.m in Sources */, F4BDEB5A187252F30069D0CE /* HMAppDelegate.m in Sources */, F4A9E8091D045C3000F91746 /* HMScreenshotEditorViewController.m in Sources */, F4E7802B18DC3A820011BC4C /* HMLocalDataStore.m in Sources */, diff --git a/KCD/HMAirCorpsSupplyCommand.h b/KCD/HMAirCorpsSupplyCommand.h new file mode 100644 index 00000000..2536a638 --- /dev/null +++ b/KCD/HMAirCorpsSupplyCommand.h @@ -0,0 +1,13 @@ +// +// HMAirCorpsSupplyCommand.h +// KCD +// +// Created by Hori,Masaki on 2016/11/26. +// Copyright © 2016年 Hori,Masaki. All rights reserved. +// + +#import "HMJSONCommand.h" + +@interface HMAirCorpsSupplyCommand : HMJSONCommand + +@end diff --git a/KCD/HMAirCorpsSupplyCommand.m b/KCD/HMAirCorpsSupplyCommand.m new file mode 100644 index 00000000..e116bc73 --- /dev/null +++ b/KCD/HMAirCorpsSupplyCommand.m @@ -0,0 +1,84 @@ +// +// HMAirCorpsSupplyCommand.m +// KCD +// +// Created by Hori,Masaki on 2016/11/26. +// Copyright © 2016年 Hori,Masaki. All rights reserved. +// + +#import "HMAirCorpsSupplyCommand.h" + +#import "HMKCAirBase.h" +#import "HMKCAirBasePlaneInfo.h" +#import "HMKCMaterial.h" + +#import "HMServerDataStore.h" + + +@implementation HMAirCorpsSupplyCommand ++ (void)load +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [HMJSONCommand registerClass:self]; + }); +} + ++ (BOOL)canExcuteAPI:(NSString *)api +{ + if([api isEqualToString:@"/kcsapi/api_req_air_corps/supply"]) return YES; + return NO; +} + +- (void)execute +{ + HMServerDataStore *store = [HMServerDataStore oneTimeEditor]; + NSError *error = nil; + + NSString *areaId = self.arguments[@"api_area_id"]; + NSString *rId = self.arguments[@"api_base_id"]; + NSString *squadronIdsString = self.arguments[@"api_squadron_id"]; + NSArray *airBases = [store objectsWithEntityName:@"AirBase" + sortDescriptors:nil + error:&error + predicateFormat:@"area_id == %@ AND rid == %@", @(areaId.integerValue), @(rId.integerValue)]; + if(airBases.count == 0) { return; } + + HMKCAirBase *airBase = airBases[0]; + NSOrderedSet *planes = airBase.planeInfo; + + NSDictionary *json = self.json; + NSDictionary *data = json[@"api_data"]; + NSArray *planeInfos = data[@"api_plane_info"]; + if(planeInfos.count == 0) { return; } + + NSArray *squadronIds = [squadronIdsString componentsSeparatedByString:@","]; + NSLog(@"sq count -> %ld", squadronIds.count); + + [squadronIds enumerateObjectsUsingBlock:^(NSString * _Nonnull squadronId, NSUInteger idx, BOOL * _Nonnull stop) { + if(planes.count < squadronId.integerValue) { return; } + HMKCAirBasePlaneInfo *plane = planes[squadronId.integerValue - 1]; + + if(planeInfos.count <= idx) { return; } + NSDictionary *planeInfo = planeInfos[idx]; + + plane.count = planeInfo[@"api_cond"]; + plane.slotid = planeInfo[@"api_slotid"]; + plane.state = planeInfo[@"api_state"]; + plane.count = planeInfo[@"api_count"]; + plane.max_count = planeInfo[@"api_max_count"]; + }]; + + airBase.distance = data[@"api_distance"]; + + NSArray *materials = [store objectsWithEntityName:@"Material" + predicate:nil + error:&error]; + if(materials.count == 0) { return; } + + HMKCMaterial *material = materials[0]; + material.bauxite = data[@"api_after_bauxite"]; + material.fuel = data[@"api_after_fuel"]; +} + +@end -- 2.11.0