3 * The Cheat - The legendary universal game trainer for Mac OS X.
4 * http://www.brokenzipper.com/trac/wiki/TheCheat
6 * Copyright (c) 2003-2011, Charles McGarvey et al.
8 * Distributable under the terms and conditions of the 2-clause BSD
9 * license; see the file COPYING for the legal text of the license.
15 @implementation CheatData
18 // #############################################################################
19 #pragma mark Initialization
20 // #############################################################################
24 if ( self = [super init
] )
27 [self setWindowTitle
:@
""];
28 [self setCheatInfo
:@
""];
29 [self setProcess
:[[[Process alloc
] initWithName
:@
"No Target Set" version
:@
""] autorelease
]];
32 myRepeatInterval
= 5.0;
35 myVariables
= [[NSMutableArray alloc
] init
];
43 [myWindowTitle release
];
44 [myCheatInfo release
];
46 [myVariables release
];
52 // #############################################################################
54 // #############################################################################
56 - (id)initWithCoder
:(NSCoder
*)coder
58 if ( self = [super init
] )
60 [self setWindowTitle
:[coder decodeObject
]];
61 [self setCheatInfo
:[coder decodeObject
]];
62 [self setProcess
:[coder decodeObject
]];
63 myVariables
= [[coder decodeObject
] retain
];
64 [coder decodeValueOfObjCType
:@encode(BOOL) at
:&myRepeats
];
65 [coder decodeValueOfObjCType
:@encode(NSTimeInterval
) at
:&myRepeatInterval
];
70 - (void)encodeWithCoder
:(NSCoder
*)coder
72 [coder encodeObject
:myWindowTitle
];
73 [coder encodeObject
:myCheatInfo
];
74 [coder encodeObject
:myProcess
];
75 [coder encodeObject
:myVariables
];
76 [coder encodeValueOfObjCType
:@encode(BOOL) at
:&myRepeats
];
77 [coder encodeValueOfObjCType
:@encode(NSTimeInterval
) at
:&myRepeatInterval
];
81 // #############################################################################
82 #pragma mark Accessing Properties
83 // #############################################################################
86 - (NSString
*)windowTitle
91 - (NSString
*)cheatInfo
96 - (NSString
*)gameName
98 return [myProcess name
];
101 - (NSString
*)gameVersion
103 return [myProcess version
];
116 - (NSTimeInterval
)repeatInterval
118 return myRepeatInterval
;
122 - (void)setWindowTitle
:(NSString
*)title
125 title
= [NSString stringWithString
:@
""];
128 [myWindowTitle release
];
129 myWindowTitle
= title
;
132 - (void)setCheatInfo
:(NSString
*)info
135 info
= [NSString stringWithString
:@
"Description not provided."];
138 [myCheatInfo release
];
142 - (void)setProcess
:(Process
*)process
149 - (void)setRepeats
:(BOOL)repeats
154 - (void)setRepeatInterval
:(NSTimeInterval
)interval
156 myRepeatInterval
= interval
;
160 // #############################################################################
161 #pragma mark Variables
162 // #############################################################################
164 - (NSArray
*)variables
166 return [NSArray arrayWithArray
:myVariables
];
169 - (unsigned)variableCount
171 return [myVariables count
];
174 - (unsigned)indexOfVariable
:(Variable
*)variable
176 return [myVariables indexOfObject
:variable
];
179 - (Variable
*)variableAtIndex
:(unsigned)index
181 return [myVariables objectAtIndex
:index
];
184 - (Variable
*)lastVariable
186 return [myVariables lastObject
];
190 - (void)addVariable
:(Variable
*)variable
192 [myVariables addObject
:variable
];
195 - (void)insertVariable
:(Variable
*)variable atIndex
:(unsigned)index
197 [myVariables insertObject
:variable atIndex
:index
];
201 - (void)removeAllVariables
203 [myVariables removeAllObjects
];
206 - (void)removeVariable
:(Variable
*)variable
208 [myVariables removeObject
:variable
];
211 - (void)removeVariableAtIndex
:(unsigned)index
213 [myVariables removeObjectAtIndex
:index
];
217 - (NSArray
*)enabledVariables
219 NSMutableArray
*vars
;
222 top
= [myVariables count
];
223 vars
= [[NSMutableArray alloc
] init
];
225 for ( i
= 0; i
< top
; i
++ ) {
226 Variable
*var
= [myVariables objectAtIndex
:i
];
227 if ( [var isEnabled
] ) {
228 [vars addObject
:var
];
231 return [vars autorelease
];
234 - (unsigned)enabledVariableCount
236 return [[self enabledVariables
] count
];