home *** CD-ROM | disk | FTP | other *** search
-
- #import <gamekit/gamekit.h>
- #import <ansi/math.h>
-
- #define PUTINBOUNDS if (value < min) value = min; \
- if (value > max) value = max
-
- @implementation BonusTracker
-
- - init
- {
- [super init];
- min = 0;
- increment = 0;
- multiplier = 1;
- baseValue = 0;
- max = MAXINT;
- [self resetBonus];
- return self;
- }
-
- - (int)bonusValue
- {
- return value;
- }
-
- - setBaseValue:(int)newValue
- {
- baseValue = newValue;
- return self;
- }
-
- - setMultiplier:(int)newMultiplier
- {
- multiplier = newMultiplier;
- return self;
- }
-
- - setIncrement:(int)newIncrement
- {
- increment = newIncrement;
- return self;
- }
-
- - setMin:(int)newMin max:(int)newMax
- {
- min = newMin; max = newMax;
- PUTINBOUNDS;
- return self;
- }
-
- - resetBonus
- {
- value = baseValue;
- return self;
- }
-
- - advanceBonus // move to the next bonus value.
- {
- value *= multiplier;
- value += increment;
- PUTINBOUNDS;
- return self;
- }
-
- - retreatBonus // inverse of above method.
- {
- value -= increment;
- // avoid divide by zero...
- if (multiplier) value /= multiplier;
- PUTINBOUNDS;
- return self;
- }
-
-
- @end
-