Исправление технологического пути барабана в ночном режиме
This commit is contained in:
parent
ee7658b131
commit
e367ccebc4
12
scheduler.c
12
scheduler.c
@ -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
27
utils.c
@ -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;
|
||||||
|
Reference in New Issue
Block a user