| 17479 | } |
| 17480 | |
| 17481 | int16 cFodder::Sprite_Get_Free_Max42(int16& pData0, sSprite*& pData2C, sSprite*& pData30) { |
| 17482 | |
| 17483 | // |
| 17484 | if (!mSprite_SpareUsed) { |
| 17485 | |
| 17486 | // Looking for two sprites? |
| 17487 | if (pData0 == 3) { |
| 17488 | pData2C = mSprites.data(); |
| 17489 | |
| 17490 | // Loop all sprites |
| 17491 | for (int32_t Data1C = mParams->getSpritesMax() - 5; Data1C >= 0; --Data1C, ++pData2C) { |
| 17492 | |
| 17493 | // Sprite free? |
| 17494 | if (pData2C->field_0 != -32768) |
| 17495 | continue; |
| 17496 | |
| 17497 | if ((pData2C + 1)->field_0 != -32768) |
| 17498 | continue; |
| 17499 | |
| 17500 | // Second sprite free? |
| 17501 | if ((pData2C + 2)->field_0 == -32768) { |
| 17502 | pData30 = pData2C + 1; |
| 17503 | |
| 17504 | pData2C->Clear(); |
| 17505 | pData30->Clear(); |
| 17506 | (pData30 + 1)->Clear(); // Yuck |
| 17507 | |
| 17508 | pData0 = 0; |
| 17509 | return 0; |
| 17510 | } |
| 17511 | } |
| 17512 | } else if (pData0 == 2) { |
| 17513 | pData2C = mSprites.data(); |
| 17514 | |
| 17515 | // Loop all sprites |
| 17516 | for (int32_t Data1C = mParams->getSpritesMax() - 4; Data1C >= 0; --Data1C, ++pData2C) { |
| 17517 | |
| 17518 | // Sprite free? |
| 17519 | if (pData2C->field_0 != -32768) |
| 17520 | continue; |
| 17521 | |
| 17522 | // Second sprite free? |
| 17523 | if ((pData2C + 1)->field_0 == -32768) { |
| 17524 | pData30 = pData2C + 1; |
| 17525 | |
| 17526 | pData2C->Clear(); |
| 17527 | pData30->Clear(); |
| 17528 | pData0 = 0; |
| 17529 | return 0; |
| 17530 | } |
| 17531 | } |
| 17532 | } |
| 17533 | else { |
| 17534 | // Only looking for 1 sprite |
| 17535 | pData2C = &mSprites[mParams->getSpritesMax() - 3]; |
| 17536 | |
| 17537 | for (int32 Data1C = mParams->getSpritesMax() - 3; Data1C >= 0; --Data1C) { |
| 17538 |
nothing calls this directly
no test coverage detected