From efabc6ba991acfd01d38bb0bf4e8cfd772416617 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 05 一月 2026 13:07:39 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/map/tool.js |   72 ++++++++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 68068b5..32a05dc 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -29,6 +29,13 @@
 import ctuLoadedNoBattery from '/map/agv/ctuLoadedNoBattery.svg';
 import ctuLoadedHalfBattery from '/map/agv/ctuLoadedHalfBattery.svg';
 import ctuLoadedFullBattery from '/map/agv/ctuLoadedFullBattery.svg';
+// asr
+import ASREmptyNoBattery from '/map/asr/ASREmptyNoBattery.svg';
+import ASREmptyHalfBattery from '/map/asr/ASREmptyHalfBattery.svg';
+import ASREmptyFullBattery from '/map/asr/ASREmptyFullBattery.svg';
+import ASRLoadedNoBattery from '/map/asr/ASRLoadedNoBattery.svg';
+import ASRLoadedHalfBattery from '/map/asr/ASRLoadedHalfBattery.svg';
+import ASRLoadedFullBattery from '/map/asr/ASRLoadedFullBattery.svg';
 
 let app, mapContainer, themeMode;
 let selectedSprite, effectOverlay, effectTicker;
@@ -114,6 +121,11 @@
             sprite.width = 750;
             sprite.height = 1300;
             sprite.zIndex = DEVICE_Z_INDEX.AGV;
+
+            // // sprite.width = 750;
+            // // sprite.height = 1300;
+            // sprite.zIndex = DEVICE_Z_INDEX.AGV;
+            // sprite.scale.set(12, 10)
             break
         case DEVICE_TYPE.POINT:
             sprite = new PIXI.Sprite(PIXI.Texture.from(point, { resourceOptions: { scale: 1 } }));
@@ -597,6 +609,12 @@
     if (!mapContainer || !sprite) {
         return;
     }
+    const data = sprite.data || (sprite.data = {});
+
+    if (data.rotationTween) {
+        data.rotationTween.stop();
+        data.rotationTween = null;
+    }
     // origin
     let currentRotation = sprite.rotation + rotationOffset;
     // target
@@ -612,7 +630,7 @@
     // destination
     const endRotation = sprite.rotation + rotationDifference;
 
-    new TWEEDLE.Tween(sprite)
+    const rotationTween = new TWEEDLE.Tween(sprite)
         .to({ rotation: endRotation }, ANIMATE_DURING_TIME)
         .easing(TWEEDLE.Easing.Linear.None)
         .onUpdate(() => {
@@ -622,6 +640,12 @@
             }
         })
         .start();
+    data.rotationTween = rotationTween;
+    rotationTween.onComplete(() => {
+        if (data.rotationTween === rotationTween) {
+            data.rotationTween = null;
+        }
+    });
 };
 
 export const incrementSpriteNo = (str, incrementValue) => {
@@ -693,6 +717,25 @@
             return;
     }
 }
+
+// export const generateAgvSpriteTexture = (agvStatusMode) => {
+//     switch (agvStatusMode) {
+//         case AGV_STATUS_MODE.EMPTY_NO_BATTERY:
+//             return ASREmptyNoBattery;
+//         case AGV_STATUS_MODE.EMPTY_HALF_BATTERY:
+//             return ASREmptyHalfBattery;
+//         case AGV_STATUS_MODE.EMPTY_FULL_BATTERY:
+//             return ASREmptyFullBattery;
+//         case AGV_STATUS_MODE.LOADED_NO_BATTERY:
+//             return ASRLoadedNoBattery;
+//         case AGV_STATUS_MODE.LOADED_HALF_BATTERY:
+//             return ASRLoadedHalfBattery;
+//         case AGV_STATUS_MODE.LOADED_FULL_BATTERY:
+//             return ASRLoadedFullBattery;
+//         default:
+//             return;
+//     }
+// }
 
 export function createAgvJobPanel(parentContainer, text) {
     const panelScale = 4;
@@ -788,12 +831,14 @@
         });
         agvText.anchor.set(0.5, 0.5);
         agvText.position.set(0, 8);
+        // agvText.position.set(0, 18);
         agvText.scale.set(MAP_MIRROR ? -1 : 1, 1)
         agvSprite.addChild(agvText);
 
         agvSprite.updateTextRotation = () => {
             if (agvText && agvSprite) {
                 agvText.rotation = -agvSprite.rotation - rotationParseNum(MAP_DEFAULT_ROTATION);
+                // agvText.rotation = -agvSprite.rotation - rotationParseNum(MAP_DEFAULT_ROTATION + 180);
             }
         };
         agvSprite.updateTextRotation();
@@ -843,13 +888,24 @@
 
     beInsight(agvSprite, setCurSprite);
 
-    new TWEEDLE.Tween(agvSprite.position)
+    if (agvSprite.data.moveTween) {
+        agvSprite.data.moveTween.stop();
+        agvSprite.data.moveTween = null;
+    }
+
+    const moveTween = new TWEEDLE.Tween(agvSprite.position)
         .to({
             x: codeSprite.position.x,
             y: codeSprite.position.y
         }, ANIMATE_DURING_TIME)
         .easing(TWEEDLE.Easing.Linear.None)
         .start();
+    agvSprite.data.moveTween = moveTween;
+    moveTween.onComplete(() => {
+        if (agvSprite.data?.moveTween === moveTween) {
+            agvSprite.data.moveTween = null;
+        }
+    });
 }
 
 const drawerAgvPath = (curZone, agvVo) => {
@@ -900,6 +956,14 @@
     for (let i = mapContainer.children.length - 1; i >= 0; i--) {
         const child = mapContainer.children[i];
         if (child?.data?.type === DEVICE_TYPE.AGV) {
+            if (child.data.moveTween) {
+                child.data.moveTween.stop();
+                child.data.moveTween = null;
+            }
+            if (child.data.rotationTween) {
+                child.data.rotationTween.stop();
+                child.data.rotationTween = null;
+            }
             if (child.data.jobEffect) {
                 app?.ticker.remove(child.data.jobEffect._onTick);
                 child.removeChild(child.data.jobEffect);
@@ -943,7 +1007,7 @@
     const label = new PIXI.Text(text ?? '', labelStyle);
     label.anchor.set(0.5);
     label.position.set(centerX, centerY);
-    label.rotation = rotationParseNum(MAP_DEFAULT_ROTATION);
+    label.rotation = -rotationParseNum(MAP_DEFAULT_ROTATION);
     label.scale.set(MAP_MIRROR ? -1 : 1, 1);
     draft.addChild(label);
 };
@@ -1203,4 +1267,4 @@
         .easing(TWEEDLE.Easing.Quadratic.Out)
         .to(targetPos, 500)
         .start();
-};
\ No newline at end of file
+};

--
Gitblit v1.9.1