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

Method calculatePath

Source/Map/Random.cpp:296–333  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

294}
295
296std::vector<cPosition*> cRandomMap::calculatePath(size_t pSpriteType, cPosition* Pos1, cPosition* Pos2) {
297 std::vector<cPosition> path;
298
299 mPathSearchUnitType = pSpriteType;
300
301 switch (pSpriteType) {
302 default:
303 mPathTilesNotTouchable = mTiles_NotWalkable;
304 break;
305
306 case eSprite_Tank_Enemy:
307 case eSprite_Tank_Human:
308 mPathTilesNotTouchable = mTiles_NotDriveable;
309 break;
310
311 case eSprite_Civilian:
312 case eSprite_Civilian2:
313 case eSprite_Hostage:
314 case eSprite_Enemy_Leader:
315 mPathTilesNotTouchable = mTiles_NotFlyable;
316 break;
317
318 }
319
320 auto pather = new micropather::MicroPather(this, 1000);
321 float totalCost;
322 auto result = pather->Solve(Pos1, Pos2, &path, &totalCost);
323
324 delete pather;
325
326 std::vector<cPosition*> paths;
327
328 for (auto p : path) {
329 paths.push_back(new cPosition(p));
330 }
331
332 return paths;
333}
334
335int cRandomMap::Passable(int nx, int ny)
336{

Callers

nothing calls this directly

Calls 2

SolveMethod · 0.80
push_backMethod · 0.45

Tested by

no test coverage detected