From d5c06a9e5bc44564cc1d31cb82ec29640c4f2cbb Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期二, 21 一月 2025 14:25:01 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/tool.js | 77 +++++++++++++++++++++++++++++++++++++-
1 files changed, 74 insertions(+), 3 deletions(-)
diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index c64b332..946a72a 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -652,6 +652,55 @@
}
}
+export function createAgvJobPanel(parentContainer, text) {
+ const panel = new PIXI.Container();
+
+ const sideLen = 50;
+ const halfCircle = new PIXI.Graphics();
+ halfCircle.beginFill(themeMode === 'light' ? '#5c5a5a' : '#eee');
+ halfCircle.lineStyle(2, themeMode === 'light' ? '#5c5a5a' : '#eee');
+ halfCircle.arc(0, 0, sideLen, 0, Math.PI);
+ halfCircle.endFill();
+
+ const rectangle = new PIXI.Graphics();
+ rectangle.lineStyle(2, themeMode === 'light' ? '#5c5a5a' : '#eee', 1);
+ rectangle.drawRoundedRect(
+ -sideLen / 2, // 宸︿笂瑙� x
+ -sideLen / 2, // 宸︿笂瑙� y
+ sideLen, // 瀹�
+ sideLen - 20, // 楂� (鐣欎竴鐐圭┖闂达紝鐪嬭捣鏉ユ洿鍍忓崐鍦嗗鍣�)
+ 16 // 鍦嗚
+ );
+ rectangle.endFill();
+ rectangle.mask = halfCircle;
+
+ panel.addChild(rectangle, halfCircle);
+
+ const msg = new PIXI.Text(text, {
+ fill: themeMode === 'light' ? '#2b2b2b' : '#eee',
+ fontSize: 12,
+ fontFamily: 'MicrosoftYaHei',
+ fontWeight: 'bold',
+ align: 'center',
+ });
+ msg.anchor.set(0.5);
+ msg.position.set(0, -10);
+
+ panel.addChild(msg);
+ panel.scale.set(3);
+ parentContainer.addChild(panel);
+
+ let phase = 0;
+ function onTick(delta) {
+ phase += delta / 8; // 鏃嬭浆閫熷害鍙皟
+ phase %= (Math.PI * 2);
+ halfCircle.rotation = phase;
+ }
+ app.ticker.add(onTick);
+
+ panel._onTick = onTick;
+ return panel;
+}
// dynamic graphic ----------------
@@ -666,13 +715,16 @@
const agvRotationOffset = rotationParseNum(agvRotationOffsetDegrees);
const showAgvSprite = (curZone, agvVo, setCurSprite) => {
- const { agvNo, code, direction, battery, backpack, error } = agvVo;
+ const { agvNo, code, direction, battery, jobType, backpack: backpackCount, error } = agvVo;
if (!code) { return; }
const codeSprite = querySprite(DEVICE_TYPE.POINT, code);
if (!codeSprite) { return; }
-
+ if (agvNo === '12') {
+ console.log(backpackCount);
+ }
+
const targetRotation = rotationParseNum(direction);
- const backpackCount = backpack?.filter(item => item.loaded === true).length || 0;
+ // const backpackCount = backpack?.filter(item => item.loaded === true).length || 0;
let agvSprite = querySprite(DEVICE_TYPE.AGV, agvNo);
if (!agvSprite) {
@@ -722,6 +774,25 @@
animateRotation(agvSprite, targetRotation + agvRotationOffset, agvRotationOffset);
}
+ // job effect
+ if (jobType) {
+ if (!agvSprite.data.jobEffect) {
+ agvSprite.data.jobEffect = createAgvJobPanel(agvSprite, jobType);
+ agvSprite.data.jobEffect.x = -80;
+ agvSprite.data.jobEffect.y = 0;
+ }
+ if (agvSprite.data.jobEffect) {
+ agvSprite.data.jobEffect.rotation = -agvSprite.rotation - rotationParseNum(MAP_DEFAULT_ROTATION);
+ }
+ } else {
+ if (agvSprite.data.jobEffect) {
+ app.ticker.remove(agvSprite.data.jobEffect._onTick);
+ agvSprite.removeChild(agvSprite.data.jobEffect);
+ agvSprite.data.jobEffect.destroy(true);
+ agvSprite.data.jobEffect = null;
+ }
+ }
+
if (error) {
agvSprite.tint = 0xff3f34;
} else {
--
Gitblit v1.9.1