diff --git a/web/assets/js/game.js b/web/assets/js/game.js index a8f8ff7..efa746f 100644 --- a/web/assets/js/game.js +++ b/web/assets/js/game.js @@ -48,6 +48,11 @@ const glassOptions = [ { color: laserColors.blue, maxAmount: 1, currentAmount: 1 }, { color: laserColors.yellow, maxAmount: 1, currentAmount: 1 }, ], + [ + { color: laserColors.red, maxAmount: 2, currentAmount: 2 }, + { color: laserColors.blue, maxAmount: 2, currentAmount:2}, + { color: laserColors.yellow, maxAmount: 2, currentAmount: 2 }, + ], [ { color: laserColors.red, maxAmount: 2, currentAmount: 2 }, { color: laserColors.blue, maxAmount: 1, currentAmount: 1 }, @@ -84,12 +89,12 @@ let levels = [ [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 6, 6, 6, 6, 6, 7, 10, 6, 6, 11, 0, 0, 0, 0], - [0, 1, 0, 0, 0, 4, 0, 0, 0, 3, 21, 0, 0, 0, 0], + [0, 6, 6, 6, 6, 6, 0, 10, 6, 6, 11, 0, 0, 0, 0], + [7, 1, 0, 0, 0, 4, 0, 0, 0, 3, 21, 0, 0, 0, 0], [0, 6, 6, 6, 6, 18, 6, 26, 22, 0, 18, 0, 0, 0, 0], [0, 6, 9, 0, 0, 19, 0, 0, 0, 12, 18, 0, 0, 0, 0], [0, 6, 0, 6, 6, 6, 6, 6, 6, 24, 23, 0, 0, 0, 0], - [0, 6, 11, 0, 0, 0, 0, 0, 25, 23, 9, 0, 0, 0, 0], + [0, 6, 11, 0, 0, 0, 0, 0, 20, 23, 9, 0, 0, 0, 0], [0, 10, 6, 6, 6, 6, 6, 6, 6, 9, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], @@ -131,9 +136,9 @@ const initialMirrorAngles = [ }, {}, { - "9,4": 315, - "2,9": 45, + "2,9": 225, }, + {} ]; const buttonGroups = [ @@ -168,11 +173,11 @@ const rotatorButtons = [ {}, {}, { - "3,7": { mirrorX: 7, mirrorY: 7, step: -22.5, intervalMs: 1000 }, + "6,8": { mirrorX: 9, mirrorY: 2, step: 22.5, intervalMs: 1000 }, }, { - "6,8": { mirrorX: 9, mirrorY: 2, step: 22.5, intervalMs: 1000 }, - } + "3,7": { mirrorX: 7, mirrorY: 7, step: -22.5, intervalMs: 1000 }, + }, ]; let laserDirection = { dx: 0, dy: 0 }; @@ -896,7 +901,7 @@ function traceLaser() { switch (cellType) { case legend.laser: case legend.coloredLaser: - laserActive = false; + saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); break; case legend.empty: @@ -938,7 +943,8 @@ function traceLaser() { break; case legend.horizontalSemi: if (currentLaserColor === laserColors.blue) { - laserDirection = reverseLaser(laserDirection); + saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); + laserDirection = reflectLaser(laserDirection, 0); } else if (currentLaserColor === laserColors.yellow) { saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); } else { @@ -975,34 +981,6 @@ 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) { @@ -1089,6 +1067,7 @@ function traceLaser() { if (currentLaserColor === laserColors.yellow) { saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); } else if (currentLaserColor === laserColors.blue) { + saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); laserDirection = reflectLaser(laserDirection, 135); } break; @@ -1097,6 +1076,7 @@ function traceLaser() { if (currentLaserColor === laserColors.yellow) { saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); } else if (currentLaserColor === laserColors.blue) { + saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); laserDirection = reflectLaser(laserDirection, 45); } break; @@ -1105,6 +1085,7 @@ function traceLaser() { if (currentLaserColor === laserColors.yellow) { saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); } else if (currentLaserColor === laserColors.blue) { + saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); laserDirection = reflectLaser(laserDirection, 225); } break; @@ -1113,6 +1094,7 @@ function traceLaser() { if (currentLaserColor === laserColors.yellow) { saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); } else if (currentLaserColor === laserColors.blue) { + saveLaserSegment(currentX, currentY, laserDirection, currentLaserColor); laserDirection = reflectLaser(laserDirection, 315); } break; @@ -1146,17 +1128,17 @@ function goToLevel(levelIndex) { isLevelFinished = false; stopAllRotatorButtons(); + mirrorOrientations = {}; + laserSegments = {}; + activatedButtons = {}; + openedDoors = {}; + toggledDoors = {}; + poweredCaptors = {}; initializeMirrorOrientations(); glassPlacements = {}; resetGlassInventory(); createPalette(); loadGrid(); - laserSegments = {}; - mirrorOrientations = {}; - activatedButtons = {}; - openedDoors = {}; - toggledDoors = {}; - poweredCaptors = {}; traceLaser(); const winOverlay = document.querySelector(".win-overlay");