This is Eye.m in view mode; [Download] [Up]
#import "Eye.h"
#import "SoundMgr.h"
#import "ActorMgr.h"
#import "Xoxeroids.h"
@implementation Eye
- activate:sender :(int)tag
{
static unsigned short mfbuffered;
NXSize tsize = {19,19};
NXSize tsize2 = {9.5,9.5};
Actor *dude = (Actor *)sender;
float ttheta = atan2(dude->x - gx, gy - dude->y);
[super activate:sender :tag];
[self reinitWithImage:"eye"
frameSize:&tsize
numFrames:6
shape: CIRCLE
alliance: DESTROYALL
radius: tsize2.width
buffered: ((mfbuffered++) & 1)
x: dude->x - (sin(ttheta) * (dude->radius + 12))
y: dude->y + cos(ttheta) * (dude->radius + 12)
theta: ttheta
vel: randBetween(16,22)
interval: 70
distToCorner: &tsize2];
expireTime = timeInMS + 1800;
frameCnt = timeInMS & 0xf;
return self;
}
- positionChanged
{
static char efn[] = { 0,0,1,2,1,0,1,2,1,0,0,3,4,5,4,3 };
if (timeInMS > changeTime)
{
changeTime = timeInMS + interval;
frameCnt++;
if (frameCnt > 15) frameCnt = 0;
frame = efn[frameCnt];
}
return self;
}
- calcDxDy:(NXPoint *)dp
{
if (timeInMS > expireTime)
[actorMgr destroyActor:self];
dp->x = timeScale * xv;
dp->y = timeScale * yv;
return self;
}
- performCollisionWith:(Actor *) dude
{
id ret = self;
if (dude->actorType != actorType)
{
[soundMgr playSound: EXP1SND at:0.5];
[actorMgr newActor:xx_explosion for:self tag:1];
ret = [super performCollisionWith: dude];
}
return ret;
}
@end
@implementation CrabNebula
- activate:sender :(int)tag
{
NXSize tsize = {107,125};
NXSize tsize2 = {53,62};
[super activate:sender :tag];
[self reinitWithImage:"crabneb"
frameSize:&tsize
numFrames:1
shape: CIRCLE
alliance: NEUTRAL
radius: tsize2.width
buffered: YES
x: randBetween(gx+xOffset, gx+3*xOffset)
y: randBetween(gy+yOffset, gy+3*yOffset)
theta: randBetween(0,2*PI)
vel: randBetween(0.01,0.5)
interval: 1000000
distToCorner: &tsize2];
return self;
}
- positionChanged
{
float dgx = gx-ogx, dgy = gy - ogy;
[self moveBy:dgx*.666 :dgy*.666];
[self wrapAtDistance: (2.5*xOffset) :(2.5*yOffset)];
ogx = gx; ogy = gy;
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.