From f1d664c068b7db19d976471d116b58d3f7ba90c9 Mon Sep 17 00:00:00 2001 From: Kyle Florence Date: Tue, 13 Feb 2024 21:06:04 -0600 Subject: [PATCH] Migrate puzzles into JSON files (#18) Also add a `.nvmrc` configuration file for the required node version. --- .gitignore | 1 + .nvmrc | 1 + src/puzzles/001.js | 60 ----- src/puzzles/001.json | 108 ++++++++ src/puzzles/002.js | 60 ----- src/puzzles/002.json | 109 ++++++++ src/puzzles/003.js | 59 ----- src/puzzles/003.json | 106 ++++++++ src/puzzles/004.js | 61 ----- src/puzzles/004.json | 111 ++++++++ src/puzzles/005.js | 78 ------ src/puzzles/005.json | 136 ++++++++++ src/puzzles/006.js | 105 -------- src/puzzles/006.json | 138 ++++++++++ src/puzzles/007.js | 139 ---------- src/puzzles/007.json | 244 ++++++++++++++++++ src/puzzles/008.js | 144 ----------- src/puzzles/008.json | 234 +++++++++++++++++ src/puzzles/009.js | 93 ------- src/puzzles/009.json | 139 ++++++++++ src/puzzles/010.js | 91 ------- src/puzzles/010.json | 139 ++++++++++ src/puzzles/011.js | 114 -------- src/puzzles/011.json | 138 ++++++++++ src/puzzles/index.js | 62 ++--- src/puzzles/test/infiniteLoop.json | 118 +++++++++ src/puzzles/{testLayout.js => test/layout.js} | 1 + src/puzzles/test/portal.json | 167 ++++++++++++ src/puzzles/test/reflector.json | 91 +++++++ src/puzzles/testInfiniteLoop.js | 85 ------ src/puzzles/testPortal.js | 83 ------ src/puzzles/testReflector.js | 54 ---- 32 files changed, 2002 insertions(+), 1267 deletions(-) create mode 100644 .nvmrc delete mode 100644 src/puzzles/001.js create mode 100644 src/puzzles/001.json delete mode 100644 src/puzzles/002.js create mode 100644 src/puzzles/002.json delete mode 100644 src/puzzles/003.js create mode 100644 src/puzzles/003.json delete mode 100644 src/puzzles/004.js create mode 100644 src/puzzles/004.json delete mode 100644 src/puzzles/005.js create mode 100644 src/puzzles/005.json delete mode 100644 src/puzzles/006.js create mode 100644 src/puzzles/006.json delete mode 100644 src/puzzles/007.js create mode 100644 src/puzzles/007.json delete mode 100644 src/puzzles/008.js create mode 100644 src/puzzles/008.json delete mode 100644 src/puzzles/009.js create mode 100644 src/puzzles/009.json delete mode 100644 src/puzzles/010.js create mode 100644 src/puzzles/010.json delete mode 100644 src/puzzles/011.js create mode 100644 src/puzzles/011.json create mode 100644 src/puzzles/test/infiniteLoop.json rename src/puzzles/{testLayout.js => test/layout.js} (84%) create mode 100644 src/puzzles/test/portal.json create mode 100644 src/puzzles/test/reflector.json delete mode 100644 src/puzzles/testInfiniteLoop.js delete mode 100644 src/puzzles/testPortal.js delete mode 100644 src/puzzles/testReflector.js diff --git a/.gitignore b/.gitignore index e3d9775..f19ff0a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ !.gitattributes !.gitignore !.github +!.nvmrc dist node_modules diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..7ea6a59 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v20.11.0 diff --git a/src/puzzles/001.js b/src/puzzles/001.js deleted file mode 100644 index 2c186b7..0000000 --- a/src/puzzles/001.js +++ /dev/null @@ -1,60 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'blue', - openings: [null, null, null, { on: true, type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { type: 'Tile' } - ], - [ - { type: 'Tile' }, - { type: 'Tile' }, - { type: 'Tile' } - ], - [ - { - items: [ - { - color: 'red', - openings: [null, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Toggle' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [{ type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 1, type: 'Connections' } - ] -} diff --git a/src/puzzles/001.json b/src/puzzles/001.json new file mode 100644 index 0000000..899daff --- /dev/null +++ b/src/puzzles/001.json @@ -0,0 +1,108 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + { + "on": true, + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "red", + "openings": [ + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Toggle" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + { + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 1, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/002.js b/src/puzzles/002.js deleted file mode 100644 index 0f0af30..0000000 --- a/src/puzzles/002.js +++ /dev/null @@ -1,60 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'blue', - openings: [null, null, null, { on: true, type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { type: 'Tile' } - ], - [ - { type: 'Tile' }, - { type: 'Tile' }, - { type: 'Tile' } - ], - [ - { - items: [ - { - color: 'red', - openings: [null, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { clockwise: false, type: 'Rotate' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [{ type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 1, type: 'Connections' } - ] -} diff --git a/src/puzzles/002.json b/src/puzzles/002.json new file mode 100644 index 0000000..e251353 --- /dev/null +++ b/src/puzzles/002.json @@ -0,0 +1,109 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + { + "on": true, + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "red", + "openings": [ + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "clockwise": false, + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + { + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 1, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/003.js b/src/puzzles/003.js deleted file mode 100644 index 053a992..0000000 --- a/src/puzzles/003.js +++ /dev/null @@ -1,59 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'blue', - openings: [null, null, null, { on: true, type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { type: 'Tile' } - ], - [ - { type: 'Tile' }, - { type: 'Tile' }, - { type: 'Tile' } - ], - [ - { - items: [ - { - color: 'red', - openings: [null, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [{ type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { clockwise: false, type: 'Rotate' } - ], - type: 'Tile' - } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 1, type: 'Connections' } - ] -} diff --git a/src/puzzles/003.json b/src/puzzles/003.json new file mode 100644 index 0000000..72b9743 --- /dev/null +++ b/src/puzzles/003.json @@ -0,0 +1,106 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + { + "on": true, + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "red", + "openings": [ + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + { + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "clockwise": false, + "type": "Rotate" + } + ], + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 1, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/004.js b/src/puzzles/004.js deleted file mode 100644 index 1e9c20c..0000000 --- a/src/puzzles/004.js +++ /dev/null @@ -1,61 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'blue', - openings: [null, null, null, null, { type: 'Beam' }, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Rotate' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [null, null, null, null, { on: true, type: 'Beam' }, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ], - [ - { type: 'Tile' }, - { type: 'Tile' }, - { type: 'Tile' } - ], - [ - { - items: [ - { - color: 'red', - openings: [null, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Swap' } - ], - type: 'Tile' - }, - { type: 'Tile' } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 1, type: 'Connections' } - ] -} diff --git a/src/puzzles/004.json b/src/puzzles/004.json new file mode 100644 index 0000000..aad4b1d --- /dev/null +++ b/src/puzzles/004.json @@ -0,0 +1,111 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + null, + { + "type": "Beam" + }, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + null, + { + "on": true, + "type": "Beam" + }, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "red", + "openings": [ + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Swap" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 1, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/005.js b/src/puzzles/005.js deleted file mode 100644 index bb78c5a..0000000 --- a/src/puzzles/005.js +++ /dev/null @@ -1,78 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [null, null, null, null, null, { on: true, type: 'Beam' }], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Move' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { - color: 'blue', - openings: [null, { type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - type: 'Tile' - }, - { - items: [ - { - color: 'red', - openings: [null, null, null, null, { type: 'Beam' }, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { - color: 'red', - openings: [null, null, { on: true, type: 'Beam' }, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Swap' }, - { clockwise: false, type: 'Rotate' } - ], - type: 'Tile' - }, - { type: 'Tile' } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 2, type: 'Connections' } - ] -} diff --git a/src/puzzles/005.json b/src/puzzles/005.json new file mode 100644 index 0000000..69800a2 --- /dev/null +++ b/src/puzzles/005.json @@ -0,0 +1,136 @@ +{ + "layout": { + "tiles": [ + [ + { + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + null, + null, + { + "on": true, + "type": "Beam" + } + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Move" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "blue", + "openings": [ + null, + { + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "items": [ + { + "color": "red", + "openings": [ + null, + null, + null, + null, + { + "type": "Beam" + }, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "red", + "openings": [ + null, + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Swap" + }, + { + "clockwise": false, + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 2, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/006.js b/src/puzzles/006.js deleted file mode 100644 index 8fd5126..0000000 --- a/src/puzzles/006.js +++ /dev/null @@ -1,105 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - rotation: 2, - type: 'Reflector' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Swap' } - ], - type: 'Tile' - }, - { - items: [ - { - type: 'Reflector' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { - openings: [ - null, - null, - null, - { color: 'red', type: 'Beam' }, - null, - { color: 'blue', on: true, type: 'Beam' } - ], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - type: 'Tile' - }, - { - items: [ - { - openings: [ - { color: 'blue', type: 'Beam' }, - null, - { color: 'red', on: true, type: 'Beam' }, - null, - null, - null - ], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { - type: 'Reflector' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { - rotation: 2, - type: 'Reflector' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Swap' } - ], - type: 'Tile' - } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 2, type: 'Connections' } - ] -} diff --git a/src/puzzles/006.json b/src/puzzles/006.json new file mode 100644 index 0000000..fecb719 --- /dev/null +++ b/src/puzzles/006.json @@ -0,0 +1,138 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "rotation": 2, + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Swap" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "openings": [ + null, + null, + null, + { + "color": "red", + "type": "Beam" + }, + null, + { + "color": "blue", + "on": true, + "type": "Beam" + } + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "items": [ + { + "openings": [ + { + "color": "blue", + "type": "Beam" + }, + null, + { + "color": "red", + "on": true, + "type": "Beam" + }, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "rotation": 2, + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Swap" + } + ], + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 2, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/007.js b/src/puzzles/007.js deleted file mode 100644 index 7f6d478..0000000 --- a/src/puzzles/007.js +++ /dev/null @@ -1,139 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'blue', - openings: [null, null, { type: 'Beam' }, { on: true, type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [null, null, null, null, { type: 'Beam' }, { on: true, type: 'Beam' }], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'red', - openings: [null, null, { on: true, type: 'Beam' }, { type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { - type: 'Tile' - }, - { - items: [ - { - color: 'red', - openings: [null, null, null, null, { on: true, type: 'Beam' }, { type: 'Beam' }], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - } - ], - [ - { - type: 'Tile' - }, - { - type: 'Tile' - }, - { - items: [ - { rotation: 3, type: 'Reflector' } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Rotate' } - ], - type: 'Tile' - }, - { - type: 'Tile' - }, - { - type: 'Tile' - } - ], - [ - null, - { - items: [ - { - color: 'blue', - openings: [{ type: 'Beam' }, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { - items: [ - { rotation: 3, type: 'Reflector' } - ], - modifiers: [ - { type: 'Move' } - ], - type: 'Tile' - }, - { - items: [ - { rotation: 3, type: 'Reflector' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'red', - openings: [{ on: true, type: 'Beam' }, { type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - } - ] - ] - }, - solution: [ - { amount: 0, type: 'Connections' }, - { amount: 6, type: 'Moves' } - ], - version: 1 -} diff --git a/src/puzzles/007.json b/src/puzzles/007.json new file mode 100644 index 0000000..f07a7e1 --- /dev/null +++ b/src/puzzles/007.json @@ -0,0 +1,244 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + { + "type": "Beam" + }, + { + "on": true, + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + null, + { + "type": "Beam" + }, + { + "on": true, + "type": "Beam" + } + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "red", + "openings": [ + null, + null, + { + "on": true, + "type": "Beam" + }, + { + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "items": [ + { + "color": "red", + "openings": [ + null, + null, + null, + null, + { + "on": true, + "type": "Beam" + }, + { + "type": "Beam" + } + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "items": [ + { + "rotation": 3, + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + null, + { + "items": [ + { + "color": "blue", + "openings": [ + { + "type": "Beam" + }, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "rotation": 3, + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Move" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "rotation": 3, + "type": "Reflector" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "red", + "openings": [ + { + "on": true, + "type": "Beam" + }, + { + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + } + ] + ] + }, + "solution": [ + { + "amount": 0, + "type": "Connections" + }, + { + "amount": 6, + "type": "Moves" + } + ], + "version": 1 +} diff --git a/src/puzzles/008.js b/src/puzzles/008.js deleted file mode 100644 index b694015..0000000 --- a/src/puzzles/008.js +++ /dev/null @@ -1,144 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'blue', - openings: [null, null, null, { type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Swap' } - ], - type: 'Tile' - }, - { - modifiers: [ - { type: 'Lock' }, - { type: 'Rotate' } - ], - type: 'Tile' - }, - { - modifiers: [ - { type: 'Lock' }, - { type: 'Toggle' } - ], - type: 'Tile' - }, - { - items: [ - { - color: ['red', 'blue'], - openings: [null, null, null, null, { type: 'Beam' }, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { type: 'Reflector' } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Move' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - type: 'Filter' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Move' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'red', - type: 'Filter' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Move' } - ], - type: 'Tile' - }, - { - items: [ - { type: 'Reflector' } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Move' } - ], - type: 'Tile' - } - ], - [ - null, - { - items: [ - { - color: ['red', 'blue'], - openings: [null, { type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { - modifiers: [ - { type: 'Lock' }, - { type: 'Toggle' } - ], - type: 'Tile' - }, - { - modifiers: [ - { type: 'Lock' }, - { type: 'Rotate' } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'red', - openings: [{ type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' }, - { type: 'Swap' } - ], - type: 'Tile' - } - ] - ] - }, - solution: [ - { amount: 2, type: 'Connections' } - ] -} diff --git a/src/puzzles/008.json b/src/puzzles/008.json new file mode 100644 index 0000000..1e487dd --- /dev/null +++ b/src/puzzles/008.json @@ -0,0 +1,234 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "blue", + "openings": [ + null, + null, + null, + { + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Swap" + } + ], + "type": "Tile" + }, + { + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Toggle" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": [ + "red", + "blue" + ], + "openings": [ + null, + null, + null, + null, + { + "type": "Beam" + }, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Move" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "type": "Filter" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Move" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "red", + "type": "Filter" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Move" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Move" + } + ], + "type": "Tile" + } + ], + [ + null, + { + "items": [ + { + "color": [ + "red", + "blue" + ], + "openings": [ + null, + { + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Toggle" + } + ], + "type": "Tile" + }, + { + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "red", + "openings": [ + { + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Swap" + } + ], + "type": "Tile" + } + ] + ] + }, + "solution": [ + { "amount": 2, "type": "Connections" } + ] +} diff --git a/src/puzzles/009.js b/src/puzzles/009.js deleted file mode 100644 index 872b0ba..0000000 --- a/src/puzzles/009.js +++ /dev/null @@ -1,93 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { type: 'Tile' }, - { type: 'Tile' }, - null, - null, - { - type: 'Tile' - }, - { type: 'Tile' } - ], - [ - { - items: [ - { - color: 'green', - openings: [null, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { type: 'Portal' } - ], - modifiers: [ - { type: 'Move' } - ], - type: 'Tile' - }, - { - type: 'Tile' - }, - null, - { - items: [ - { - color: 'green', - openings: [null, null, null, { type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { type: 'Portal' } - ], - type: 'Tile' - }, - { - items: [ - { type: 'Reflector' } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ], - [ - { - type: 'Tile' - }, - { - type: 'Tile' - }, - null, - null, - { - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { type: 'Tile' } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 1, type: 'Connections' } - ] -} diff --git a/src/puzzles/009.json b/src/puzzles/009.json new file mode 100644 index 0000000..b3485af --- /dev/null +++ b/src/puzzles/009.json @@ -0,0 +1,139 @@ +{ + "layout": { + "tiles": [ + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + null, + null, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "green", + "openings": [ + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Move" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + null, + { + "items": [ + { + "color": "green", + "openings": [ + null, + null, + null, + { + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Portal" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + null, + null, + { + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 1, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/010.js b/src/puzzles/010.js deleted file mode 100644 index e747681..0000000 --- a/src/puzzles/010.js +++ /dev/null @@ -1,91 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { type: 'Tile' }, - null, - null, - { - type: 'Tile' - }, - { type: 'Tile' } - ], - [ - { - items: [ - { - color: 'green', - openings: [null, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { type: 'Portal' } - ], - modifiers: [ - { type: 'Move' } - ], - type: 'Tile' - }, - { type: 'Tile' }, - null, - { - items: [ - { - color: 'green', - openings: [null, null, null, { type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { type: 'Portal' } - ], - type: 'Tile' - }, - { - items: [ - { type: 'Reflector' } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ], - [ - { - type: 'Tile' - }, - { - type: 'Tile' - }, - null, - null, - { type: 'Tile' }, - { type: 'Tile' } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 1, type: 'Connections' } - ] -} diff --git a/src/puzzles/010.json b/src/puzzles/010.json new file mode 100644 index 0000000..513bd40 --- /dev/null +++ b/src/puzzles/010.json @@ -0,0 +1,139 @@ +{ + "layout": { + "tiles": [ + [ + { + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + null, + null, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "green", + "openings": [ + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Move" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + null, + { + "items": [ + { + "color": "green", + "openings": [ + null, + null, + null, + { + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Portal" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + null, + null, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 1, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/011.js b/src/puzzles/011.js deleted file mode 100644 index 0b6e4fc..0000000 --- a/src/puzzles/011.js +++ /dev/null @@ -1,114 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - type: 'Portal' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { - direction: 5, - type: 'Portal' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { - openings: [ - null, - null, - { color: 'blue', on: true, type: 'Beam' }, - null, - null, - null - ], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - }, - { - items: [ - { - direction: 0, - type: 'Portal' - } - ], - modifiers: [ - { type: 'Rotate' } - ], - type: 'Tile' - }, - { - items: [ - { - openings: [ - null, - null, - null, - null, - null, - { color: 'blue', type: 'Beam' } - ], - type: 'Terminus' - } - ], - modifiers: [ - { type: 'Immutable' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { - direction: 5, - type: 'Portal' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - }, - { - items: [ - { - direction: 5, - type: 'Portal' - } - ], - modifiers: [ - { type: 'Lock' } - ], - type: 'Tile' - } - ] - ], - type: 'even-r' - }, - solution: [ - { amount: 1, type: 'Connections' } - ], - version: 1 -} diff --git a/src/puzzles/011.json b/src/puzzles/011.json new file mode 100644 index 0000000..7c7219c --- /dev/null +++ b/src/puzzles/011.json @@ -0,0 +1,138 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "direction": 5, + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "openings": [ + null, + null, + { + "color": "blue", + "on": true, + "type": "Beam" + }, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "direction": 0, + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "openings": [ + null, + null, + null, + null, + null, + { + "color": "blue", + "type": "Beam" + } + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "direction": 5, + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "direction": 5, + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Lock" + } + ], + "type": "Tile" + } + ] + ], + "type": "even-r" + }, + "solution": [ + { + "amount": 1, + "type": "Connections" + } + ], + "version": 1 +} diff --git a/src/puzzles/index.js b/src/puzzles/index.js index 2dace51..34167de 100644 --- a/src/puzzles/index.js +++ b/src/puzzles/index.js @@ -1,40 +1,20 @@ -import _001 from './001' -import _002 from './002' -import _003 from './003' -import _004 from './004' -import _005 from './005' -import _006 from './006' -import _007 from './007' -import _008 from './008' -import _009 from './009' -import _010 from './010' -import _011 from './011' - -// These are just for testing purposes -// They won't show up in the list but are accessible via URL -import testLayout from './testLayout' -import testPortal from './testPortal' -import testReflector from './testReflector' -import testInfiniteLoop from './testInfiniteLoop' - -// Ensure puzzle configuration is valid JSON -const configuration = Object.fromEntries(Object.entries({ - '001': _001, - '002': _002, - '003': _003, - '004': _004, - '005': _005, - '006': _006, - '007': _007, - '008': _008, - '009': _009, - '010': _010, - '011': _011, - test_infinite_loop: testInfiniteLoop, - test_layout: testLayout, - test_portal: testPortal, - test_reflector: testReflector -}).map(([k, v]) => [k, JSON.parse(JSON.stringify(v))])) +const puzzles = { + '001': require('./001.json'), + '002': require('./002.json'), + '003': require('./003.json'), + '004': require('./004.json'), + '005': require('./005.json'), + '006': require('./006.json'), + '007': require('./007.json'), + '008': require('./008.json'), + '009': require('./009.json'), + '010': require('./010.json'), + '011': require('./011.json'), + test_infinite_loop: require('./test/infiniteLoop.json'), + test_layout: require('./test/layout'), + test_portal: require('./test/portal.json'), + test_reflector: require('./test/reflector.json') +} function traverse (ids, id, amount) { const index = ids.indexOf(id) @@ -52,8 +32,8 @@ class PuzzleGroup { get (id) { if (this.has(id)) { - // Note: deep cloning configuration to prevent mutation - return structuredClone(configuration[id]) + // Note: deep cloning puzzles to prevent mutation + return structuredClone(puzzles[id]) } } @@ -70,8 +50,8 @@ class PuzzleGroup { } } -export const Puzzles = new PuzzleGroup(Object.keys(configuration).sort()) +export const Puzzles = new PuzzleGroup(Object.keys(puzzles).sort()) Puzzles.hidden = new PuzzleGroup(Puzzles.ids.filter((id) => id.startsWith('test_'))) -Puzzles.titles = Object.fromEntries(Puzzles.ids.map((id) => [id, configuration[id].title || id])) +Puzzles.titles = Object.fromEntries(Puzzles.ids.map((id) => [id, puzzles[id].title || id])) Puzzles.visible = new PuzzleGroup(Puzzles.ids.filter((id) => !Puzzles.hidden.has(id))) diff --git a/src/puzzles/test/infiniteLoop.json b/src/puzzles/test/infiniteLoop.json new file mode 100644 index 0000000..a3583e3 --- /dev/null +++ b/src/puzzles/test/infiniteLoop.json @@ -0,0 +1,118 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "red", + "openings": [ + null, + null, + null, + { + "on": true, + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "rotation": 2, + "type": "Reflector" + } + ], + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "items": [ + { + "color": "red", + "openings": [ + null, + null, + null, + null, + null, + { + "on": true, + "type": "Beam" + } + ], + "type": "Terminus" + } + ], + "type": "Tile" + } + ], + [ + { + "type": "Tile" + }, + { + "type": "Tile" + }, + { + "type": "Tile" + } + ], + [ + null, + { + "items": [ + { + "rotation": 4, + "type": "Reflector" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "rotation": 2, + "type": "Reflector" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "type": "Tile" + } + ] + ] + }, + "solution": [ + { + "amount": 100, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/testLayout.js b/src/puzzles/test/layout.js similarity index 84% rename from src/puzzles/testLayout.js rename to src/puzzles/test/layout.js index feff528..99f2f13 100644 --- a/src/puzzles/testLayout.js +++ b/src/puzzles/test/layout.js @@ -1,3 +1,4 @@ +// TODO: this file can be removed when the puzzle editor is created const layout = [ ['o', 'x', 'x', 'x'], ['x', 'x', 'x', 'x'], diff --git a/src/puzzles/test/portal.json b/src/puzzles/test/portal.json new file mode 100644 index 0000000..fe14f2f --- /dev/null +++ b/src/puzzles/test/portal.json @@ -0,0 +1,167 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "direction": 0, + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "direction": 0, + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "openings": [ + null, + null, + null, + { + "color": [ + "red", + "blue" + ], + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Rotate" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "openings": [ + null, + null, + null, + null, + { + "color": "green", + "type": "Beam" + }, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Toggle" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "openings": [ + { + "color": "red", + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Rotate" + }, + { + "type": "Toggle" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "openings": [ + { + "color": "blue", + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "modifiers": [ + { + "type": "Lock" + }, + { + "type": "Toggle" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "direction": 0, + "type": "Portal" + } + ], + "modifiers": [ + { + "type": "Immutable" + } + ], + "type": "Tile" + } + ] + ] + }, + "solution": [ + { + "amount": 1, "type": "Connections" } + ] +} diff --git a/src/puzzles/test/reflector.json b/src/puzzles/test/reflector.json new file mode 100644 index 0000000..514de78 --- /dev/null +++ b/src/puzzles/test/reflector.json @@ -0,0 +1,91 @@ +{ + "layout": { + "tiles": [ + [ + { + "items": [ + { + "color": "red", + "openings": [ + null, + null, + null, + { + "on": true, + "type": "Beam" + }, + null, + null + ], + "type": "Terminus" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "type": "Reflector" + } + ], + "modifiers": [ + { + "type": "Rotate" + } + ], + "type": "Tile" + } + ], + [ + { + "items": [ + { + "color": "green", + "openings": [ + null, + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "type": "Tile" + }, + { + "items": [ + { + "color": "blue", + "openings": [ + { + "on": true, + "type": "Beam" + }, + null, + null, + null, + null, + null + ], + "type": "Terminus" + } + ], + "type": "Tile" + } + ] + ] + }, + "solution": [ + { + "amount": 999, + "type": "Connections" + } + ] +} diff --git a/src/puzzles/testInfiniteLoop.js b/src/puzzles/testInfiniteLoop.js deleted file mode 100644 index 6031e04..0000000 --- a/src/puzzles/testInfiniteLoop.js +++ /dev/null @@ -1,85 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'red', - openings: [null, null, null, { on: true, type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - type: 'Tile' - }, - { - items: [ - { - rotation: 2, - type: 'Reflector' - } - ], - type: 'Tile' - }, - { - type: 'Tile' - }, - { - items: [ - { - color: 'red', - openings: [null, null, null, null, null, { on: true, type: 'Beam' }], - type: 'Terminus' - } - ], - type: 'Tile' - } - ], - [ - { - type: 'Tile' - }, - { - type: 'Tile' - }, - { - type: 'Tile' - } - ], - [ - null, - { - items: [ - { - rotation: 4, - type: 'Reflector' - } - ], - type: 'Tile' - }, - { - items: [ - { - rotation: 2, - type: 'Reflector' - } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [{ on: true, type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - type: 'Tile' - } - ] - ] - }, - solution: [ - { amount: 100, type: 'Connections' } - ] -} diff --git a/src/puzzles/testPortal.js b/src/puzzles/testPortal.js deleted file mode 100644 index b733003..0000000 --- a/src/puzzles/testPortal.js +++ /dev/null @@ -1,83 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - direction: 0, - type: 'Portal' - } - ], - modifiers: [{ type: 'Immutable' }], - type: 'Tile' - }, - { - items: [ - { - direction: 0, - type: 'Portal' - } - ], - modifiers: [{ type: 'Immutable' }], - type: 'Tile' - }, - { - items: [ - { - openings: [null, null, null, { color: ['red', 'blue'], type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - modifiers: [{ type: 'Rotate' }], - type: 'Tile' - }, - { - items: [ - { - openings: [null, null, null, null, { color: 'green', type: 'Beam' }, null], - type: 'Terminus' - } - ], - modifiers: [{ type: 'Lock' }, { type: 'Toggle' }], - type: 'Tile' - } - ], - [ - { - items: [ - { - openings: [{ color: 'red', type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [{ type: 'Lock' }, { type: 'Rotate' }, { type: 'Toggle' }], - type: 'Tile' - }, - { - items: [ - { - openings: [{ color: 'blue', type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - modifiers: [{ type: 'Lock' }, { type: 'Toggle' }], - type: 'Tile' - }, - { - items: [ - { - direction: 0, - type: 'Portal' - } - ], - modifiers: [{ type: 'Immutable' }], - type: 'Tile' - } - ] - ] - }, - solution: [ - { amount: 1, type: 'Connections' } - ] -} diff --git a/src/puzzles/testReflector.js b/src/puzzles/testReflector.js deleted file mode 100644 index a4b4fcd..0000000 --- a/src/puzzles/testReflector.js +++ /dev/null @@ -1,54 +0,0 @@ -export default { - layout: { - tiles: [ - [ - { - items: [ - { - color: 'red', - openings: [null, null, null, { on: true, type: 'Beam' }, null, null], - type: 'Terminus' - } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { type: 'Reflector' } - ], - modifiers: [ - { type: 'Rotate' } - ], - type: 'Tile' - } - ], - [ - { - items: [ - { - color: 'green', - openings: [null, { on: true, type: 'Beam' }, null, null, null, null], - type: 'Terminus' - } - ], - type: 'Tile' - }, - { - items: [ - { - color: 'blue', - openings: [{ on: true, type: 'Beam' }, null, null, null, null, null], - type: 'Terminus' - } - ], - type: 'Tile' - } - ] - ] - }, - solution: [ - { amount: 999, type: 'Connections' } - ] -}