Browse Source

十字路口灯带改为人行道信号逻辑,车通行时人行道为红

  - IntersectionMapVideos: dyeArm函数拆分灯带颜色(pedColor)和车辆颜色(vehicleColor)参数,
    灯带颜色与车辆信号取反,车绿灯时人行道红灯,车红灯时人行道绿灯
画安 2 weeks ago
parent
commit
cec4cec121
1 changed files with 11 additions and 7 deletions
  1. 11 7
      src/components/ui/IntersectionMapVideos.vue

+ 11 - 7
src/components/ui/IntersectionMapVideos.vue

@@ -381,9 +381,9 @@ export default {
       const nsActiveTypes = signals.ns.activeArrowTypes || [];
       const ewActiveTypes = signals.ew.activeArrowTypes || [];
 
-      const dyeArm = (dir, armNode, signalColor, activeTypes) => {
-        // 灯带颜色
-        armNode.lightGroup.getChildren().forEach(r => r.fill(signalColor));
+      const dyeArm = (dir, armNode, pedColor, vehicleColor, activeTypes) => {
+        // 灯带颜色(人行道信号)
+        armNode.lightGroup.getChildren().forEach(r => r.fill(pedColor));
         // 箭头按 lane type 用不同颜色的 SVG 替换
         const lanes = (config[dir] && config[dir].lanes) || [];
         Object.keys(armNode.arrowNodes).forEach(index => {
@@ -423,10 +423,14 @@ export default {
         });
       };
 
-      dyeArm('N', this.armsNodes.N, nsColor, nsActiveTypes);
-      dyeArm('S', this.armsNodes.S, nsColor, nsActiveTypes);
-      dyeArm('E', this.armsNodes.E, ewColor, ewActiveTypes);
-      dyeArm('W', this.armsNodes.W, ewColor, ewActiveTypes);
+      // 灯带代表人行道:车通行时人行道为红,车停时人行道为绿
+      const nsPedColor = signals.ns.isGreen ? this.C.SIGNAL_RED : this.C.SIGNAL_GREEN;
+      const ewPedColor = signals.ew.isGreen ? this.C.SIGNAL_RED : this.C.SIGNAL_GREEN;
+
+      dyeArm('N', this.armsNodes.N, nsPedColor, nsColor, nsActiveTypes);
+      dyeArm('S', this.armsNodes.S, nsPedColor, nsColor, nsActiveTypes);
+      dyeArm('E', this.armsNodes.E, ewPedColor, ewColor, ewActiveTypes);
+      dyeArm('W', this.armsNodes.W, ewPedColor, ewColor, ewActiveTypes);
 
       this.panelNodes.nsLabel.text(`${signals.ns.phaseName}:`);
       this.panelNodes.nsVal.text(signals.ns.time.toString().padStart(2, '0')).fill(nsColor);