#include #include #include "pad.h" #include "action.h" #include "actinit.h" extern short activeBuff; extern GsOT WorldOT[2]; extern long padinfo; GsSPRITE spFire[1]; void FireMain( action * ); /*---------------------------------------------------------------------- ファイヤー ----------------------------------------------------------------------*/ void FireMain( action *cw ){ action *ap; cw->posX += cw->vectX; if (cw->posX > 320){ cw->ID = 0; } if ( CheckCollisionRect( cw ) == 1 ){ /* 能動的当たり判定 */ ap = cw->ptr0; if ( ap->ID == ENEMY ){ FntPrint( "%d,",ap->ID ); InitBomb( cw ); cw->ID = 0; } } cw->sp->x = cw->posX; cw->sp->y = cw->posY; GsSortFastSprite(cw->sp, &WorldOT[activeBuff], 0); } /*---------------------------------------------------------------------- ファイヤー初期化 ----------------------------------------------------------------------*/ void InitFire( action *cw ){ short tpage; action *ap; GsSPRITE *sp; if ( cw == NULL ) return; sp = spFire; tpage = GetTPage( 0, 0, 320, 0); sp->attribute = 0x00000000; /* 属性 */ sp->w = 16; /* 横幅 */ sp->h = 16; /* 高さ */ sp->tpage = tpage; /* テクスチャページ番号 */ sp->u = 128; /* ページ内オフセット */ sp->v = 192; sp->cx = 0; /* CLUT位置 */ sp->cy = 480; sp->r = sp->g = sp->b = 0x80; /* 輝度 */ sp->mx = sp->my = 0; /* 回転拡大時中心座標 */ sp->scalex = sp->scaley = ONE; /* スケール値 */ sp->rotate = 0; /* 回転角 */ ap = GetEmptyActPtr(); ap->ID = FIRE; ap->fnAction = FireMain; /* 処理ルーチン */ ap->WorkSize = sizeof(*ap); /* ワークサイズ */ ap->message = 0; /* メッセージ */ ap->count0 = 0; /* カウンタ */ ap->count1 = 0; ap->posX = cw->posX+54; ap->posY = cw->posY+30; ap->vectX = 2; ap->vectY = 0; ap->speed = 0; ap->collision.x = 0; ap->collision.y = 0; ap->collision.w = 16; ap->collision.h = 16; ap->sp->x = ap->posX; ap->sp->y = ap->posY; ap->sp = sp; }