This is BOBrick.m in view mode; [Download] [Up]
#import "BOBrick.h" #import "CacheManager.h" @implementation BOBrick - activate:sender :(int)tag { NXSize tsize = {200,100}; NXSize ts2 = {228,124}; NXSize t2 = {100, 50}; [super activate:sender :tag]; [self reinitWithImage:"BObrick" frameSize:&tsize numFrames:1 shape: RECT alliance: EVIL radius: 50 buffered: YES x: 0 y: 0 theta: 0 vel: 0 interval: 4000 distToCorner: &t2]; drawRect.size = frameSize = ts2; return self; } - calcDrawRect { drawRect.origin.x = floor(x - gx - distToCorner.width + xOffset); drawRect.origin.y = floor(y - gy - distToCorner.height + yOffset - 24); return self; } - performCollisionWith:(Actor *) dude { // don't go away return self; } // since this is a stationary object, we never shedule drawing; // we just draw into the virgin buffer once and forget it. - oneStep { if (timeInMS > changeTime) { [self calcDrawRect]; eraseRect = drawRect; if (alliance == EVIL) { changeTime = timeInMS+1500; alliance = NEUTRAL; [cacheMgr retileRect:&drawRect]; } else { changeTime = timeInMS+4000; alliance = EVIL; [[cacheMgr background] lockFocus]; [super draw]; [[cacheMgr background] unlockFocus]; } [self erase]; needToDraw = YES; } return self; } - scheduleDrawing { if (needToDraw) { [super scheduleDrawing]; needToDraw = NO; } return self; } - draw // so I don't draw on drawself messages... { return self; } - tile { [self calcDrawRect]; if (alliance == EVIL) { [super draw]; // super's implementation really draws } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.