This is NextMatrix.m in view mode; [Download] [Up]
/* * The View that displays the next piece that will drop. * */ #import <appkit/Application.h> #import <appkit/NXImage.h> #import <appkit/Button.h> #import "NextMatrix.h" #import "Piece.h" @implementation NextMatrix - initFrame:(const NXRect *)frameRect { NXSize size; extern resize(NXSize *); [super initFrame:frameRect numRows:0 numCols:0]; thePiece = [[Piece alloc] init]; [thePiece newPiece]; [thePiece getBlockSize:&size]; resize(&size); [super setElementSize:&size]; // Remember the image's size. pieceVisible = showNext = NO; size.width = size.height = 1.0; [super setIntercell:&size]; #ifdef DEBUG fprintf(stderr, "NextMatrix initialized\n"); #endif return self; } - drawSelf:(const NXRect *)rects :(int)rectCount { [super drawSelf:rects :rectCount]; fprintf(stderr, "Thinking about showing you the next piece\n"); if (pieceVisible && showNext) { fprintf(stderr, "Here's the next piece.\n"); [thePiece draw:self]; // Show the next piece } return self; } - (struct pieceInfo *)pieceInfo { struct pieceInfo *info; #ifdef DEBUG puts("NextMatrix instance creating a new piece"); #endif info = [thePiece pieceInfo]; [thePiece newPiece]; // Generate the new piece [self display]; return info; } /* * TetApp will inform us when the game has started. */ - start:sender { [thePiece newPiece]; pieceVisible = YES; return self; } /* * TetApp will inform us when the game has been stopped. */ - end:sender { pieceVisible = NO; [self display]; return self; } - showNext:sender { showNext = [showNextSwitch state]; if (pieceVisible) [self display]; return self; } - free { [thePiece free]; return [super free]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.