MCPcopy Create free account
hub / github.com/bwapi/bwapi / ReservePlacement

Function ReservePlacement

bwapi/BWAPILIB/Source/Game.cpp:405–463  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

403 }
404
405 void ReservePlacement(PlacementReserve &reserve, UnitType type, TilePosition desiredPosition, bool /*creep*/)
406 {
407 // Reset the array
408 reserve.reset();
409
410 AssignBuildableLocations(reserve, type, desiredPosition);
411 RemoveDisconnected(reserve, desiredPosition);
412
413 // @TODO: Assign 0 to all locations that have a ground distance > maxRange
414
415 // exclude positions off the map
416 TilePosition start = desiredPosition - TilePosition(MAX_RANGE,MAX_RANGE)/2;
417 reserve.iterate( [&](PlacementReserve *pr, int x, int y)
418 {
419 if ( !(start+TilePosition(x,y)).isValid() )
420 pr->setValue(x, y, 0);
421 } );
422
423 // Return if can't find a valid space
424 if ( !reserve.hasValidSpace() )
425 return;
426
427 ReserveGroundHeight(reserve, desiredPosition);
428 //ReserveUnbuildable(reserve, type, desiredPosition); // NOTE: canBuildHere already includes this!
429
430 if ( !type.isResourceDepot() )
431 {
432 ReserveAllStructures(reserve, type, desiredPosition);
433 ReserveExistingAddonPlacement(reserve, desiredPosition);
434 }
435
436 // Unit-specific reservations
437 switch ( type )
438 {
439 case UnitTypes::Enum::Protoss_Pylon: // @TODO
440 //reservePylonPlacement();
441 break;
442 case UnitTypes::Enum::Terran_Bunker: // @TODO
443 //if ( !GetBunkerPlacement() )
444 {
445 //reserveTurretPlacement();
446 }
447 break;
448 case UnitTypes::Enum::Terran_Missile_Turret: // @TODO
449 case UnitTypes::Enum::Protoss_Photon_Cannon:
450 //reserveTurretPlacement();
451 break;
452 case UnitTypes::Enum::Zerg_Creep_Colony: // @TODO
453 //if ( creep || !GetBunkerPlacement() )
454 {
455 //reserveTurretPlacement();
456 }
457 break;
458 default:
459 if ( !type.isResourceDepot() )
460 ReserveDefault(reserve, type, desiredPosition);
461 break;
462 }

Callers 1

getBuildLocationMethod · 0.85

Calls 12

AssignBuildableLocationsFunction · 0.85
RemoveDisconnectedFunction · 0.85
ReserveGroundHeightFunction · 0.85
ReserveAllStructuresFunction · 0.85
ReserveDefaultFunction · 0.85
resetMethod · 0.80
iterateMethod · 0.80
setValueMethod · 0.80
hasValidSpaceMethod · 0.80
isResourceDepotMethod · 0.80
isValidMethod · 0.45

Tested by

no test coverage detected