OSDN Git Service

基地航空隊の補給に対応
authormasakih <masakih@users.sourceforge.jp>
Sat, 26 Nov 2016 15:11:54 +0000 (00:11 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sat, 26 Nov 2016 15:11:54 +0000 (00:11 +0900)
KCD.xcodeproj/project.pbxproj
KCD/HMAirCorpsSupplyCommand.h [new file with mode: 0644]
KCD/HMAirCorpsSupplyCommand.m [new file with mode: 0644]

index 71e7a17..0c2aa0c 100644 (file)
                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 */; };
                F4E7802D18DC3AF00011BC4C /* LocalData.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = LocalData.xcdatamodel; sourceTree = "<group>"; };
                F4E90B5C1DE713FF00643B5F /* HMSetPlaneCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSetPlaneCommand.h; sourceTree = "<group>"; };
                F4E90B5D1DE713FF00643B5F /* HMSetPlaneCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMSetPlaneCommand.m; sourceTree = "<group>"; };
+               F4E90B5F1DE8899F00643B5F /* HMAirCorpsSupplyCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMAirCorpsSupplyCommand.h; sourceTree = "<group>"; };
+               F4E90B601DE8899F00643B5F /* HMAirCorpsSupplyCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMAirCorpsSupplyCommand.m; sourceTree = "<group>"; };
                F4ECA36D1C6102FC0098AB6A /* HMMillisecondTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMillisecondTransformer.h; sourceTree = "<group>"; };
                F4ECA36E1C6102FC0098AB6A /* HMMillisecondTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMillisecondTransformer.m; sourceTree = "<group>"; };
                F4ED5D281B78D0CA00D1BDEF /* HMGuardEscapedView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMGuardEscapedView.h; sourceTree = "<group>"; };
                                F48F7B011907D7B800E78AE1 /* HMPortCommand.m */,
                                F499E88E1B5D4E7F00189029 /* HMPortNotifyCommand.h */,
                                F499E88F1B5D4E7F00189029 /* HMPortNotifyCommand.m */,
+                               F4E90B5F1DE8899F00643B5F /* HMAirCorpsSupplyCommand.h */,
+                               F4E90B601DE8899F00643B5F /* HMAirCorpsSupplyCommand.m */,
                        );
                        name = Command;
                        sourceTree = "<group>";
                                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 (file)
index 0000000..2536a63
--- /dev/null
@@ -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 (file)
index 0000000..e116bc7
--- /dev/null
@@ -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