| 8971 | } |
| 8972 | |
| 8973 | int16 cFodder::Sprite_Find_In_Region(sSprite* pSprite, sSprite*& pData24, int16 pData8, int16 pDataC, int16 pData10, int16 pData14) { |
| 8974 | |
| 8975 | if (mPhase_Finished) { |
| 8976 | word_3AA45 = 0; |
| 8977 | return 0; |
| 8978 | } |
| 8979 | |
| 8980 | mSprites_Found_Count = 0; |
| 8981 | |
| 8982 | pData24 = mSprites.data(); |
| 8983 | |
| 8984 | for (int32 Data1C = mParams->getSpritesMax() - 2; Data1C >= 0; --Data1C, ++pData24) { |
| 8985 | int16 Data4 = pData24->field_18; |
| 8986 | |
| 8987 | if (!mSprite_Can_Be_RunOver[Data4]) |
| 8988 | continue; |
| 8989 | |
| 8990 | if (pData24->field_0 < 0) |
| 8991 | continue; |
| 8992 | |
| 8993 | if (pDataC < pData24->field_0) |
| 8994 | continue; |
| 8995 | |
| 8996 | int16 Data0 = pData24->field_0; |
| 8997 | Data0 += mSprite_Width[Data4]; |
| 8998 | if (pData8 > Data0) |
| 8999 | continue; |
| 9000 | |
| 9001 | Data0 = pData24->field_4; |
| 9002 | Data0 -= mSprite_Height_Top[Data4]; |
| 9003 | if (pData14 < Data0) |
| 9004 | continue; |
| 9005 | |
| 9006 | //seg009:050C |
| 9007 | Data0 = pData24->field_4; |
| 9008 | Data0 += mSprite_Height_Bottom[Data4]; |
| 9009 | |
| 9010 | if (pData10 > Data0) |
| 9011 | continue; |
| 9012 | |
| 9013 | int16 Data18 = pSprite->field_20; |
| 9014 | Data0 = mSprite_Height_Top[Data4]; |
| 9015 | Data0 += 8; |
| 9016 | |
| 9017 | Data0 += pData24->field_20; |
| 9018 | |
| 9019 | if (Data18 > Data0) |
| 9020 | continue; |
| 9021 | Data18 += 0x0B; |
| 9022 | |
| 9023 | if (Data18 < pData24->field_20) |
| 9024 | continue; |
| 9025 | |
| 9026 | if (pData24->field_18 != eSprite_Player) |
| 9027 | goto loc_2D5FA; |
| 9028 | |
| 9029 | if (pData24->field_38 != eSprite_Anim_Die5) |
| 9030 | continue; |
nothing calls this directly
no test coverage detected