X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Target.m;h=493f94afbbaf6005958fbbe81a2547f20411b11f;hp=36da02126a8aff435624ffa0c4d3bb4726a5ab84;hb=1700c86669723045bf7abd177ca519f47656e995;hpb=15a3aec049658f4a1c3c6e8c9f8a549fb8de0782 diff --git a/Target.m b/Target.m index 36da021..493f94a 100644 --- a/Target.m +++ b/Target.m @@ -28,20 +28,29 @@ return nil; } +- (BOOL)isEqual:(id)object { + return [object isKindOfClass:Target.class] + && [[self serialize] isEqual:[object serialize]]; +} + +- (NSUInteger)hash { + return [[self serialize] hash]; +} + + (Target *)targetDeserialize:(NSDictionary *)serialization withConfigs:(NSArray *)configs { // Don't crash loading old configs (but don't load them either). - if (![serialization isKindOfClass:[NSDictionary class]]) + if (![serialization isKindOfClass:NSDictionary.class]) return nil; NSString *type = serialization[@"type"]; - for (Class cls in @[[TargetKeyboard class], - [TargetConfig class], - [TargetMouseMove class], - [TargetMouseBtn class], - [TargetMouseScroll class], - [TargetToggleMouseScope class] + for (Class cls in @[TargetKeyboard.class, + TargetConfig.class, + TargetMouseMove.class, + TargetMouseBtn.class, + TargetMouseScroll.class, + TargetToggleMouseScope.class ]) { - if ([type isEqualToString:[cls serializationCode]]) + if ([type isEqualToString:cls.serializationCode]) return [cls targetDeserialize:serialization withConfigs:configs]; }