This is GOLetter.m in view mode; [Download] [Up]
#import "GOLetter.h" #import "ActorMgr.h" #import "DisplayManager.h" // #import "Xoxeroids.h" @implementation GOLetter static id myDelegate; static int endConditions; typedef struct { char *name; NXRect r; } GOstruct; static GOstruct goarray[] = { "GOg", {3, 57, 47, 48}, "GOa", {50, 57, 36, 33}, "GOm", {91, 57, 51, 35}, "GOe1", {146, 57, 32, 33}, "GOo", {22, 4, 45, 50}, "GOv", {68, 4, 30, 35}, "GOe2", {98, 4, 32, 33}, "GOr", {131, 4, 31, 34}, }; static int wobble; - activate:sender :(int)tag { GOstruct *gp = (GOstruct *)tag; NXRect *rp = &gp->r; NXSize tsize; tsize.width = rp->size.width / 2; tsize.height = rp->size.height / 2; wobble = (++wobble) & 1; [super activate:sender :tag]; [self reinitWithImage:gp->name frameSize:&rp->size numFrames:1 shape: RECT alliance: NEUTRAL radius: 1.0 buffered: YES x: gx + randBetween(wobble?xOffset:-xOffset,xOffset+2) y: gy + randBetween(wobble?-yOffset:yOffset,yOffset+2) theta: 0 vel: 0 interval: 10000000 distToCorner: &tsize]; [self wrapAtDistance: (xOffset+1) :(yOffset+1)]; destx = gx - 91 + tsize.width + rp->origin.x; desty = gy - 54 + tsize.height + rp->origin.y; xv = (x - destx) / -35; yv = (y - desty) / -35; return self; } - positionChanged { if ((xv < 0 && x < destx) || (xv > 0 && x > destx)) { xv = 0; x = destx; endConditions--; } if ((yv < 0 && y < desty) || (yv > 0 && y > desty)) { yv = 0; y = desty; endConditions--; } if (endConditions <= 0 && ([myDelegate respondsTo:@selector(gameOverComplete)])) [myDelegate gameOverComplete]; return self; } + initialize { int i; id theImage; [super initialize]; theImage = [self findImageNamed:"GameOver"]; for (i=0; i<8; i++) { NXImage *i2 = [[NXImage allocFromZone:[self zone]] initFromImage:theImage rect:&goarray[i].r]; [i2 setName:goarray[i].name]; } return self; } + gameOver:sender { int i; endConditions = 16; myDelegate = sender; for (i=0; i<8; i++) { [actorMgr newActor:(int)self for:actorMgr tag:(int)(&goarray[i])]; } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.