diff --git a/web/assets/js/game.js b/web/assets/js/game.js index 25dcb19..a8f8ff7 100644 --- a/web/assets/js/game.js +++ b/web/assets/js/game.js @@ -131,8 +131,8 @@ const initialMirrorAngles = [ }, {}, { - "3,4": 315, - "7,8": 0, + "9,4": 315, + "2,9": 45, }, ]; @@ -141,7 +141,9 @@ const buttonGroups = [ "4,6": 1, }, {}, - {}, + { + "9,4": 1, + }, ]; const doorGroups = [ @@ -168,6 +170,9 @@ const rotatorButtons = [ { "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 }; @@ -922,7 +927,26 @@ function traceLaser() { laserActive = false; } 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.doorOpen: if (openedDoors[`${currentY},${currentX}`] || cellType === legend.doorOpen) { @@ -951,6 +975,42 @@ function traceLaser() { break; 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: if (currentLaserColor === laserColors.red) { const captorKey = `${currentY},${currentX}`;