Исправление приоритета ночных барабанов
This commit is contained in:
parent
885e64062e
commit
2297d7c7a9
@ -292,10 +292,6 @@ void scheduler_main()
|
|||||||
scheduler_stage = 0;
|
scheduler_stage = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// а вот для режима двух роботов все интересно
|
|
||||||
// для каждого робота нужно получить свой список задач
|
|
||||||
// и надо еще сделать так, чтобы роботы не столкнулись
|
|
||||||
|
|
||||||
switch (scheduler_stage) {
|
switch (scheduler_stage) {
|
||||||
case 0:
|
case 0:
|
||||||
// посылаем робота 1 в жопу линии, если он не в жопе
|
// посылаем робота 1 в жопу линии, если он не в жопе
|
||||||
|
16
utils.c
16
utils.c
@ -282,29 +282,23 @@ short get_operation_priority(short barrel_id) {
|
|||||||
|
|
||||||
// если барабан в ночном режиме, то приоритет 1 самому левому, остальным 0
|
// если барабан в ночном режиме, то приоритет 1 самому левому, остальным 0
|
||||||
if (barrels[barrel_id].flags.is_night) {
|
if (barrels[barrel_id].flags.is_night) {
|
||||||
char is_not_one = 0;
|
short min_zone = barrels[barrel_id].zone;
|
||||||
char is_with_max_time = 1;
|
|
||||||
|
|
||||||
for (short i = 0; i < BARRELS_COUNT; i++) {
|
for (short i = 0; i < BARRELS_COUNT; i++) {
|
||||||
if (i == barrel_id) {
|
if (i == barrel_id) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (barrels[i].flags.is_exist && barrels[i].flags.is_night) {
|
if (barrels[i].flags.is_exist && barrels[i].flags.is_night && barrels[i].flags.robot == 0 && !barrels[i].flags.is_up) {
|
||||||
if (can_move(barrels + i, ROBOT_NONE) >= 0) {
|
if (can_move(barrels + i, ROBOT_NONE) >= 0) {
|
||||||
is_not_one = 1;
|
|
||||||
// чем больше у барабана время ожидания тем меньше у него число
|
// чем больше у барабана время ожидания тем меньше у него число
|
||||||
if (barrels[i].software_timer < barrels[barrel_id].software_timer) {
|
if (barrels[i].zone < min_zone) {
|
||||||
is_with_max_time = 0;
|
min_zone = barrels[i].zone;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_not_one == 0) {
|
return (min_zone == barrels[barrel_id].zone) ? 1 : 0;
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return is_with_max_time;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// сделать приоритет на барабан, который больше всего ждет
|
// сделать приоритет на барабан, который больше всего ждет
|
||||||
|
Reference in New Issue
Block a user