Исправление технологического пути барабана в ночном режиме

This commit is contained in:
VladislavOstapov 2023-02-13 11:58:10 +03:00
parent ee7658b131
commit e367ccebc4
2 changed files with 30 additions and 9 deletions

View File

@ -339,7 +339,12 @@ void scheduler_main()
case 3: case 3:
// ну а теперь конечная стадия - собсна раздача команд // ну а теперь конечная стадия - собсна раздача команд
// сначала выдаем команды второму роботу // сначала выдаем команды первому роботу
if (robot1_code.PC < 0) {
schedule_one_robot(ROBOT_1);
}
// потом второму
if (robot2_code.PC < 0) { if (robot2_code.PC < 0) {
if (robot2.dx.current_zone < ZONE_WASHING_1A) { if (robot2.dx.current_zone < ZONE_WASHING_1A) {
// то же самое что и во второй стадии, только без инкремента стадии // то же самое что и во второй стадии, только без инкремента стадии
@ -356,11 +361,6 @@ void scheduler_main()
} }
} }
// потом первому
if (robot1_code.PC < 0) {
schedule_one_robot(ROBOT_1);
}
break; break;
default: default:

27
utils.c
View File

@ -41,6 +41,9 @@ short get_first_night_zone() {
if (barrels[i].flags.is_exist && barrels[i].zone == NIGHT_ZONES[nz] && barrels[i].flags.is_night) { if (barrels[i].flags.is_exist && barrels[i].zone == NIGHT_ZONES[nz] && barrels[i].flags.is_night) {
found = 1; found = 1;
} }
if (NIGHT_ZONES[nz] == ZONE_LOAD_1 && barrels[i].flags.is_exist && barrels[i].zone == NIGHT_ZONES[nz]) {
found = 1;
}
} }
if (found == 0) { if (found == 0) {
@ -52,9 +55,27 @@ short get_first_night_zone() {
} }
short _get_dest_zone(struct barrel *bar) { short _get_dest_zone(struct barrel *bar, char robot_id) {
if (bar->flags.is_night) { if (bar->flags.is_night) {
return ZONE_LOAD_1; if (one_robot_mode) {
return ZONE_LOAD_1;
} else {
if (robot_id == ROBOT_1) {
// робот 1 может выкидывать барабаны только до зоны обмена
if (bar->zone >= hla_exchange_zone) {
return hla_exchange_zone;
} else {
return -1;
}
} else {
// робот 2 всегда кидает барабаны в загрузку 1, но только дальше зоны обмена он не имеет права брать
if (bar->zone <= hla_exchange_zone) {
return ZONE_LOAD_1;
} else {
return -1;
}
}
}
} }
// если это зона обмена и барабан пустой // если это зона обмена и барабан пустой
@ -231,7 +252,7 @@ short can_move(struct barrel *bar, char robot_id) {
} }
// дальше нужно проверить, что можно передвигать бочку // дальше нужно проверить, что можно передвигать бочку
short dest_zone = _get_dest_zone(bar); short dest_zone = _get_dest_zone(bar, robot_id);
if (zone_is_busy(dest_zone)) { if (zone_is_busy(dest_zone)) {
return -1; return -1;