From 848e3cfdcbd8e90605dcebcb26de24dbdc20d233 Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Sun, 29 Jan 2023 20:27:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D1=82=D0=B5=D1=85=D0=BF=D1=80=D0=BE=D1=86=D0=B5?= =?UTF-8?q?=D1=81=D1=81=D0=B0,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils.c | 117 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 65 insertions(+), 52 deletions(-) diff --git a/utils.c b/utils.c index b0a13f6..9053c40 100644 --- a/utils.c +++ b/utils.c @@ -203,7 +203,7 @@ short can_move(struct barrel *bar, char robot_id) { if (robot_id == 1) { approximate_time = bar->zone - robot1.dx.current_zone; } else { - approximate_time = bar->zone - robot1.dx.current_zone; + approximate_time = bar->zone - robot2.dx.current_zone; } // abs(approximate_time) @@ -239,8 +239,8 @@ short can_move(struct barrel *bar, char robot_id) { if (border < robot2_lock_zone) { border = robot2_lock_zone; } - if (border < ZONE_WASHING_2A) { - border = ZONE_WASHING_2A; + if (border < ZONE_ETCHING_2) { + border = ZONE_ETCHING_2; } border += LOCK_ZONE_BORDER; @@ -493,6 +493,10 @@ void create_operation(struct robot_code *code, short barrel_id, const short star if (hla_night_mode && barrels[barrel_id].flags.is_empty && dest_zone == get_first_night_zone()) { barrels[barrel_id].flags.is_night = -1; } + + if (start_zone == 22) { + button_unload = 0; + } } short cmd_index = 0; @@ -631,11 +635,15 @@ void create_operation(struct robot_code *code, short barrel_id, const short star code->code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL(dest_zone); - // инкремент зоны (если травление или цинкование) - if (dest_zone == ZONE_ETCHING_1 || dest_zone == ZONE_ETCHING_2) { - code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_ETCH); - } else if (dest_zone >= ZONE_GALVANIZING_1 && dest_zone <= ZONE_GALVANIZING_8) { - code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_GAL); + if (barrel_id >= 0) { + if (!barrels[barrel_id].flags.is_empty) { + // инкремент зоны (если травление или цинкование) + if (dest_zone == ZONE_ETCHING_1 || dest_zone == ZONE_ETCHING_2) { + code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_ETCH); + } else if (dest_zone >= ZONE_GALVANIZING_1 && dest_zone <= ZONE_GALVANIZING_8) { + code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_GAL); + } + } } code->code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL(); @@ -646,60 +654,65 @@ void create_operation(struct robot_code *code, short barrel_id, const short star code->code[cmd_index++] = ROBOT_CMD_UP(); code->code[cmd_index++] = ROBOT_CMD_DOWN(); } else { - if (dest_zone != 0) { // установка времени ожидания барабана short tmp = -1; - switch (dest_zone) { - case ZONE_DEGREASING: - tmp = barrels[barrel_id].time_degreasing; - break; + if (barrel_id >= 0) { + if (!barrels[barrel_id].flags.is_empty) { + switch (dest_zone) { + case ZONE_DEGREASING: + tmp = barrels[barrel_id].time_degreasing; + break; - case ZONE_ETCHING_1: - case ZONE_ETCHING_2: - tmp = barrels[barrel_id].time_etching; - break; + case ZONE_ETCHING_1: + case ZONE_ETCHING_2: + tmp = barrels[barrel_id].time_etching; + break; - case ZONE_GALVANIZING_1: - case ZONE_GALVANIZING_2: - case ZONE_GALVANIZING_3: - case ZONE_GALVANIZING_4: - case ZONE_GALVANIZING_5: - case ZONE_GALVANIZING_6: - case ZONE_GALVANIZING_7: - case ZONE_GALVANIZING_8: - tmp = barrels[barrel_id].time_galvanizing; - break; + case ZONE_GALVANIZING_1: + case ZONE_GALVANIZING_2: + case ZONE_GALVANIZING_3: + case ZONE_GALVANIZING_4: + case ZONE_GALVANIZING_5: + case ZONE_GALVANIZING_6: + case ZONE_GALVANIZING_7: + case ZONE_GALVANIZING_8: + tmp = barrels[barrel_id].time_galvanizing; + break; - case ZONE_WASHING_1A: - tmp = barrels[barrel_id].time_washing_1a; - break; - case ZONE_WASHING_2A: - tmp = barrels[barrel_id].time_washing_2a; - break; - case ZONE_WASHING_3A: - tmp = barrels[barrel_id].time_washing_3a; - break; - case ZONE_WASHING_4A: - tmp = barrels[barrel_id].time_washing_4a; - break; + case ZONE_WASHING_1A: + tmp = barrels[barrel_id].time_washing_1a; + break; + case ZONE_WASHING_2A: + tmp = barrels[barrel_id].time_washing_2a; + break; + case ZONE_WASHING_3A: + tmp = barrels[barrel_id].time_washing_3a; + break; + case ZONE_WASHING_4A: + tmp = barrels[barrel_id].time_washing_4a; + break; - case ZONE_WASHING_1B: - tmp = barrels[barrel_id].time_washing_1b; - break; - case ZONE_WASHING_2B: - tmp = barrels[barrel_id].time_washing_2b; - break; - case ZONE_WASHING_3B: - tmp = barrels[barrel_id].time_washing_3b; - break; - case ZONE_WASHING_4B: - tmp = barrels[barrel_id].time_washing_4b; - break; + case ZONE_WASHING_1B: + tmp = barrels[barrel_id].time_washing_1b; + break; + case ZONE_WASHING_2B: + tmp = barrels[barrel_id].time_washing_2b; + break; + case ZONE_WASHING_3B: + tmp = barrels[barrel_id].time_washing_3b; + break; + case ZONE_WASHING_4B: + tmp = barrels[barrel_id].time_washing_4b; + break; + } + } else { + tmp = 0; + } } - if (tmp > 0) { + if (tmp >= 0) { if (tmp > 8000) { tmp = 8000; }