MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Sprite_Get_Free_Max42

Method Sprite_Get_Free_Max42

Source/Fodder.cpp:17481–17557  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17479}
17480
17481int16 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

Callers

nothing calls this directly

Calls 2

getSpritesMaxMethod · 0.80
ClearMethod · 0.45

Tested by

no test coverage detected