* Calculate the distance between two points on the map * * @return Distance between points */
| 7996 | * @return Distance between points |
| 7997 | */ |
| 7998 | int16 cFodder::Map_Get_Distance_BetweenPoints(int16& pPosX, int16& pPosY, int16& pPosX2, int16& pDistanceMax, int16& pPosY2) { |
| 7999 | const int8* Data24 = mMap_Distance_Calculations; |
| 8000 | |
| 8001 | pPosX2 -= pPosX; |
| 8002 | if (pPosX2 < 0) |
| 8003 | pPosX2 = -pPosX2; |
| 8004 | |
| 8005 | if (pPosX2 >= pDistanceMax) |
| 8006 | goto loc_2A7DB; |
| 8007 | |
| 8008 | pPosY2 -= pPosY; |
| 8009 | if (pPosY2 < 0) |
| 8010 | pPosY2 = -pPosY2; |
| 8011 | |
| 8012 | if (pPosY2 >= pDistanceMax) |
| 8013 | goto loc_2A7DB; |
| 8014 | |
| 8015 | pDistanceMax = 0; |
| 8016 | for (;;) { |
| 8017 | if (pPosX2 <= 0x1F) |
| 8018 | if (pPosY2 <= 0x1F) |
| 8019 | break; |
| 8020 | |
| 8021 | pPosX2 >>= 1; |
| 8022 | pPosY2 >>= 1; |
| 8023 | ++pDistanceMax; |
| 8024 | } |
| 8025 | //loc_2A7AD |
| 8026 | pPosY2 <<= 5; |
| 8027 | pPosY2 |= pPosX2; |
| 8028 | pPosX = 0; |
| 8029 | |
| 8030 | pPosX = Data24[pPosY2]; |
| 8031 | pPosX <<= pDistanceMax; |
| 8032 | |
| 8033 | return pPosX; |
| 8034 | |
| 8035 | loc_2A7DB:; |
| 8036 | pPosX = 0x3E8; |
| 8037 | return 0x3E8; |
| 8038 | } |
| 8039 | |
| 8040 | int32 cFodder::Map_Get_Distance_BetweenPositions(cPosition pPos1, cPosition pPos2, int32 pDistanceMax) { |
| 8041 |
nothing calls this directly
no outgoing calls
no test coverage detected