|
@@ -590,7 +590,6 @@ function generateToolboxXml() {
|
|
|
<block type="pickup_item"></block>
|
|
<block type="pickup_item"></block>
|
|
|
<block type="use_item"></block>
|
|
<block type="use_item"></block>
|
|
|
<block type="when_passed"></block>
|
|
<block type="when_passed"></block>
|
|
|
- <block type="light"></block>
|
|
|
|
|
`;
|
|
`;
|
|
|
|
|
|
|
|
// 确保blocklySpecialBlocks是数组
|
|
// 确保blocklySpecialBlocks是数组
|
|
@@ -1426,41 +1425,49 @@ window.light = async function(color = 'white') {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 设置灯光颜色和初始状态为开启
|
|
|
|
|
- gameState.player.lightColor = color;
|
|
|
|
|
- gameState.player.isLightOn = true;
|
|
|
|
|
-
|
|
|
|
|
- // 定义闪烁周期(毫秒)
|
|
|
|
|
- const blinkInterval = CONFIG.DELAY.BLINK_INTERVAL;
|
|
|
|
|
|
|
+ let x = playerPosition.value.x;
|
|
|
|
|
+ let y = playerPosition.value.y;
|
|
|
|
|
+ let tileMap = walkablePointsMap.get(`${x},${y}`);
|
|
|
|
|
|
|
|
- // 定义闪烁次数(每个完整闪烁包括一次亮和一次暗,共需两个周期)
|
|
|
|
|
- const totalBlinks = CONFIG.DELAY.LIGHT_DURATION / blinkInterval;
|
|
|
|
|
-
|
|
|
|
|
- // 循环实现闪烁效果
|
|
|
|
|
- for (let i = 1; i < totalBlinks; i++) {
|
|
|
|
|
- // 检查是否需要停止执行,如果需要则立即退出
|
|
|
|
|
- if (shouldStopExecution) {
|
|
|
|
|
- // 确保灯光关闭
|
|
|
|
|
- gameState.player.isLightOn = false;
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 等待指定的闪烁间隔
|
|
|
|
|
- await new Promise(resolve => setTimeout(resolve, blinkInterval));
|
|
|
|
|
-
|
|
|
|
|
- // 再次检查是否需要停止执行
|
|
|
|
|
- if (shouldStopExecution) {
|
|
|
|
|
- // 确保灯光关闭
|
|
|
|
|
- gameState.player.isLightOn = false;
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ if (tileMap && tileMap.type === BLOCKLY_MAP_TYPE_DICT.TASK) {
|
|
|
|
|
+ // 设置灯光颜色和初始状态为开启
|
|
|
|
|
+ gameState.player.lightColor = color;
|
|
|
|
|
+ gameState.player.isLightOn = true;
|
|
|
|
|
+
|
|
|
|
|
+ // 定义闪烁周期(毫秒)
|
|
|
|
|
+ const blinkInterval = CONFIG.DELAY.BLINK_INTERVAL;
|
|
|
|
|
+
|
|
|
|
|
+ // 定义闪烁次数(每个完整闪烁包括一次亮和一次暗,共需两个周期)
|
|
|
|
|
+ const totalBlinks = CONFIG.DELAY.LIGHT_DURATION / blinkInterval;
|
|
|
|
|
+
|
|
|
|
|
+ // 循环实现闪烁效果
|
|
|
|
|
+ for (let i = 1; i < totalBlinks; i++) {
|
|
|
|
|
+ // 检查是否需要停止执行,如果需要则立即退出
|
|
|
|
|
+ if (shouldStopExecution) {
|
|
|
|
|
+ // 确保灯光关闭
|
|
|
|
|
+ gameState.player.isLightOn = false;
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 等待指定的闪烁间隔
|
|
|
|
|
+ await new Promise(resolve => setTimeout(resolve, blinkInterval));
|
|
|
|
|
+
|
|
|
|
|
+ // 再次检查是否需要停止执行
|
|
|
|
|
+ if (shouldStopExecution) {
|
|
|
|
|
+ // 确保灯光关闭
|
|
|
|
|
+ gameState.player.isLightOn = false;
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 切换灯光状态
|
|
|
|
|
+ gameState.player.isLightOn = !gameState.player.isLightOn;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- // 切换灯光状态
|
|
|
|
|
- gameState.player.isLightOn = !gameState.player.isLightOn;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- // 确保最终关闭灯光效果
|
|
|
|
|
- gameState.player.isLightOn = false;
|
|
|
|
|
|
|
+ // 确保最终关闭灯光效果
|
|
|
|
|
+ gameState.player.isLightOn = false;
|
|
|
|
|
+ }else{
|
|
|
|
|
+ showGameMessage(CONFIG.TIPS.NO_TASK, 'info');
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
await new Promise(resolve => setTimeout(resolve, CONFIG.DELAY.ACTION_DELAY));
|
|
await new Promise(resolve => setTimeout(resolve, CONFIG.DELAY.ACTION_DELAY));
|
|
|
};
|
|
};
|