TetrisPiece::TetrisPiece(ePieceType pieceType): m_currentRotation(0), m_pieceType(pieceType) { AllocateArray(); CreatePiece(pieceType); }
Piece::Piece(Type t) { CreatePiece(t); }
Piece::Piece() { CreatePiece(); }
// create an object of type OBJ_X_TREAD and give it the specified sprite. Object *XBoss::CreateTread(int x, int y, int sprite) { Object *tread = CreatePiece(x, y, OBJ_X_TREAD); tread->sprite = sprite; return tread; }
void XBoss::Init() { int i; mainobject->hp = 700; mainobject->state = 1; mainobject->x = (128 * TILE_W) << CSF; mainobject->y = (200 << CSF); mainobject->flags = FLAG_IGNORE_SOLID; // put X behind the flying gaudis mainobject->PushBehind(lowestobject); // create body pieces for(i=3;i>=0;i--) { body[i] = CreatePiece(0, 0, OBJ_X_BODY); body[i]->dir = (i == UL || i == LL) ? LEFT : RIGHT; body[i]->frame = (i == LL || i == LR) ? 1 : 0; } // create treads for(i=0;i<4;i++) { int x = (i == UL || i == LL) ? 0xf8000 : 0x108000; int y = (i == UL || i == UR) ? 0x12000 : (0x20000 - (16 << CSF)); int sprite = (i == UL || i == UR) ? SPR_X_TREAD_UPPER : SPR_X_TREAD_LOWER; treads[i] = CreateTread(x, y, sprite); treads[i]->smushdamage = 10; } // create internals internals = CreatePiece(0, 0, OBJ_X_INTERNALS); internals->hp = 1000; internals->flags &= ~FLAG_SHOW_FLOATTEXT; // create targets for(i=0;i<4;i++) { targets[i] = CreatePiece(0, 0, OBJ_X_TARGET); targets[i]->sprite = SPR_X_TARGETS; targets[i]->frame = i; targets[i]->hp = 60; targets[i]->flags &= ~FLAG_SHOW_FLOATTEXT; } // create fishy-missile shooters for(i=0;i<4;i++) { fishspawners[i] = CreatePiece(0, 0, OBJ_X_FISHY_SPAWNER); fishspawners[i]->sprite = SPR_NULL; fishspawners[i]->invisible = true; fishspawners[i]->flags = 0; } // create doors for(i=0;i<2;i++) { doors[i] = CreatePiece(0, 0, OBJ_X_DOOR); doors[i]->sprite = SPR_X_DOOR; doors[i]->dir = i; } sprites[SPR_X_DOOR].frame[0].dir[LEFT].drawpoint.x = 40; sprites[SPR_X_DOOR].frame[0].dir[LEFT].drawpoint.y = 16; sprites[SPR_X_DOOR].frame[0].dir[RIGHT].drawpoint.x = -9; sprites[SPR_X_DOOR].frame[0].dir[RIGHT].drawpoint.y = 16; }