F46F104118A9B85E0063E503 /* HMJSONNode.m in Sources */ = {isa = PBXBuildFile; fileRef = F46F104018A9B85E0063E503 /* HMJSONNode.m */; };
F46F104518AA50730063E503 /* HMBroserWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F46F104318AA50730063E503 /* HMBroserWindowController.m */; };
F46F104918ABAC910063E503 /* KCD.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F46F104718ABAC910063E503 /* KCD.xcdatamodeld */; };
+ F46FCB291BD933C600304DE7 /* HMSlotItemShortNameTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F46FCB281BD933C600304DE7 /* HMSlotItemShortNameTransformer.m */; };
F47178471B6DE9F400F5E59D /* HMMapAreaTransformaer.m in Sources */ = {isa = PBXBuildFile; fileRef = F47178461B6DE9F400F5E59D /* HMMapAreaTransformaer.m */; };
F471784A1B6F9B5600F5E59D /* ResourceHistory.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F47178481B6F9B5600F5E59D /* ResourceHistory.xcdatamodeld */; };
F471784D1B6FA18800F5E59D /* HMKCResource.m in Sources */ = {isa = PBXBuildFile; fileRef = F471784C1B6FA18800F5E59D /* HMKCResource.m */; };
F46F104218AA50730063E503 /* HMBroserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMBroserWindowController.h; sourceTree = "<group>"; };
F46F104318AA50730063E503 /* HMBroserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMBroserWindowController.m; sourceTree = "<group>"; };
F46F104818ABAC910063E503 /* KCD.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = KCD.xcdatamodel; sourceTree = "<group>"; };
+ F46FCB271BD933C600304DE7 /* HMSlotItemShortNameTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSlotItemShortNameTransformer.h; sourceTree = "<group>"; };
+ F46FCB281BD933C600304DE7 /* HMSlotItemShortNameTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMSlotItemShortNameTransformer.m; sourceTree = "<group>"; };
F47178451B6DE9F400F5E59D /* HMMapAreaTransformaer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMapAreaTransformaer.h; sourceTree = "<group>"; };
F47178461B6DE9F400F5E59D /* HMMapAreaTransformaer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMapAreaTransformaer.m; sourceTree = "<group>"; };
F47178491B6F9B5600F5E59D /* ResourceHistory.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = ResourceHistory.xcdatamodel; sourceTree = "<group>"; };
F4D6BCAF1AA2A97200742FEB /* HMLengTransformer.m */,
F4D6BCB11AA2B18100742FEB /* HMSlotitemNameTransformer.h */,
F4D6BCB21AA2B18100742FEB /* HMSlotitemNameTransformer.m */,
+ F46FCB271BD933C600304DE7 /* HMSlotItemShortNameTransformer.h */,
+ F46FCB281BD933C600304DE7 /* HMSlotItemShortNameTransformer.m */,
F4D6BCB41AA2C10700742FEB /* HMHideEquipNumberTransformer.h */,
F4D6BCB51AA2C10700742FEB /* HMHideEquipNumberTransformer.m */,
F4666C5C1B242124001840DB /* HMQuestProgressTransformer.h */,
F4131ED5190F63D8004F7F9A /* HMUpdateSlotItemCommand.m in Sources */,
F4C1190518A71AEA005D5B25 /* HMJSONReciever.m in Sources */,
F44AB24119E8252600F217AF /* HMKCSlotItemObject+Extensions.m in Sources */,
+ F46FCB291BD933C600304DE7 /* HMSlotItemShortNameTransformer.m in Sources */,
F4A3AD82199F529700FDBF80 /* HMCombinedBattleCommand.m in Sources */,
F4AA05FE192B932E00844688 /* HMTemporaryDataStore.m in Sources */,
F4B37EFD19FC8D98002F371A /* HMUpgradableShipsWindowController.m in Sources */,
--- /dev/null
+//
+// HMSlotItemShortNameTransformer.m
+// KCD
+//
+// Created by Hori,Masaki on 2015/10/23.
+// Copyright (c) 2015年 Hori,Masaki. All rights reserved.
+//
+
+#import "HMSlotItemShortNameTransformer.h"
+
+#import "HMServerDataStore.h"
+
+#import "HMKCSlotItemObject+Extensions.h"
+#import "HMKCMasterSlotItemObject.h"
+
+static NSDictionary *slotItemShortName = nil;
+
+@implementation HMSlotItemShortNameTransformer
++ (void)load
+{
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ [NSValueTransformer setValueTransformer:[self new] forName:@"HMSlotItemShortNameTransformer"];
+
+ NSBundle *mainBundle = [NSBundle mainBundle];
+ NSString *path = [mainBundle pathForResource:@"SlotItemShortName" ofType:@"plist"];
+ if(!path) {
+ NSLog(@"Could not find SlotItemShortName.plist");
+ NSBeep();
+ return;
+ }
+ id dict = [NSDictionary dictionaryWithContentsOfFile:path];
+ if(!dict) {
+ NSLog(@"SlotItemShortName.plist is not dictionay.");
+ NSBeep();
+ return;
+ }
+ slotItemShortName = dict;
+ });
+}
+
++ (Class)transformedValueClass
+{
+ return [NSString class];
+}
++ (BOOL)allowsReverseTransformation
+{
+ return NO;
+}
+
+- (id)transformedValue:(id)value
+{
+ if(![value isKindOfClass:[NSNumber class]]) return nil;
+ NSInteger slotItemID = [value integerValue];
+ if(slotItemID == -1) return nil;
+ if(slotItemID == 0) return nil;
+
+ HMServerDataStore *store = [HMServerDataStore defaultManager];
+
+ NSError *error = nil;
+ NSArray *array = [store objectsWithEntityName:@"SlotItem"
+ error:&error
+ predicateFormat:@"id = %@", value];
+ if([array count] == 0) {
+ NSLog(@"SlotItem is invalid.");
+ return nil;
+ }
+
+ HMKCSlotItemObject *slotItem = array[0];
+ NSString *mstIDString = [slotItem.master_slotItem.id stringValue];
+ NSString *shortName = slotItemShortName[mstIDString];
+ if(shortName) return shortName;
+
+ return [slotItem.name copy];
+}
+@end