|
|
@@ -154,31 +154,22 @@ function _makePhaseData(cycleLength = 140, isTwoRows = true) {
|
|
|
// 修改点:将单个图标改为用逗号分隔的"成对图标"字符串
|
|
|
// 前端组件会按逗号切割并分别放到对角位置
|
|
|
// ==========================================
|
|
|
- const iconsUD = [
|
|
|
- 'STRAIGHT_DOWN,STRAIGHT_UP', // 南北直行对放
|
|
|
- 'TURN_DOWN_LEFT,TURN_UP_LEFT', // 南北左转对放
|
|
|
- 'TURN_DOWN_LEFT_UTURN,TURN_UP_LEFT_UTURN' // 南北左转+掉头对放
|
|
|
- ];
|
|
|
- const iconsLR = [
|
|
|
- 'STRAIGHT_LEFT,STRAIGHT_RIGHT', // 东西直行对放
|
|
|
- 'TURN_LEFT_DOWN,TURN_RIGHT_UP', // 东西左转对放
|
|
|
- 'TURN_LEFT_DOWN_UTURN,TURN_RIGHT_UP_UTURN' // 东西左转+掉头对放
|
|
|
+ // 固定4个阶段的图标和方向:P1南北直行、P2南北左转、P3东西直行、P4东西左转
|
|
|
+ const phaseConfig = [
|
|
|
+ { icon: 'STRAIGHT_DOWN,STRAIGHT_UP', direction: 'ns' }, // P1: 南北直行
|
|
|
+ { icon: 'TURN_DOWN_LEFT,TURN_UP_LEFT', direction: 'ns' }, // P2: 南北左转
|
|
|
+ { icon: 'STRAIGHT_LEFT,STRAIGHT_RIGHT', direction: 'ew' }, // P3: 东西直行
|
|
|
+ { icon: 'TURN_LEFT_DOWN,TURN_RIGHT_UP', direction: 'ew' }, // P4: 东西左转
|
|
|
];
|
|
|
|
|
|
- const getRandomIcon = (pool) => pool[Math.floor(Math.random() * pool.length)];
|
|
|
-
|
|
|
- let t = 0;
|
|
|
+ let t = 0;
|
|
|
for (let i = 0; i < n; i++) {
|
|
|
const stageStart = t;
|
|
|
const stageEnd = stageStart + stageTime;
|
|
|
- const currentIconPool = (i < 2) ? iconsUD : iconsLR;
|
|
|
+ const { icon: stageIcon, direction } = phaseConfig[i];
|
|
|
|
|
|
- // 辅助函数:生成单条轨道的一个阶段
|
|
|
- // 第8列 [7] 标记方向: 'ns'(南北) 或 'ew'(东西)
|
|
|
- const direction = (i < 2) ? 'ns' : 'ew';
|
|
|
const pushTrackData = (trackIdx, phaseNamePrefix) => {
|
|
|
- // 这里的 icon 现在抽出来的是诸如 "STRAIGHT_DOWN,STRAIGHT_UP" 的字符串
|
|
|
- const icon = getRandomIcon(currentIconPool);
|
|
|
+ const icon = stageIcon;
|
|
|
const phaseName = `${phaseNamePrefix}${i + 1}`;
|
|
|
const g = Math.floor(Math.random() * 11) + 20; // 绿灯 20-30s
|
|
|
const s = 3; // 闪烁/条纹 3s
|