MCPcopy Create free account
hub / github.com/TurningWheel/Barony / monsterMoveBackwardsAndPath

Method monsterMoveBackwardsAndPath

src/actmonster.cpp:12304–12420  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12302}
12303
12304void Entity::monsterMoveBackwardsAndPath(bool trySidesFirst)
12305{
12306 while ( yaw < 0 )
12307 {
12308 yaw += 2 * PI;
12309 }
12310 while ( yaw >= 2 * PI )
12311 {
12312 yaw -= 2 * PI;
12313 }
12314 int x1 = ((int)floor(x)) >> 4;
12315 int y1 = ((int)floor(y)) >> 4;
12316 int u, v;
12317 std::vector<std::pair<int, int>> areaToTry;
12318 if ( yaw <= PI / 4 || yaw > 7 * PI / 4 )
12319 {
12320 areaToTry.push_back(std::pair<int, int>(x1 - 1, y1));
12321 areaToTry.push_back(std::pair<int, int>(x1 - 1, y1 + 1));
12322 areaToTry.push_back(std::pair<int, int>(x1 - 1, y1 - 1));
12323 areaToTry.push_back(std::pair<int, int>(x1 - 2, y1));
12324 areaToTry.push_back(std::pair<int, int>(x1 - 2, y1 + 1));
12325 areaToTry.push_back(std::pair<int, int>(x1 - 2, y1 - 1));
12326 areaToTry.push_back(std::pair<int, int>(x1 - 3, y1));
12327 }
12328 else if ( yaw > PI / 4 && yaw <= 3 * PI / 4 )
12329 {
12330 areaToTry.push_back(std::pair<int, int>(x1, y1 - 1));
12331 areaToTry.push_back(std::pair<int, int>(x1 + 1, y1 - 1));
12332 areaToTry.push_back(std::pair<int, int>(x1 - 1, y1 - 1));
12333 areaToTry.push_back(std::pair<int, int>(x1, y1 - 2));
12334 areaToTry.push_back(std::pair<int, int>(x1 - 1, y1 - 2));
12335 areaToTry.push_back(std::pair<int, int>(x1 + 1, y1 - 2));
12336 areaToTry.push_back(std::pair<int, int>(x1, y1 - 3));
12337 }
12338 else if ( yaw > 3 * PI / 4 && yaw <= 5 * PI / 4 )
12339 {
12340 areaToTry.push_back(std::pair<int, int>(x1 + 1, y1));
12341 areaToTry.push_back(std::pair<int, int>(x1 + 1, y1 + 1));
12342 areaToTry.push_back(std::pair<int, int>(x1 + 2, y1 - 1));
12343 areaToTry.push_back(std::pair<int, int>(x1 + 2, y1 + 1));
12344 areaToTry.push_back(std::pair<int, int>(x1 + 2, y1 - 1));
12345 areaToTry.push_back(std::pair<int, int>(x1 + 3, y1));
12346 }
12347 else if ( yaw > 5 * PI / 4 && yaw <= 7 * PI / 4 )
12348 {
12349 areaToTry.push_back(std::pair<int, int>(x1, y1 + 1));
12350 areaToTry.push_back(std::pair<int, int>(x1 + 1, y1 + 1));
12351 areaToTry.push_back(std::pair<int, int>(x1 - 1, y1 + 1));
12352 areaToTry.push_back(std::pair<int, int>(x1, y1 + 2));
12353 areaToTry.push_back(std::pair<int, int>(x1 - 1, y1 + 2));
12354 areaToTry.push_back(std::pair<int, int>(x1 + 1, y1 + 2));
12355 areaToTry.push_back(std::pair<int, int>(x1, y1 + 3));
12356 }
12357 bool foundplace = false;
12358
12359 if ( trySidesFirst )
12360 {
12361 std::vector<std::pair<int, int>> sidesToTry;

Callers 1

actMonsterFunction · 0.80

Calls 7

checkObstacleFunction · 0.85
generatePathFunction · 0.85
list_RemoveNodeFunction · 0.85
list_AddNodeFirstFunction · 0.85
randMethod · 0.80
beginMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected