本文整理汇总了C++中aithread::getLocation方法的典型用法代码示例。如果您正苦于以下问题:C++ aithread::getLocation方法的具体用法?C++ aithread::getLocation怎么用?C++ aithread::getLocation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类aithread
的用法示例。
在下文中一共展示了aithread::getLocation方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
bool Enter_Transport::execute(aithread &thread) const
{
if ( this->getOpcode() == AISCRIPT::Enum::ENTER_BUNKER || this->getOpcode() == AISCRIPT::Enum::ENTER_TRANSPORT )
{
Unitset unitsForTrans( Broodwar->getUnitsInRectangle(thread.getLocation().topLeft, thread.getLocation().bottomRight,
this->getOpcode() == AISCRIPT::Enum::ENTER_BUNKER ? bunkerProc : transProc) );
// Iterate the units that are to enter the bunkers
for ( auto u : unitsForTrans )
{
// Find a bunker closest to the current unit that has space available
Unit pClosest = u->getClosestUnit( (this->getOpcode() == AISCRIPT::Enum::ENTER_BUNKER ? GetType == UnitTypes::Terran_Bunker : GetType != UnitTypes::Terran_Bunker) &&
IsTransport &&
GetPlayer == Broodwar->self() &&
SpaceRemaining >= u->getType().spaceRequired() );
if ( pClosest ) // If a bunker was found
u->rightClick(pClosest);
}
}
else if ( this->getOpcode() == AISCRIPT::Enum::EXIT_TRANSPORT )
{
// Normally we are supposed to check the type here, but we don't need to save processing time and can let BWAPI sort it out
Broodwar->getUnitsInRectangle(thread.getLocation().topLeft, thread.getLocation().bottomRight).unloadAll();
}
// Debug and return
thread.saveDebug(Text::Green, this->getOpcode());
return true;
}
示例2: execute
bool Player_Ally::execute(aithread &thread) const
{
// @TODO: BWAPI: Unitset::getPlayers for retrieving set of players owning the units, not important
/* can become
unitsInRect( bw->getUnitsInRectangle(location.topLeft, location.bottomRight, GetPlayer != self) ).getPlayers().setAlliance(bOpcode == AISCRIPT::Enum::PLAYER_ALLY);
*/
// Set the alliance of all players who own units inside the thread's execution location
Unitset units( Broodwar->getUnitsInRectangle(thread.getLocation().topLeft, thread.getLocation().bottomRight, GetPlayer != Broodwar->self()) );
for ( auto u = units.begin(); u != units.end(); ++u )
Broodwar->setAlliance(u->getPlayer(), this->getOpcode() == AISCRIPT::Enum::PLAYER_ALLY);
// Debug and return
thread.saveDebug(Text::Green, this->getOpcode());
return true;
}
示例3: execute
bool Move_DT::execute(aithread &thread) const
{
// Execute
Unitset myUnits( Broodwar->self()->getUnits() );
// NOTE: Not actual behaviour. Needs special AI Control & Captain assignment.
// However this command is not important and serves little purpose.
myUnits.erase_if(!((GetType == UnitTypes::Protoss_Dark_Templar || GetType == UnitTypes::Hero_Dark_Templar) && Exists && IsCompleted));
myUnits.move( thread.getLocation().center() );
// Debug and return
thread.saveDebug(Text::Yellow, this->getOpcode());
return true;
}