This is BoardSetup.m in view mode; [Download] [Up]
//
// This file is a part of Risk by Mike Ferris.
//
#import "Risk.h"
RCSID ("$Id: BoardSetup.m,v 1.3 1997/12/15 07:43:37 nygard Exp $");
#import "BoardSetup.h"
//======================================================================
// The BoardSetup defines what the main board and the status view will
// look like.
//======================================================================
static BoardSetup *_instance = nil;
// Notifications are sent when the preferences are changed, so that
// objects that use these defaults can be updated.
DEFINE_NSSTRING (RiskBoardSetupChangedNotification);
DEFINE_NSSTRING (RiskBoardSetupPlayerColorsChangedNotification);
DEFINE_NSSTRING (RiskBoardSetupShowCardSetCountsChangedNotification);
void setColorForDefault (NSColor *value, NSString *key)
{
[[NSUserDefaults standardUserDefaults] setObject:defaultsDataForColor (value) forKey:key];
}
//----------------------------------------------------------------------
NSColor *getColorForDefault (NSString *key)
{
NSData *data;
NSColor *color;
data = [[NSUserDefaults standardUserDefaults] dataForKey:key];
if (data == nil)
color = [NSColor blackColor];
else
color = [NSUnarchiver unarchiveObjectWithData:data];
return color;
}
//----------------------------------------------------------------------
NSData *defaultsDataForColor (NSColor *color)
{
return [NSArchiver archivedDataWithRootObject:color];
}
//======================================================================
#define BoardSetup_VERSION 1
@implementation BoardSetup
+ instance
{
if (_instance == nil)
{
_instance = [[BoardSetup alloc] init];
}
return _instance;
}
//----------------------------------------------------------------------
+ (void) initialize
{
NSUserDefaults *defaults;
NSMutableDictionary *boardDefaults;
NSColor *color;
// Set up the defaults.
if (self == [BoardSetup class])
{
[self setVersion:BoardSetup_VERSION];
defaults = [NSUserDefaults standardUserDefaults];
boardDefaults = [NSMutableDictionary dictionary];
//color = [NSColor colorWithCalibratedRed:0.9 green:0.9 blue:0.9 alpha:1.0];
color = [NSColor greenColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_DefaultPlayer1Color];
//color = [NSColor colorWithCalibratedRed:0.8 green:0.8 blue:0.8 alpha:1.0];
color = [NSColor blueColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_DefaultPlayer2Color];
//color = [NSColor colorWithCalibratedRed:0.66 green:0.66 blue:0.66 alpha:1.0];
color = [NSColor yellowColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_DefaultPlayer3Color];
//color = [NSColor colorWithCalibratedRed:0.33 green:0.33 blue:0.33 alpha:1.0];
color = [NSColor purpleColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_DefaultPlayer4Color];
//color = [NSColor colorWithCalibratedRed:0.15 green:0.15 blue:0.15 alpha:1.0];
color = [NSColor cyanColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_DefaultPlayer5Color];
//color = [NSColor colorWithCalibratedRed:0.0 green:0.0 blue:0.0 alpha:1.0];
color = [NSColor redColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_DefaultPlayer6Color];
[boardDefaults setObject:@"1" forKey:DK_BorderWidth];
color = [NSColor blackColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_RegularBorderColor];
color = [NSColor whiteColor];
[boardDefaults setObject:defaultsDataForColor (color) forKey:DK_SelectedBorderColor];
[boardDefaults setObject:@"YES" forKey:DK_ShowCardSetCounts];
[defaults registerDefaults:boardDefaults];
}
}
//----------------------------------------------------------------------
- init
{
int l;
if ([super init] == nil)
return nil;
borderWidth = 0.15;
regularBorderColor = [[NSColor blackColor] retain];;
selectedBorderColor = [[NSColor whiteColor] retain];;
for (l = 0; l < 7; l++)
playerColors[l] = nil;
[self revertAllToDefaults];
return self;
}
//----------------------------------------------------------------------
- (void) dealloc
{
[super dealloc];
}
//----------------------------------------------------------------------
// The defaults are split into two parts since there are two different
// panels to set them, and they should be set independantly.
- (void) writeAllDefaults
{
[self writePlayerColorDefaults];
[self writeOtherDefaults];
}
//----------------------------------------------------------------------
- (void) writePlayerColorDefaults
{
NSUserDefaults *defaults;
defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:defaultsDataForColor (playerColors[1]) forKey:DK_DefaultPlayer1Color];
[defaults setObject:defaultsDataForColor (playerColors[2]) forKey:DK_DefaultPlayer2Color];
[defaults setObject:defaultsDataForColor (playerColors[3]) forKey:DK_DefaultPlayer3Color];
[defaults setObject:defaultsDataForColor (playerColors[4]) forKey:DK_DefaultPlayer4Color];
[defaults setObject:defaultsDataForColor (playerColors[5]) forKey:DK_DefaultPlayer5Color];
[defaults setObject:defaultsDataForColor (playerColors[6]) forKey:DK_DefaultPlayer6Color];
[defaults synchronize];
}
//----------------------------------------------------------------------
- (void) writeOtherDefaults
{
NSUserDefaults *defaults;
defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:defaultsDataForColor (regularBorderColor) forKey:DK_RegularBorderColor];
[defaults setObject:defaultsDataForColor (selectedBorderColor) forKey:DK_SelectedBorderColor];
[defaults setFloat:borderWidth forKey:DK_BorderWidth];
[defaults setBool:showCardSetCounts forKey:DK_ShowCardSetCounts];
[defaults synchronize];
}
//----------------------------------------------------------------------
- (void) revertAllToDefaults
{
[self revertPlayerColorsToDefaults];
[self revertOtherToDefaults];
}
//----------------------------------------------------------------------
- (void) revertPlayerColorsToDefaults
{
NSUserDefaults *defaults;
int l;
defaults = [NSUserDefaults standardUserDefaults];
for (l = 1; l < 7; l++)
{
SNRelease (playerColors[l]);
}
playerColors[1] = [getColorForDefault (DK_DefaultPlayer1Color) retain];
playerColors[2] = [getColorForDefault (DK_DefaultPlayer2Color) retain];
playerColors[3] = [getColorForDefault (DK_DefaultPlayer3Color) retain];
playerColors[4] = [getColorForDefault (DK_DefaultPlayer4Color) retain];
playerColors[5] = [getColorForDefault (DK_DefaultPlayer5Color) retain];
playerColors[6] = [getColorForDefault (DK_DefaultPlayer6Color) retain];
// Notify of updated defaults.
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupPlayerColorsChangedNotification
object:self];
}
//----------------------------------------------------------------------
- (void) revertOtherToDefaults
{
NSUserDefaults *defaults;
defaults = [NSUserDefaults standardUserDefaults];
borderWidth = [defaults floatForKey:DK_BorderWidth];
SNRelease (regularBorderColor);
regularBorderColor = [getColorForDefault (DK_RegularBorderColor) retain];
SNRelease (selectedBorderColor);
selectedBorderColor = [getColorForDefault (DK_SelectedBorderColor) retain];
showCardSetCounts = [defaults boolForKey:DK_ShowCardSetCounts];
// Notify of updated defaults.
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupChangedNotification
object:self];
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupShowCardSetCountsChangedNotification
object:self];
}
//----------------------------------------------------------------------
- (float) borderWidth
{
return borderWidth;
}
//----------------------------------------------------------------------
- (void) setBorderWidth:(float)newWidth
{
borderWidth = newWidth;
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupChangedNotification
object:self];
}
//----------------------------------------------------------------------
- (NSColor *) regularBorderColor
{
return regularBorderColor;
}
//----------------------------------------------------------------------
- (void) setRegularBorderColor:(NSColor *)newColor
{
if (newColor == regularBorderColor)
return;
SNRelease (regularBorderColor);
regularBorderColor = [newColor retain];
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupChangedNotification
object:self];
}
//----------------------------------------------------------------------
- (NSColor *) selectedBorderColor
{
return selectedBorderColor;
}
//----------------------------------------------------------------------
- (void) setSelectedBorderColor:(NSColor *)newColor
{
if (newColor == selectedBorderColor)
return;
SNRelease (selectedBorderColor);
selectedBorderColor = [newColor retain];
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupChangedNotification
object:self];
}
//----------------------------------------------------------------------
- (BOOL) showCardSetCounts
{
return showCardSetCounts;
}
//----------------------------------------------------------------------
- (void) setShowCardSetCounts:(BOOL)newFlag
{
showCardSetCounts = newFlag;
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupShowCardSetCountsChangedNotification
object:self];
}
//----------------------------------------------------------------------
- (NSColor *) colorForPlayer:(Player)playerNumber
{
NSAssert (playerNumber > 0 && playerNumber < 7, @"Player number out of range.");
return playerColors[playerNumber];
}
//----------------------------------------------------------------------
- (void) setColor:(NSColor *)aColor forPlayer:(Player)playerNumber
{
NSAssert (playerNumber > 0 && playerNumber < 7, @"Player number out of range.");
SNRelease (playerColors[playerNumber]);
playerColors[playerNumber] = [aColor retain];
[[NSNotificationCenter defaultCenter] postNotificationName:RiskBoardSetupPlayerColorsChangedNotification
object:self];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.