home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
013.lha
/
fish
/
init.c
< prev
next >
Wrap
C/C++ Source or Header
|
1986-11-10
|
4KB
|
228 lines
/* init.c */
/***************************************************************/
#include "fishes.h"
#include <stdio.h>
#define DEPTH 3
#define ALLSTART 0
#define TEST
extern short color[8];
extern short color1[8];
extern short color2[8];
short color92[] = {
0x28f,
0xffc,
0xfbf,
0xfd0,
0xf30,
0x90d,
0xff,
0xd9,
};
extern struct AnimOb fishOb;
extern struct Bob fish1Bob;
extern struct AnimComp fish1Comp;
extern struct GelsInfo *GInfo;
extern struct VSprite *head, *tail;
extern struct collTable *boom;
SHORT timers[] =
{
/* fish's */
1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1,1, 1, 1, 1, 1,
};
SHORT Index = 0;
SHORT xtranslations[] =
{
/* fish's */
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
};
SHORT ytranslations[] =
{
/* fish's */
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
0 << ANFRACSIZE,
};
SHORT XVel[] =
{
/* fish's */
4 << ANFRACSIZE,
};
SHORT YVel[] =
{
/* fish's */
0 << ANFRACSIZE,
};
/* !!! define an animCRoutine here */
/* !!! define an animORoutine here */
fishMRoutine(anOb)
struct AnimOb *anOb;
{
register struct AnimComp *acptr, *seqptr;
acptr = anOb->HeadComp;
while (acptr)
{
seqptr = acptr;
do
{
if (seqptr->AnimBob->BobVSprite->Flags & GELGONE)
{
seqptr->AnimBob->BobVSprite->Flags &= ~GELGONE;
fishOb.AnX = 0 << ANFRACSIZE;
}
seqptr = seqptr->NextSeq;
}
while (seqptr != acptr && (seqptr));
acptr = acptr->NextComp;
}
}
fish1Routine(comp)
struct AnimComp *comp;
{
/* if (fish1Comp.Timer == 1)
fishOb.AnX += (87 << ANFRACSIZE); */
return(TRUE);
}
short startFlag = 4;
animinit(animKey,vp, wR)
struct AnimOb **animKey;
struct ViewPort *vp;
struct RastPort *wR;
{
SHORT i;
Index = 0;
fishOb.XVel = XVel[0];
fishOb.YVel = YVel[0];
fishOb.HeadComp = &fish1Comp;
fish1Bob.Before = NULL;
fish1Bob.After = NULL;
InitAnimate(animKey);
extrainit(&fishOb, TRUE, wR);
AddAnimOb(&fishOb, animKey,wR);
for (i = 0; i < 8; i++)
SetRGB4(vp,i ,
(color92[i] >> 8) & 0x00F,
(color92[i] >> 4) & 0x00F,
(color92[i] >> 0) & 0x00F);
}
extrainit(animKey, addFlag,wR)
struct AnimOb *animKey;
BOOL addFlag;
struct RastPort *wR;
{
struct AnimOb *anOb;
struct AnimComp *acptr;
struct AnimComp *seqptr, *sseqptr;
struct Bob *bptr;
struct Sprite *sptr;
short i, depth, sw, sh;
UBYTE *iptr, *i2ptr, *pptr;
short ibufsize, pbufsize;
/* animOb inits */
anOb = animKey;
anOb->AnX = ALLSTART << ANFRACSIZE;
anOb->AnY = 0;
anOb->XAccel = 0;
anOb->YAccel = 0;
anOb->Clock = 0;
acptr = anOb->HeadComp;
while (acptr)
{
acptr->AnimBob->BobVSprite->X =
(anOb->AnX + xtranslations[Index] + ANIMHALF) >> ANFRACSIZE;
acptr->AnimBob->BobVSprite->Y =
(anOb->AnY + ytranslations[Index] + ANIMHALF) >> ANFRACSIZE;
sseqptr = seqptr = acptr;
do
{
seqptr->AnimBob->Flags = BOBISCOMP;
seqptr->AnimBob->BobVSprite->Flags = SAVEBACK|OVERLAY;
seqptr->TimeSet = timers[Index];
seqptr->XTrans = xtranslations[Index];
seqptr->YTrans = ytranslations[Index];
seqptr->AnimBob->BobVSprite->PlaneOnOff= 0x10;
Index++;
seqptr = seqptr->NextSeq;
}
while (seqptr != sseqptr && (seqptr));
acptr = acptr->NextComp;
}
if (! (GetGBuffers(anOb, wR, TRUE)))
{
exit(3);
}
InitGMasks(anOb);
}
free_anim_obj(RPort)
struct RastPort *RPort;
{
FreeGBuffers(&fishOb,RPort,TRUE);
}