This is ModuleList.m in view mode; [Download] [Up]
/* indent:4 tabsize:8 font:fixed-width */
#import <Solitaire/GameModule.h>
#import "ModuleList.h"
@implementation ModuleInfo
/*---------------------------------------------------------------------------
|
| - initWithController:(GameModeul*) aController name:(NSString *)aName
| path:(NSString *)aPath
|
| returns: (id) self OK
| (id) nil Unable to initialize.
|
|----------------------------------------------------------------------------
|
| Designated initializer for ModuleInfo class.
|
\---------------------------------------------------------------------------*/
- initWithController:(GameModule*)aController name:(NSString *)aName
path:(NSString *)aPath
{
[super init];
controller = aController;
// get the bundle for this game
if (aPath && [aPath length])
{
theBundle = [[NSBundle allocWithZone:[self zone]] initWithPath:aPath];
if (theBundle == nil)
{
NSLog(@"Unable to access bundle %@ (%@)\n", aPath, aName);
[self autorelease];
return nil;
}
}
else
{
NSLog(@"ModuleList:initWithView:name:path: -- invalid path\n");
return nil;
}
realName = [aName copy];
/* this lets you customize the name of the game using the
Localizable.strings file in the game bundle */
gameName = [NSLocalizedStringFromTableInBundle(aName, nil, theBundle,
nil) retain];
return self;
}
/*---------------------------------------------------------------------------
|
| - setController:newController
|
|----------------------------------------------------------------------------
|
| Set the game controller.
|
\---------------------------------------------------------------------------*/
- (void) setController:(GameModule*)newController
{
[controller autorelease];
controller = [newController retain];
}
/*---------------------------------------------------------------------------
|
| - (GameModule*) controller
|
| returns: (GameModule*) the controller
|
|----------------------------------------------------------------------------
|
| Return the game controller.
|
\---------------------------------------------------------------------------*/
- controller
{
return controller;
}
/*---------------------------------------------------------------------------
|
| - setFailed:(BOOL)flag
|
|----------------------------------------------------------------------------
|
| Set the failed flag. Turn on the failed flag when the module has failed
| to load.
|
\---------------------------------------------------------------------------*/
- (void) setFailed:(BOOL)flag
{
failed = flag;
}
/*---------------------------------------------------------------------------
|
| - (BOOL)failed
|
| returns: (BOOL) state of failed flag
|
|----------------------------------------------------------------------------
|
| Return the failed flag.
|
\---------------------------------------------------------------------------*/
- (BOOL) failed
{
return failed;
}
/*---------------------------------------------------------------------------
|
| - (NSString *) gameName
|
| returns: (NSString *) the name of the game
|
|----------------------------------------------------------------------------
|
| Returns the name of this game module (localized).
|
\---------------------------------------------------------------------------*/
- (NSString*) gameName
{
return gameName;
}
/*---------------------------------------------------------------------------
|
| - (NSString *) realName
|
| returns: (NSString *) the real name of the game
|
|----------------------------------------------------------------------------
|
| Returns the name of this game module (non-localized).
|
\---------------------------------------------------------------------------*/
- (NSString *) realName
{
return realName;
}
/*---------------------------------------------------------------------------
|
| - (NSString *) path
|
| returns: (NSString *) the path of the module
|
|----------------------------------------------------------------------------
|
| Returns the path to this game module.
|
\---------------------------------------------------------------------------*/
- (NSString *) path
{
return [theBundle bundlePath];
}
/*---------------------------------------------------------------------------
|
| - (NSBundle *)bundle
|
| returns: (NSBundle *) the bundle for the module
|
|----------------------------------------------------------------------------
|
| Returns an NXBundle corresponding to this game module.
|
\---------------------------------------------------------------------------*/
- (NSBundle *) bundle
{
return theBundle;
}
/*---------------------------------------------------------------------------
|
| - dealloc
|
|----------------------------------------------------------------------------
|
| Deallocate this object.
|
\---------------------------------------------------------------------------*/
- (void) dealloc
{
[controller release];
[gameName release];
[realName release];
// NXBundles with dynamically loaded code can't be freed; this
// might be a problem, but I don't think so.
[theBundle release];
[super dealloc];
}
@end
/*==========================================================================*/
@implementation ModuleList
- init
{
[super init];
modules = [[NSMutableArray alloc] initWithCapacity:1];
return self;
}
- (void) dealloc
{
[modules release];
[super dealloc];
}
- (NSString *) nameAtIndex:(int)i
{
return [[modules objectAtIndex:i] gameName];
}
- (NSString *) realNameAtIndex:(int)i
{
return [[modules objectAtIndex:i] realName];
}
- controllerAtIndex:(int)i
{
return [[modules objectAtIndex:i] controller];
}
- (NSString *) pathAtIndex:(int)i
{
return [[modules objectAtIndex:i] path];
}
static int docompare(id x, id y, void *nothing)
{
return [[x realName] compare:[y realName]
options:NSCaseInsensitiveSearch];
}
- (void) sort
{
[modules sortUsingFunction:docompare context:(void*)NULL];
}
- (unsigned int) count
{
return [modules count];
}
- objectAtIndex:(unsigned)index
{
return [modules objectAtIndex:index];
}
- (void) addObject:anObject
{
[modules addObject:anObject];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.