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

Method Map_Get_Distance_BetweenPositions

Source/Fodder.cpp:8040–8080  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8038}
8039
8040int32 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
8078loc_2A7DB:;
8079 return 0x3E8;
8080}
8081
8082/**
8083 *

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected