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

Method executeCommand

bwapi/BWAPI/Source/BWAPI/GameCommands.cpp:51–286  ·  view source on GitHub ↗

--------------------------------------------- EXECUTE COMMAND --------------------------------------------

Source from the content-addressed store, hash-verified

49
50 //--------------------------------------------- EXECUTE COMMAND --------------------------------------------
51 void GameImpl::executeCommand(UnitCommand command)
52 {
53 apmCounter.addNoSelect();
54
55 UnitCommandType ct = command.type;
56 bool queued = command.isQueued();
57 if (ct == UnitCommandTypes::Attack_Move)
58 {
59 if ( command.unit && command.unit->getType() == UnitTypes::Zerg_Infested_Terran )
60 QUEUE_COMMAND(BW::Orders::Attack, command.x, command.y, Orders::Enum::Attack1, queued);
61 else
62 QUEUE_COMMAND(BW::Orders::Attack, command.x, command.y, Orders::Enum::AttackMove, queued);
63 }
64 else if (ct == UnitCommandTypes::Attack_Unit)
65 {
66 UnitType ut = command.unit ? command.unit->getType() : UnitTypes::None;
67 if ( ut == UnitTypes::Protoss_Carrier || ut == UnitTypes::Hero_Gantrithor )
68 QUEUE_COMMAND(BW::Orders::Attack, command.target, Orders::Enum::CarrierAttack, queued);
69 else if ( ut == UnitTypes::Protoss_Reaver || ut == UnitTypes::Hero_Warbringer )
70 QUEUE_COMMAND(BW::Orders::Attack, command.target, Orders::Enum::ReaverAttack, queued);
71 else if ( ut.isBuilding() )
72 QUEUE_COMMAND(BW::Orders::Attack, command.target, Orders::Enum::TowerAttack, queued);
73 else
74 QUEUE_COMMAND(BW::Orders::Attack, command.target, Orders::Enum::Attack1, queued);
75 }
76 else if (ct == UnitCommandTypes::Build)
77 {
78 UnitType extraType(command.extra);
79 if ( command.unit && command.unit->getType() == BWAPI::UnitTypes::Zerg_Nydus_Canal &&
80 extraType == UnitTypes::Zerg_Nydus_Canal )
81 QUEUE_COMMAND(BW::Orders::MakeNydusExit, command.x, command.y);
82 else if ( extraType.isAddon() )
83 QUEUE_COMMAND(BW::Orders::MakeAddon, command.x, command.y, extraType);
84 else
85 QUEUE_COMMAND(BW::Orders::MakeBuilding, command.x, command.y, extraType);
86 }
87 else if ( ct == UnitCommandTypes::Build_Addon && command.unit )
88 {
89 TilePosition target = command.unit->getTilePosition() + TilePosition(4, 1);
90 QUEUE_COMMAND(BW::Orders::MakeAddon, BW::TilePosition(target.makeValid()), command.getUnitType());
91 }
92 else if ( ct == UnitCommandTypes::Train )
93 {
94 UnitType type1(command.extra);
95 switch ( command.unit ? command.unit->getType() : UnitTypes::None )
96 {
97 case UnitTypes::Enum::Zerg_Larva:
98 case UnitTypes::Enum::Zerg_Mutalisk:
99 case UnitTypes::Enum::Zerg_Hydralisk:
100 QUEUE_COMMAND(BW::Orders::UnitMorph, type1);
101 break;
102 case UnitTypes::Enum::Zerg_Hatchery:
103 case UnitTypes::Enum::Zerg_Lair:
104 case UnitTypes::Enum::Zerg_Spire:
105 case UnitTypes::Enum::Zerg_Creep_Colony:
106 QUEUE_COMMAND(BW::Orders::BuildingMorph, type1);
107 break;
108 case UnitTypes::Enum::Protoss_Carrier:

Callers 3

issueCommandMethod · 0.80
issueCommandMethod · 0.80
flushMethod · 0.80

Calls 14

addNoSelectMethod · 0.80
isQueuedMethod · 0.80
isBuildingMethod · 0.80
isAddonMethod · 0.80
getTilePositionMethod · 0.80
getUnitTypeMethod · 0.80
getTechTypeMethod · 0.80
getUpgradeTypeMethod · 0.80
isSiegedMethod · 0.80
isCloakedMethod · 0.80
isBurrowedMethod · 0.80
getTypeMethod · 0.45

Tested by

no test coverage detected