#include #include #include "pad.h" #include "action.h" #include "actinit.h" extern short activeBuff; extern GsOT WorldOT[2]; extern long padinfo; GsSPRITE spBaku[1]; void BakuMain( action * ); /*---------------------------------------------------------------------- 爆発してみっか! ----------------------------------------------------------------------*/ void BakuMain( action *cw ){ if ( cw->count0++ > 30 ){ ResetAction(); return; } cw->sp->u = ((cw->count0>>2)&0x07)*32; cw->sp->v = ((cw->posY>>1)&0x07)*32; cw->sp->x = cw->posX; cw->sp->y = cw->posY; GsSortSprite(cw->sp, &WorldOT[activeBuff], 0); } /*---------------------------------------------------------------------- 爆発初期化 ----------------------------------------------------------------------*/ void InitBomb( action *cw ){ short tpage; action *ap; GsSPRITE *sp; if ( cw == NULL ) return; ap = GetEmptyActPtr(); if ( ap == NULL ) return; sp = spBaku; tpage = GetTPage( 0, 0, 320+64+64+64+64+64+64, 0); sp->attribute = 0x00000000&(1>>27); /* 属性 */ sp->w = 32; /* 横幅 */ sp->h = 32; /* 高さ */ sp->tpage = tpage; /* テクスチャページ番号 */ sp->u = 0; /* ページ内オフセット */ sp->v = 0; sp->cx = 0; /* CLUT位置 */ sp->cy = 484; sp->r = sp->g = sp->b = 0x80; /* 輝度 */ sp->mx = sp->my = 0; /* 回転拡大時中心座標 */ sp->scalex = sp->scaley = ONE; /* スケール値 */ sp->rotate = 0; /* 回転角 */ ap->ID = 3; ap->fnAction = BakuMain; /* 処理ルーチン */ ap->WorkSize = sizeof(*ap); /* ワークサイズ */ ap->message = 0; /* メッセージ */ ap->count0 = 0; /* カウンタ */ ap->count1 = 0; ap->posX = cw->posX; ap->posY = cw->posY-8; ap->vectX = 0; ap->vectY = 0; ap->speed = 0; ap->collision.x = 0; ap->collision.y = 0; ap->collision.w = 0; ap->collision.h = 0; ap->sp->x = ap->posX; ap->sp->y = ap->posY; ap->sp = sp; }