void PlayLayer::removeSushi() // Không cần truyền tham số { m_isAnimationing = true; // Duyệt toàn ma trận for (int i = 0; i < m_height * m_width; i++) { SushiSprite *sushi = m_matrix[i]; if (!sushi) { // Bỏ qua Sushi rỗng continue; } if (sushi->getIsNeedRemove()) { // Sushi cần xóa bỏ m_isNeedFillVacancies = true; // Cần điền đầy // Nổ các Sushi đặc biệt if(sushi->getDisplayMode() == DISPLAY_MODE_HORIZONTAL) // Loại Sushi sọc ngang { explodeSpecialH(sushi->getPosition()); // Gọi hàm nổ theo chiều ngang } else if (sushi->getDisplayMode() == DISPLAY_MODE_VERTICAL) // Loại Sushi sọc dọc { explodeSpecialV(sushi->getPosition()); // Gọi hàm nổ theo chiều dọc } explodeSushi(sushi); // Nổ sushi bình thường } } }
void PlayLayer::removeSushi(std::list<SushiSprite *> &sushiList) { // make sequence remove m_isAnimationing = true; std::list<SushiSprite *>::iterator itList; for (itList = sushiList.begin(); itList != sushiList.end(); itList++) { SushiSprite *sushi = (SushiSprite *)*itList; // remove sushi from the metrix m_matrix[sushi->getRow() * m_width + sushi->getCol()] = NULL; explodeSushi(sushi); } // drop to fill empty fillVacancies(); }