This is Aquarium.m in view mode; [Download] [Up]
#import "Aquarium.h" #import "Fish.h" #ifndef NS3x #import "Thinker.h" #else #import "Thinker3.h" #endif #import <libc.h> #import <objc/List.h> #import <dpsclient/wraps.h> #define NUM_OF_FISH 8 @implementation AquariumView - oneStep { [fishList makeObjectsPerform:@selector(move:) with:fishList]; return self; } - initFrame:(NXRect *)frameRect { int x; [super initFrame:frameRect]; fishList = [[List allocFromZone:[self zone]] init]; for (x=0;x<NUM_OF_FISH;x++) [fishList addObject:[[Fish allocFromZone:[self zone]] init:self]]; return self; } - drawSelf:(const NXRect *)rects :(int)rectCount { if (!rects || !rectCount) return self; PSsetgray(NX_BLACK); NXRectFill(rects); return self; } - newViewSize { [fishList makeObjectsPerform:@selector(viewDidResize)]; return self; } - (const char *)windowTitle { return "Fish Are So Damn Relaxing"; } - didLockFocus { return self; } - sizeTo:(NXCoord)width :(NXCoord)height { [super sizeTo:width :height]; [self newViewSize]; return self; } - (BOOL)useBufferedWindow { return NO; } #ifdef NS3x -inspector:sender { char buf[MAXPATHLEN]; if (!sharedInspectorPanel) { sprintf(buf,"%s/AquariumView.nib",[sender moduleDirectory:"Aquarium"]); [NXApp loadNibFile:buf owner:self withNames:NO]; } return sharedInspectorPanel; } #endif @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.