Automatically trigger/untrigger targets based on setting the 'running' property;...
[enjoyable.git] / Target.m
1 //
2 // Target.m
3 // Enjoy
4 //
5 // Created by Sam McCall on 5/05/09.
6 //
7
8 @implementation Target {
9 BOOL running;
10 }
11
12 @synthesize magnitude;
13
14 // TODO: Should just be NSCoding? Or like a dictionary?
15 +(Target*) unstringify: (NSString*) str withConfigList: (NSArray*) configs {
16 NSArray* components = [str componentsSeparatedByString:@"~"];
17 NSParameterAssert([components count]);
18 NSString* typeTag = components[0];
19 if([typeTag isEqualToString:@"key"])
20 return [TargetKeyboard unstringifyImpl:components];
21 if([typeTag isEqualToString:@"cfg"])
22 return [TargetConfig unstringifyImpl:components withConfigList:configs];
23 if([typeTag isEqualToString:@"mmove"])
24 return [TargetMouseMove unstringifyImpl:components];
25 if([typeTag isEqualToString:@"mbtn"])
26 return [TargetMouseBtn unstringifyImpl:components];
27 if([typeTag isEqualToString:@"mscroll"])
28 return [TargetMouseScroll unstringifyImpl:components];
29 if([typeTag isEqualToString:@"mtoggle"])
30 return [TargetToggleMouseScope unstringifyImpl:components];
31
32 NSParameterAssert(NO);
33 return NULL;
34 }
35
36 - (NSString *)stringify {
37 [self doesNotRecognizeSelector:_cmd];
38 return NULL;
39 }
40
41 - (void)trigger {
42 }
43
44 - (void)untrigger {
45 }
46
47 - (BOOL)update:(JoystickController *)jc {
48 return NO;
49 }
50
51 - (BOOL)isContinuous {
52 return NO;
53 }
54
55 - (BOOL)running {
56 return running;
57 }
58
59 - (void)setRunning:(BOOL)newRunning {
60 if (running != newRunning) {
61 running = newRunning;
62 if (running)
63 [self trigger];
64 else
65 [self untrigger];
66 }
67 }
68
69
70 @end