This is GameModuleAdditions.m in view mode; [Download] [Up]
/* indent:4 tabsize:8 font:fixed-width */
#import <Solitaire/GameModule.h>
#import <Solitaire/GamePref.h>
#import "localstrings.h"
#import <Solitaire/SmallCard.h>
#import <Solitaire/Card.h>
#import "Solitaire.h"
@implementation GameModule (SolitaireDependentAdditions)
/*"
This category only exists because of dependencies between GameModule
and the Solitaire app classes. It will likely be removed when
everything is better organized.
"*/
- (void) win
/*"
Called when the game has been won. By default, invokes the generic "win"
routine. Override to create custom "game won" behaviour.
"*/
{
[[NSApp delegate] win];
}
- (void) commonGameSetup
/*"
HELPER METHOD. DO NOT OVERRIDE. We load the correct game nib after
rescanning our generic preferences.
"*/
{
int depth;
CardSize lastCardSize = cardSize;
// if game only supports one size of card, don't bother trying to
// load the missing size
if (!ignoreSizePref)
cardSize = [[NSApp delegate] cardSize];
// generic information used in all games
desktopColor = [[NSApp delegate] backgroundColor];
cardBack = [[NSApp delegate] cardBack];
// load the preferred card size
if ((cardSize != lastCardSize) || !gameWindow)
{
NSString* path = nil;
CardSize realSize;
if ((path = [self nibPathForCardSize:cardSize realSize:&realSize]) == nil)
{
NSRunAlertPanel(gameName,LOCALIZED_NIBGONE_MSG,
@"", nil, nil);
return;
}
if (realSize != cardSize)
{
cardSize = realSize;
ignoreSizePref = YES;
}
if (cardSize != lastCardSize || !gameWindow)
{
if (gameWindow) [gameWindow performClose:self];
[self loadGameWindow:path ofSize:cardSize];
}
}
// Cards need to know what background to use
if (cardSize == CS_SMALL){
if(cardBack == CS_CUSTOM)
[[SmallCard class] setCardBackImage:
[[NSApp delegate] imageForSize:cardSize]];
else
[[SmallCard class] setCardBack:cardBack];
}
else{
if(cardBack == CS_CUSTOM)
[[Card class] setCardBackImage:
[[NSApp delegate] imageForSize:cardSize]];
else
[[Card class] setCardBack:cardBack];
}
// Support added for a color background if using a
// color or 8-bit gray machine
if ((depth = [gameWindow depthLimit]) == 0)
{
depth = [NSWindow defaultDepthLimit];
}
if (depth != NSBestDepth(NSCalibratedWhiteColorSpace, 2, 2, YES, NULL))
{
if (depth == NSBestDepth(NSCalibratedWhiteColorSpace, 8, 8, YES, NULL))
{
float grayLevel;
[[desktopColor colorUsingColorSpaceName:NSCalibratedWhiteColorSpace] getWhite:&grayLevel alpha:NULL];
[gameWindow setBackgroundColor:[NSColor colorWithCalibratedWhite:grayLevel alpha:1.0]];
}
else
{
[gameWindow setBackgroundColor:desktopColor];
}
}
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.