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 @@