| 8038 | } |
| 8039 | |
| 8040 | int32 cFodder::Map_Get_Distance_BetweenPositions(cPosition pPos1, cPosition pPos2, int32 pDistanceMax) { |
| 8041 | |
| 8042 | pPos2.mX -= pPos1.mX; |
| 8043 | if (pPos2.mX < 0) |
| 8044 | pPos2.mX = -pPos2.mX; |
| 8045 | |
| 8046 | if (pPos2.mX >= pDistanceMax) |
| 8047 | goto loc_2A7DB; |
| 8048 | |
| 8049 | pPos2.mY -= pPos1.mY; |
| 8050 | if (pPos2.mY < 0) |
| 8051 | pPos2.mY = -pPos2.mY; |
| 8052 | |
| 8053 | if (pPos2.mY >= pDistanceMax) |
| 8054 | goto loc_2A7DB; |
| 8055 | |
| 8056 | pDistanceMax = 0; |
| 8057 | for (;;) { |
| 8058 | if (pPos2.mX <= 0x1F) |
| 8059 | if (pPos2.mY <= 0x1F) |
| 8060 | break; |
| 8061 | |
| 8062 | pPos2.mX >>= 1; |
| 8063 | pPos2.mY >>= 1; |
| 8064 | ++pDistanceMax; |
| 8065 | } |
| 8066 | //loc_2A7AD |
| 8067 | pPos2.mY <<= 5; |
| 8068 | pPos2.mY |= pPos2.mX; |
| 8069 | |
| 8070 | if (pPos2.mY >= sizeof(mMap_Distance_Calculations) / sizeof(mMap_Distance_Calculations[0]) - 1) |
| 8071 | goto loc_2A7DB; |
| 8072 | |
| 8073 | pPos1.mX = mMap_Distance_Calculations[pPos2.mY]; |
| 8074 | pPos1.mX <<= pDistanceMax; |
| 8075 | |
| 8076 | return pPos1.mX; |
| 8077 | |
| 8078 | loc_2A7DB:; |
| 8079 | return 0x3E8; |
| 8080 | } |
| 8081 | |
| 8082 | /** |
| 8083 | * |
no outgoing calls
no test coverage detected