Update game.js

This commit is contained in:
Sysy's
2026-03-31 14:35:01 +02:00
parent 1145d26e9d
commit 1eb3aec524

View File

@@ -131,8 +131,8 @@ const initialMirrorAngles = [
}, },
{}, {},
{ {
"3,4": 315, "9,4": 315,
"7,8": 0, "2,9": 45,
}, },
]; ];
@@ -141,7 +141,9 @@ const buttonGroups = [
"4,6": 1, "4,6": 1,
}, },
{}, {},
{}, {
"9,4": 1,
},
]; ];
const doorGroups = [ const doorGroups = [
@@ -168,6 +170,9 @@ const rotatorButtons = [
{ {
"3,7": { mirrorX: 7, mirrorY: 7, step: -22.5, intervalMs: 1000 }, "3,7": { mirrorX: 7, mirrorY: 7, step: -22.5, intervalMs: 1000 },
}, },
{
"6,8": { mirrorX: 9, mirrorY: 2, step: 22.5, intervalMs: 1000 },
}
]; ];
let laserDirection = { dx: 0, dy: 0 }; let laserDirection = { dx: 0, dy: 0 };
@@ -922,7 +927,26 @@ function traceLaser() {
laserActive = false; laserActive = false;
} }
break; break;
case legend.wallSemiAngle:
if (currentLaserColor === laserColors.blue) {
laserDirection = reverseLaser(laserDirection);
} else if (currentLaserColor === laserColors.yellow) {
saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor);
} else {
laserActive = false;
}
break;
case legend.horizontalSemi:
if (currentLaserColor === laserColors.blue) {
laserDirection = reverseLaser(laserDirection);
} else if (currentLaserColor === laserColors.yellow) {
saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor);
} else {
laserActive = false;
}
break;
case legend.cableVertical:
case legend.cableTurn:
case legend.door: case legend.door:
case legend.doorOpen: case legend.doorOpen:
if (openedDoors[`${currentY},${currentX}`] || cellType === legend.doorOpen) { if (openedDoors[`${currentY},${currentX}`] || cellType === legend.doorOpen) {
@@ -951,6 +975,42 @@ function traceLaser() {
break; break;
case legend.captor: case legend.captor:
case legend.demiWallCornerDownLeft:
if (currentLaserColor === laserColors.blue) {
laserDirection = reverseLaser(laserDirection);
} else if (currentLaserColor === laserColors.yellow) {
saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor);
} else {
laserActive = false;
}
break;
case legend.demiWallCornerDownRight:
if (currentLaserColor === laserColors.blue) {
laserDirection = reverseLaser(laserDirection);
} else if (currentLaserColor === laserColors.yellow) {
saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor);
} else {
laserActive = false;
}
break;
case legend.demiWallCornerUpLeft:
if (currentLaserColor === laserColors.blue) {
laserDirection = reverseLaser(laserDirection);
} else if (currentLaserColor === laserColors.yellow) {
saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor);
} else {
laserActive = false;
}
break;
case legend.demiWallCornerUpRight:
if (currentLaserColor === laserColors.blue) {
laserDirection = reverseLaser(laserDirection);
} else if (currentLaserColor === laserColors.yellow) {
saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor);
} else {
laserActive = false;
}
break;
case legend.captorTurn: case legend.captorTurn:
if (currentLaserColor === laserColors.red) { if (currentLaserColor === laserColors.red) {
const captorKey = `${currentY},${currentX}`; const captorKey = `${currentY},${currentX}`;