This is BonusTracker.m in view mode; [Download] [Up]
#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
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.