Beispiel #1
0
 def parse_areas(map_info: dict) -> Tuple[List[Area], List[Area], List[Wall]]:
     no_go_areas = []
     no_mopping_areas = []
     walls = []
     if "area" in map_info:
         areas = map_info["area"]
         for area in areas:
             if "active" in area and area["active"] == "forbid" and "vertexs" in area and len(area["vertexs"]) == 4:
                 vertexs = area["vertexs"]
                 x0 = vertexs[0][0]
                 y0 = vertexs[0][1]
                 x1 = vertexs[1][0]
                 y1 = vertexs[1][1]
                 x2 = vertexs[2][0]
                 y2 = vertexs[2][1]
                 x3 = vertexs[3][0]
                 y3 = vertexs[3][1]
                 no_area = Area(x0, y0, x1, y1, x2, y2, x3, y3)
                 if "forbidType" in area and area["forbidType"] == "mop":
                     no_mopping_areas.append(no_area)
                 if "forbidType" in area and area["forbidType"] == "all":
                     no_go_areas.append(no_area)
             if "active" in area and area["active"] == "forbid" and "vertexs" in area and len(area["vertexs"]) == 2:
                 vertexs = area["vertexs"]
                 x0 = vertexs[0][0]
                 y0 = vertexs[0][1]
                 x1 = vertexs[1][0]
                 y1 = vertexs[1][1]
                 wall = Wall(x0, y0, x1, y1)
                 if "forbidType" in area and area["forbidType"] == "all":
                     walls.append(wall)
     return no_go_areas, no_mopping_areas, walls
 def parse_areas(areas: list) -> List[Area]:
     parsed_areas = []
     for area in areas:
         x_coords = sorted([area[0], area[2]])
         y_coords = sorted([area[1], area[3]])
         parsed_areas.append(
             Area(x_coords[0], y_coords[0], x_coords[1], y_coords[0],
                  x_coords[1], y_coords[1], x_coords[0], y_coords[1]))
     return parsed_areas
 def parse_restricted_areas(buf: ParsingBuffer) -> Tuple[List[Wall], List[Area]]:
     walls = []
     areas = []
     buf.skip('unknown1', 4)
     area_count = buf.get_uint32('area_count')
     for _ in range(area_count):
         buf.skip('restricted.unknown1', 12)
         p1 = MapDataParserViomi.parse_position(buf, 'p1')
         p2 = MapDataParserViomi.parse_position(buf, 'p2')
         p3 = MapDataParserViomi.parse_position(buf, 'p3')
         p4 = MapDataParserViomi.parse_position(buf, 'p4')
         buf.skip('restricted.unknown2', 48)
         _LOGGER.debug('restricted: %s %s %s %s', p1, p2, p3, p4)
         if p1 == p2 and p3 == p4:
             walls.append(Wall(p1.x, p1.y, p3.x, p3.y))
         else:
             areas.append(Area(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, p4.x, p4.y))
     return walls, areas