This is Continent.m in view mode; [Download] [Up]
//
// This file is a part of Risk by Mike Ferris.
//
#import "Risk.h"
RCSID ("$Id: Continent.m,v 1.1.1.1 1997/12/09 07:18:53 nygard Exp $");
#import "Continent.h"
#import "NSObjectExtensions.h"
#import "Country.h"
#define Continent_VERSION 1
@implementation Continent
+ (void) initialize
{
if (self == [Continent class])
{
[self setVersion:Continent_VERSION];
}
}
//----------------------------------------------------------------------
+ continentWithName:(NSString *)aContinentName countries:(NSSet *)someCountries bonusValue:(int)bonus
{
return [[[Continent alloc] initWithName:aContinentName countries:someCountries bonusValue:bonus] autorelease];
}
//----------------------------------------------------------------------
- initWithName:(NSString *)aContinentName countries:(NSSet *)someCountries bonusValue:(int)bonus
{
if ([super init] == nil)
return nil;
continentName = [aContinentName retain];
countries = [someCountries retain];
continentBonus = bonus;
return self;
}
//----------------------------------------------------------------------
- (void) dealloc
{
SNRelease (continentName);
SNRelease (countries);
[super dealloc];
}
//----------------------------------------------------------------------
- (void) encodeWithCoder:(NSCoder *)aCoder
{
[super encodeWithCoder:aCoder];
[aCoder encodeObject:continentName];
[aCoder encodeObject:countries];
[aCoder encodeValueOfObjCType:@encode (int) at:&continentBonus];
}
//----------------------------------------------------------------------
- initWithCoder:(NSCoder *)aDecoder
{
if ([super initWithCoder:aDecoder] == nil)
return nil;
continentName = [[aDecoder decodeObject] retain];
countries = [[aDecoder decodeObject] retain];
[aDecoder decodeValueOfObjCType:@encode (int) at:&continentBonus];
return self;
}
//----------------------------------------------------------------------
- (NSString *) continentName
{
return continentName;
}
//----------------------------------------------------------------------
- (NSSet *) countries
{
return countries;
}
//----------------------------------------------------------------------
- (int) continentBonus
{
return continentBonus;
}
//----------------------------------------------------------------------
- (NSString *) description
{
return [NSString stringWithFormat:@"<Continent: name = %@, bonus = %d, countries = %@",
continentName, continentBonus, countries];
}
//----------------------------------------------------------------------
- (int) bonusArmiesForPlayer:(Player)number
{
NSEnumerator *countryEnumerator;
Country *country;
BOOL flag;
int bonus;
flag = YES;
countryEnumerator = [countries objectEnumerator];
while (country = [countryEnumerator nextObject])
{
if ([country playerNumber] != number)
{
flag = NO;
break;
}
}
bonus = (flag == YES) ? continentBonus : 0;
return bonus;
}
//----------------------------------------------------------------------
- (NSSet *) countriesAlongBorder
{
NSEnumerator *countryEnumerator;
NSMutableSet *resultingSet;
Country *country;
resultingSet = [NSMutableSet set];
countryEnumerator = [countries objectEnumerator];
while (country = [countryEnumerator nextObject])
{
if ([country bordersAnotherContinent] == YES)
[resultingSet addObject:country];
}
return resultingSet;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.