// gets called every frame from GameCommander void BuildingManager::update() { // Step through building logic, issue orders, manage data as necessary //drawBuildingInformation(340, 50); // check to see if assigned workers have died en route or while constructing validateWorkersAndBuildings(); // assign workers to the unassigned buildings and label them 'planned' assignWorkersToUnassignedBuildings(); // for each planned building, if the worker isn't constructing, send the command constructAssignedBuildings(); // check to see if any buildings have started construction and update data structures checkForStartedConstruction(); // if we are terran and a building is under construction without a worker, assign a new one checkForDeadTerranBuilders(); // check to see if any buildings have completed and update data structures checkForCompletedBuildings(); // draw some debug information //BuildingPlacer::Instance().drawReservedTiles(); }
// gets called every frame from GameCommander void BuildingManager::onFrame() { for (auto & unit : m_bot.UnitInfo().getUnits(Players::Self)) { // filter out units which aren't buildings under construction if (m_bot.Data(unit.unit_type).isBuilding) { std::stringstream ss; ss << unit.tag; m_bot.Map().drawText(unit.pos, ss.str()); } } validateWorkersAndBuildings(); // check to see if assigned workers have died en route or while constructing assignWorkersToUnassignedBuildings(); // assign workers to the unassigned buildings and label them 'planned' constructAssignedBuildings(); // for each planned building, if the worker isn't constructing, send the command checkForStartedConstruction(); // check to see if any buildings have started construction and update data structures checkForDeadTerranBuilders(); // if we are terran and a building is under construction without a worker, assign a new one checkForCompletedBuildings(); // check to see if any buildings have completed and update data structures drawBuildingInformation(); }