diff --git a/src/iframe/life-game.js b/src/iframe/life-game.js index 54fd2ce..e7bf8b3 100644 --- a/src/iframe/life-game.js +++ b/src/iframe/life-game.js @@ -116,6 +116,13 @@ function progressBoard() { renderBoard(); } +const resetTimer = () => { + if (timer !== "stop") { + timer = "stop"; + clearInterval(timerId); + } +}; + //イベント on.play = () => { @@ -124,20 +131,29 @@ on.play = () => { }; on.pause = () => { - timer = "stop"; - clearInterval(timerId); + resetTimer(); }; on.resize = (newBoardSize) => { boardSize = newBoardSize; }; +on.sizechange = (newSizenum) => { + const newSize = parseInt(newSizenum, 10); + boardSize = newSize; + CELL_SIZE = Math.floor(defaultCellSize * (defaultBoardSize / newSize)); + board = Array.from({ length: boardSize }, () => Array.from({ length: boardSize }, () => false)); + renderBoard(); + generationChange(0); + resetTimer(); +}; + on.boardreset = () => { //すべて白にBoardを変更 board = Array.from({ length: boardSize }, () => Array.from({ length: boardSize }, () => false)); renderBoard(); generationChange(0); - on.pause(); + resetTimer(); }; on.boardrandom = () => { @@ -147,17 +163,7 @@ on.boardrandom = () => { ); renderBoard(); generationChange(0); - on.pause(); -}; - -on.sizechange = (newSizenum) => { - const newSize = parseInt(newSizenum, 10); - boardSize = newSize; - CELL_SIZE = Math.floor(defaultCellSize * (defaultBoardSize / newSize)); - board = Array.from({ length: boardSize }, () => Array.from({ length: boardSize }, () => false)); - renderBoard(); - generationChange(0); - on.pause(); + resetTimer(); }; on.timer_change = (ms) => { @@ -168,10 +174,10 @@ on.timer_change = (ms) => { } }; -on.stateupdate = () => { +on.requestSync = () => { window.parent.postMessage( { - type: "stateupdate", + type: "Sync", data: { generationFigure: generationFigure, boardSize: boardSize, @@ -182,6 +188,14 @@ on.stateupdate = () => { console.log("generationFigure:", generationFigure, "boardSize:", boardSize); }; +on.placetemplate = (newBoard) => { + board = newBoard; + renderBoard(); + generationChange(0); + resetTimer(); + stop(); +}; + on.sizechange(boardSize); on.save_board = async () => { @@ -192,4 +206,6 @@ on.apply_board = (newBoard) => { board = newBoard; renderBoard(); generationChange(0); + resetTimer(); + stop(); }; diff --git a/src/iframe/place_template.js b/src/iframe/place_template.js deleted file mode 100644 index a4f016f..0000000 --- a/src/iframe/place_template.js +++ /dev/null @@ -1,37 +0,0 @@ -window.addEventListener("message", (event) => { - if (event.data.type === "setPattern") { - const newBoard = Array.from({ length: boardSize }, () => - Array.from({ length: boardSize }, () => false), - ); - const patternData = event.data.pattern; - - if (boardSize < (patternData.minBoardSize || 0)) { - window.parent.postMessage( - { - type: "patternError", - message: `このパターンには ${patternData.minBoardSize}x${patternData.minBoardSize} 以上の盤面が必要です`, - }, - "*", - ); - return; - } else { - const patternShape = patternData.shape; - const patternHeight = patternShape.length; - const patternWidth = patternShape[0].length; - //↓パターンがボードの中央に来るよう、パターンの右上のセルの位置(startrow,startCol)を調整 - const startRow = Math.floor((boardSize - patternHeight) / 2); - const startCol = Math.floor((boardSize - patternWidth) / 2); - for (let r = 0; r < patternHeight; r++) { - for (let c = 0; c < patternWidth; c++) { - const boardRow = startRow + r; - const boardCol = startCol + c; - newBoard[boardRow][boardCol] = patternShape[r][c] === 1; - } - } - board = newBoard; - renderBoard(); - generationChange(0); - stop(); - } - } -}); diff --git a/src/lib/icons/accelerate.svg b/src/lib/icons/accelerate.svg new file mode 100644 index 0000000..4547819 --- /dev/null +++ b/src/lib/icons/accelerate.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/lib/icons/decelerate.svg b/src/lib/icons/decelerate.svg new file mode 100644 index 0000000..b1e01f9 --- /dev/null +++ b/src/lib/icons/decelerate.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/lib/icons/index.ts b/src/lib/icons/index.ts index 9041ea1..97d6e48 100644 --- a/src/lib/icons/index.ts +++ b/src/lib/icons/index.ts @@ -7,3 +7,5 @@ export { default as utcode } from "./utcode.svg"; export { default as bars_3 } from "./bars_3.svg"; export { default as language } from "./language.svg"; export { default as reset } from "./reset.svg"; +export { default as accelerate } from "./accelerate.svg"; +export { default as decelerate } from "./decelerate.svg"; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 4f9f895..9450b5e 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,7 +1,6 @@