From 929a95504f7c93a0f68926f22c979bf64aeeee63 Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Mon, 20 Feb 2023 12:38:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B8=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B2=D1=82=D0=BE=D1=80=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=86=D0=B8=D0=BD=D0=BA=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B2=20=D0=BF=D0=BB=D0=B0=D0=BD=D0=B8=D1=80=D0=BE=D0=B2=D1=89?= =?UTF-8?q?=D0=B8=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/utils.c b/utils.c index 123bf2b..b625c18 100644 --- a/utils.c +++ b/utils.c @@ -90,8 +90,17 @@ short _get_dest_zone(struct barrel *bar, char robot_id) { switch (bar->zone) { case ZONE_LOAD_2: - // загрузка 2, только в нее можно грузить новые барабаны, нужно обезжиривание - return ZONE_DEGREASING; + // загрузка 2, только в нее можно грузить новые барабаны, по умолчанию следующая зона - обезжиривание + // при повторном цинковании это кислота + if (hla_zinc_again) { + if (etching_zone < 0) { + return -1; + } else { + return (short)(ZONE_ETCHING_1 + etching_zone); + } + } else { + return ZONE_DEGREASING; + } case ZONE_DEGREASING: // обезжиривание, нужна промывка 1А @@ -404,7 +413,6 @@ char remove_barrel_from_zone(short zone) { #ifdef EMULATOR void debug_print_robot_code(const struct robot_code *code, const short robot_id, int fd) { -// dprintf(fd, "INFO: code length is %d\n", cmd_index); dprintf(fd, "Code for R%d, B%d:\n", robot_id, code->barrel_id); for (int i = 0; i < 16; i++) { const short cmd_arg = (short)(code->code[i] & (short)(~ROBOT_CMD_MASK)); @@ -500,6 +508,11 @@ 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 == ZONE_LOAD_2) { + hla_zinc_again = 0; + } } short cmd_index = 0;