From 87faf38ea97fffccc3cb4b16872da0188129aa66 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 13 五月 2025 09:08:12 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 50 +++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index 9b8be6c..45f6a71 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -333,7 +333,7 @@
for (int i = 0; i < outerCircle; i++) {
int idx = i + 1;
- List<NavigateNode> list = extend_nodes(map, currentNode, idx);
+ List<NavigateNode> list = extend_outer_nodes(map, currentNode, idx);
if (list.isEmpty()) {
continue;
}
@@ -374,7 +374,7 @@
for (int i = 0; i < innerCircle; i++) {
int idx = i + 1;
- List<NavigateNode> list = extend_nodes(map, currentNode, idx);
+ List<NavigateNode> list = extend_inner_nodes(map, currentNode, idx);
if (list.isEmpty()) {
continue;
}
@@ -397,7 +397,7 @@
return innerNodes;
}
- private List<NavigateNode> extend_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) {
+ private List<NavigateNode> extend_inner_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) {
//榛樿鍦板浘姣嶈建鏂瑰悜x
String mapDirection = "x";
ConfigService configService = SpringUtils.getBean(ConfigService.class);
@@ -504,6 +504,50 @@
return nodes;
}
+ private List<NavigateNode> extend_outer_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) {
+ ArrayList<NavigateNode> nodes = new ArrayList<>();
+ int x = startNode.getX();
+ int y = startNode.getY();
+ int z = startNode.getZ();
+
+ if (is_valid(map, x + innerCircleIdx, y)) {
+ NavigateNode node = new NavigateNode(x + innerCircleIdx, y);
+ node.setNodeValue(map[x + innerCircleIdx][y]);
+ node.setZ(z);
+ if (node.getNodeValue().equals(startNode.getNodeValue())) {
+ nodes.add(node);
+ }
+ }
+
+ if (is_valid(map, x - innerCircleIdx, y)) {
+ NavigateNode node = new NavigateNode(x - innerCircleIdx, y);
+ node.setNodeValue(map[x - innerCircleIdx][y]);
+ node.setZ(z);
+ if (node.getNodeValue().equals(startNode.getNodeValue())) {
+ nodes.add(node);
+ }
+ }
+
+ if (is_valid(map, x, y + innerCircleIdx)) {
+ NavigateNode node = new NavigateNode(x, y + innerCircleIdx);
+ node.setNodeValue(map[x][y + innerCircleIdx]);
+ node.setZ(z);
+ if (node.getNodeValue().equals(startNode.getNodeValue())) {
+ nodes.add(node);
+ }
+ }
+
+ if (is_valid(map, x, y - innerCircleIdx)) {
+ NavigateNode node = new NavigateNode(x, y - innerCircleIdx);
+ node.setNodeValue(map[x][y - innerCircleIdx]);
+ node.setZ(z);
+ if (node.getNodeValue().equals(startNode.getNodeValue())) {
+ nodes.add(node);
+ }
+ }
+ return nodes;
+ }
+
private boolean is_valid(int[][] map, int x, int y) {
if (x < 0 || x >= map.length
|| y < 0 || y >= map[0].length) {
--
Gitblit v1.9.1