| 8469 | } |
| 8470 | |
| 8471 | int16 cFodder::Map_Terrain_Get_Moveable(const int8* pMovementData, int16& pX, int16& pY) { |
| 8472 | uint32 DataC = pY; |
| 8473 | uint32 Data8 = pX; |
| 8474 | |
| 8475 | if (pY < 0) |
| 8476 | DataC = 0; |
| 8477 | if (pX < 0) |
| 8478 | Data8 = 0; |
| 8479 | |
| 8480 | DataC >>= 4; |
| 8481 | |
| 8482 | DataC *= mMapLoaded->getWidth(); |
| 8483 | Data8 >>= 4; |
| 8484 | |
| 8485 | DataC += Data8; |
| 8486 | DataC <<= 1; |
| 8487 | |
| 8488 | if (mMap->data() + 0x60 + DataC >= mMap->data() + mMap->size()) |
| 8489 | return pMovementData[0]; |
| 8490 | |
| 8491 | int16 Data0 = readLE<uint16>(mMap->data() + 0x60 + DataC); |
| 8492 | Data0 &= 0x1FF; |
| 8493 | |
| 8494 | int16 Data4 = mTile_Hit[Data0]; |
| 8495 | |
| 8496 | if (Data4 >= 0) { |
| 8497 | Data4 &= 0x0F; |
| 8498 | return pMovementData[Data4]; |
| 8499 | } |
| 8500 | |
| 8501 | Data8 = Data4; |
| 8502 | Data4 &= 0x0F; |
| 8503 | |
| 8504 | Data0 = pMovementData[Data4]; |
| 8505 | Data8 >>= 4; |
| 8506 | Data8 &= 0x0F; |
| 8507 | |
| 8508 | Data0 |= pMovementData[Data8]; |
| 8509 | |
| 8510 | pX = Data8; |
| 8511 | pY = DataC; |
| 8512 | return Data0; |
| 8513 | } |
| 8514 | |
| 8515 | void cFodder::Map_Get_Distance_BetweenPoints_Within_640(int16& pX, int16& pY, int16& pX2, int16& pY2) { |
| 8516 | int16 Data10 = 0; |