158 {
159 for (auto& unit : info.units) {
160 if (!unit || !unit->exists()) {
161 continue;
162 }
163
164
165 const BWAPI::UnitCommand command = unit->getLastCommand();
166
167 BWAPI::Broodwar->drawCircleMap(unit->getPosition(), 5, info.squadColor, true);
168 if (unit == leader) {
169 BWAPI::Broodwar->drawCircleMap(unit->getPosition(), 2, BWAPI::Colors::White, true);
170 BWAPI::Broodwar->drawTextMap(BWAPI::Position(unit->getPosition().x - 12, unit->getPosition().y + 20), "LEADER", BWAPI::Colors::White);
171
172 if (info.currentState == &AttackingState::getInstance()) {
173 BWAPI::Broodwar->drawTextMap(BWAPI::Position(unit->getPosition().x - 16, unit->getPosition().y + 25), "-ATTACKING-", BWAPI::Colors::Orange);
174 }
175 if (info.currentState == &DefendingState::getInstance()) {
176 BWAPI::Broodwar->drawTextMap(BWAPI::Position(unit->getPosition().x - 16, unit->getPosition().y + 25), "-DEFENDING-", BWAPI::Colors::Orange);
177 }
178 if (info.currentState == &IdleState::getInstance()) {
179 BWAPI::Broodwar->drawTextMap(BWAPI::Position(unit->getPosition().x - 16, unit->getPosition().y + 25), "-IDLE-", BWAPI::Colors::Orange);
180 }
181 }
182
183 if (command.getTargetPosition() != BWAPI::Positions::None) {
184 BWAPI::Broodwar->drawLineMap(unit->getPosition(), command.getTargetPosition(), info.squadColor);
185 }
186 if (command.getTargetTilePosition() != BWAPI::TilePositions::None) {
187 BWAPI::Broodwar->drawLineMap(unit->getPosition(), BWAPI::Position(command.getTargetTilePosition()), info.squadColor);
188 }
189 if (command.getTarget() != nullptr) {
190 BWAPI::Broodwar->drawLineMap(unit->getPosition(), command.getTarget()->getPosition(), info.squadColor);
191 }
192
193
194 const BWAPI::Position textPos(unit->getPosition().x - 20, unit->getPosition().y + 20);
195 BWAPI::Broodwar->drawTextMap(textPos, "%d", info.squadId);
196 }
197}