@amphore-dev/kinogrida 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +202 -0
- package/dist/classes/ArcShape.d.ts +26 -0
- package/dist/classes/ArcShape.d.ts.map +1 -0
- package/dist/classes/ArcShape.js +299 -0
- package/dist/classes/ArcShape.js.map +1 -0
- package/dist/classes/BaseShape.d.ts +37 -0
- package/dist/classes/BaseShape.d.ts.map +1 -0
- package/dist/classes/BaseShape.js +146 -0
- package/dist/classes/BaseShape.js.map +1 -0
- package/dist/classes/Kinogrida.d.ts +32 -0
- package/dist/classes/Kinogrida.d.ts.map +1 -0
- package/dist/classes/Kinogrida.js +223 -0
- package/dist/classes/Kinogrida.js.map +1 -0
- package/dist/classes/SquareShape.d.ts +12 -0
- package/dist/classes/SquareShape.d.ts.map +1 -0
- package/dist/classes/SquareShape.js +125 -0
- package/dist/classes/SquareShape.js.map +1 -0
- package/dist/classes/index.d.ts +2 -0
- package/dist/classes/index.d.ts.map +1 -0
- package/dist/classes/index.js +2 -0
- package/dist/classes/index.js.map +1 -0
- package/dist/constants/CColors.d.ts +8 -0
- package/dist/constants/CColors.d.ts.map +1 -0
- package/dist/constants/CColors.js +70 -0
- package/dist/constants/CColors.js.map +1 -0
- package/dist/constants/CShapes.d.ts +7 -0
- package/dist/constants/CShapes.d.ts.map +1 -0
- package/dist/constants/CShapes.js +7 -0
- package/dist/constants/CShapes.js.map +1 -0
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/types/TGrid.d.ts +28 -0
- package/dist/types/TGrid.d.ts.map +1 -0
- package/dist/types/TGrid.js +2 -0
- package/dist/types/TGrid.js.map +1 -0
- package/dist/types/TKinogrida.d.ts +9 -0
- package/dist/types/TKinogrida.d.ts.map +1 -0
- package/dist/types/TKinogrida.js +2 -0
- package/dist/types/TKinogrida.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/UColors.d.ts +3 -0
- package/dist/utils/UColors.d.ts.map +1 -0
- package/dist/utils/UColors.js +12 -0
- package/dist/utils/UColors.js.map +1 -0
- package/dist/utils/UMath.d.ts +5 -0
- package/dist/utils/UMath.d.ts.map +1 -0
- package/dist/utils/UMath.js +15 -0
- package/dist/utils/UMath.js.map +1 -0
- package/dist/utils/UShapes.d.ts +2 -0
- package/dist/utils/UShapes.d.ts.map +1 -0
- package/dist/utils/UShapes.js +7 -0
- package/dist/utils/UShapes.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { hexToRGBA } from "../utils/UColors.js";
|
|
2
|
+
import { random } from "../utils/UMath.js";
|
|
3
|
+
export class BaseShape {
|
|
4
|
+
grid;
|
|
5
|
+
x = 0;
|
|
6
|
+
y = 0;
|
|
7
|
+
speed = 0.005;
|
|
8
|
+
lastMoveTime = Date.now(); // Randomize initial move debounce time
|
|
9
|
+
moveDuration = 1000; // Duration of the move in milliseconds
|
|
10
|
+
minBounceTime = 0; // Minimum time in seconds before the shape can move again
|
|
11
|
+
maxBounceTime = 10; // Maximum time in seconds before the shape can move again
|
|
12
|
+
moveDebounce = 1000 * random(this.minBounceTime, this.maxBounceTime); // Minimum time between moves in milliseconds
|
|
13
|
+
canMove = true;
|
|
14
|
+
isMoving = false;
|
|
15
|
+
tailX = 0;
|
|
16
|
+
tailY = 0;
|
|
17
|
+
originalX = 0;
|
|
18
|
+
originalY = 0;
|
|
19
|
+
targetX = 0;
|
|
20
|
+
targetY = 0;
|
|
21
|
+
hasReachedTarget = false;
|
|
22
|
+
hasTailReachedTarget = false;
|
|
23
|
+
color = "white";
|
|
24
|
+
lockedCells = [];
|
|
25
|
+
constructor(grid, x = 0, y = 0, options) {
|
|
26
|
+
this.grid = grid;
|
|
27
|
+
this.x = x;
|
|
28
|
+
this.y = y;
|
|
29
|
+
this.targetX = x;
|
|
30
|
+
this.targetY = y;
|
|
31
|
+
this.color = options.color;
|
|
32
|
+
this.tailX = x;
|
|
33
|
+
this.tailY = y;
|
|
34
|
+
this.originalX = x;
|
|
35
|
+
this.originalY = y;
|
|
36
|
+
}
|
|
37
|
+
moveTo(grid, gridConfig, x, y) {
|
|
38
|
+
if (this.isMoving ||
|
|
39
|
+
Date.now() - this.lastMoveTime < this.moveDebounce) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const lockedCells = this.genLockPath(grid, gridConfig, x, y);
|
|
43
|
+
if (!lockedCells || !this.lockGridCells(grid, lockedCells, false)) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.lockGridCells(grid, lockedCells, true);
|
|
47
|
+
this.targetX = x;
|
|
48
|
+
this.targetY = y;
|
|
49
|
+
this.tailX = this.x;
|
|
50
|
+
this.tailY = this.y;
|
|
51
|
+
this.originalX = this.x;
|
|
52
|
+
this.originalY = this.y;
|
|
53
|
+
this.isMoving = true;
|
|
54
|
+
this.lastMoveTime = Date.now();
|
|
55
|
+
}
|
|
56
|
+
genLockPath(grid, gridConfig, targetX, targetY) {
|
|
57
|
+
// Calculer la trajectoire entre la position actuelle et la position cible
|
|
58
|
+
const startX = Math.round(this.x);
|
|
59
|
+
const startY = Math.round(this.y);
|
|
60
|
+
const endX = targetX;
|
|
61
|
+
const endY = targetY;
|
|
62
|
+
return this.getLineCells(startX, startY, endX, endY);
|
|
63
|
+
}
|
|
64
|
+
lockGridCells(grid, cells, applyLocks = true) {
|
|
65
|
+
// Calculer la trajectoire entre la position actuelle et la position cible
|
|
66
|
+
// grid[startY][startX] = "locked"; // Lock the starting cell
|
|
67
|
+
// Marquer toutes les cellules sur la trajectoire comme "locked"
|
|
68
|
+
for (const { x, y } of cells) {
|
|
69
|
+
if (grid[y][x] !== null || grid[y][x] === "locked") {
|
|
70
|
+
if (y !== this.y || x !== this.x) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (y >= 0 &&
|
|
75
|
+
y < grid.length &&
|
|
76
|
+
x >= 0 &&
|
|
77
|
+
x < grid[y].length &&
|
|
78
|
+
grid[y][x] === null) {
|
|
79
|
+
if (applyLocks) {
|
|
80
|
+
grid[y][x] = "locked";
|
|
81
|
+
this.lockedCells.push({ x, y });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
getLineCells(_x0, _y0, _x1, _y1) {
|
|
88
|
+
const cells = [];
|
|
89
|
+
return cells;
|
|
90
|
+
}
|
|
91
|
+
update(grid, gridConfig, context) {
|
|
92
|
+
this.grid = grid; // Update the grid reference in case it has changed
|
|
93
|
+
if (this.isMoving) {
|
|
94
|
+
this.updatePosition(grid);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.calculateNewTarget(grid, gridConfig);
|
|
98
|
+
}
|
|
99
|
+
this.draw(context, gridConfig);
|
|
100
|
+
}
|
|
101
|
+
calculateNewTarget(_grid, _gridConfig) { }
|
|
102
|
+
updatePosition(_grid) { }
|
|
103
|
+
onMoveComplete(grid, newX, newY) {
|
|
104
|
+
const savedX = this.originalX;
|
|
105
|
+
const savedY = this.originalY;
|
|
106
|
+
this.x = newX;
|
|
107
|
+
this.y = newY;
|
|
108
|
+
this.originalX = newX;
|
|
109
|
+
this.originalY = newY;
|
|
110
|
+
this.isMoving = false;
|
|
111
|
+
this.lastMoveTime = Date.now();
|
|
112
|
+
this.moveDebounce =
|
|
113
|
+
1000 * random(this.minBounceTime, this.maxBounceTime); // Randomize next move debounce time
|
|
114
|
+
this.unlockGridCells(grid);
|
|
115
|
+
grid[savedY][savedX] = null; // Clear the original position in the grid
|
|
116
|
+
grid[newY][newX] = this;
|
|
117
|
+
const frames = (this.moveDuration / 1000) * 60;
|
|
118
|
+
const speed = 1 / frames; // toujours en %
|
|
119
|
+
this.speed = speed;
|
|
120
|
+
this.hasReachedTarget = false;
|
|
121
|
+
}
|
|
122
|
+
unlockGridCells(grid) {
|
|
123
|
+
for (const { x, y } of this.lockedCells) {
|
|
124
|
+
if (y >= 0 && y < grid.length && x >= 0 && x < grid[y].length) {
|
|
125
|
+
grid[y][x] = null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
this.lockedCells = [];
|
|
129
|
+
}
|
|
130
|
+
draw(_context, _gridConfig) { }
|
|
131
|
+
drawLockedCells(context, gridConfig) {
|
|
132
|
+
const { cellSize, offsetX, offsetY } = gridConfig;
|
|
133
|
+
const rgbColor = hexToRGBA(this.color, 0.2); // Convert hex color to rgba with 0.5 alpha
|
|
134
|
+
context.fillStyle = "rgba(0, 255, 0, 0.2)"; // Green with transparency
|
|
135
|
+
context.fillRect(this.originalX * cellSize + offsetX, this.originalY * cellSize + offsetY, cellSize, cellSize);
|
|
136
|
+
context.fillStyle = "rgba(255, 255, 0, 0.2)"; // Yellow with transparency
|
|
137
|
+
context.fillRect(this.x * cellSize + offsetX, this.y * cellSize + offsetY, cellSize, cellSize);
|
|
138
|
+
context.fillStyle = rgbColor; // Red with transparency
|
|
139
|
+
this.lockedCells.forEach(({ x, y }) => {
|
|
140
|
+
const pixelX = x * cellSize + offsetX;
|
|
141
|
+
const pixelY = y * cellSize + offsetY;
|
|
142
|
+
context.fillRect(pixelX, pixelY, cellSize, cellSize);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=BaseShape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseShape.js","sourceRoot":"","sources":["../../src/classes/BaseShape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TGridConfig } from "../types/TGrid.js";
|
|
2
|
+
import { BaseShape } from "./BaseShape.js";
|
|
3
|
+
export declare class Kinogrida {
|
|
4
|
+
#private;
|
|
5
|
+
private canvas;
|
|
6
|
+
private context;
|
|
7
|
+
private boundHandleResize;
|
|
8
|
+
constructor(canvas: HTMLCanvasElement);
|
|
9
|
+
private setupCanvas;
|
|
10
|
+
clearGrid(): void;
|
|
11
|
+
initGrid(config?: Partial<TGridConfig>): void;
|
|
12
|
+
addCell(item: BaseShape, x: number, y: number): void;
|
|
13
|
+
updateGridConfig(config?: Partial<TGridConfig>): void;
|
|
14
|
+
private drawGrid;
|
|
15
|
+
private drawLockedCells;
|
|
16
|
+
private drawCellPositions;
|
|
17
|
+
private drawCells;
|
|
18
|
+
private handleResize;
|
|
19
|
+
toggleDebugMode(): void;
|
|
20
|
+
private attachEventListeners;
|
|
21
|
+
private detachEventListeners;
|
|
22
|
+
private animate;
|
|
23
|
+
private debug;
|
|
24
|
+
play(): void;
|
|
25
|
+
pause(): void;
|
|
26
|
+
destroy(): void;
|
|
27
|
+
setFillPercentage(percentage: number): void;
|
|
28
|
+
getFillPercentage(): number;
|
|
29
|
+
getConfig(): TGridConfig;
|
|
30
|
+
setConfig(config: Partial<TGridConfig>): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=Kinogrida.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Kinogrida.d.ts","sourceRoot":"","sources":["../../src/classes/Kinogrida.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,SAAS;;IAClB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAA2B;IAyB1C,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,MAAM,EAAE,iBAAiB;IAcrC,OAAO,CAAC,WAAW;IASZ,SAAS,IAAI,IAAI;IAKjB,QAAQ,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,IAAI;IA+CjD,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAOpD,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,IAAI;IAgChE,OAAO,CAAC,QAAQ;IA8BhB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,YAAY;IAUb,eAAe,IAAI,IAAI;IAK9B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,OAAO,CAWb;IAEF,OAAO,CAAC,KAAK,CAIX;IAEK,IAAI,IAAI,IAAI;IAMZ,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IAMf,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAO3C,iBAAiB,IAAI,MAAM;IAI3B,SAAS,IAAI,WAAW;IAIxB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;CAGvD"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { BaseShape } from "./BaseShape.js";
|
|
2
|
+
import { randomInt } from "../utils/UMath.js";
|
|
3
|
+
import { getRandomColorPalette } from "../utils/UColors.js";
|
|
4
|
+
import { getRandomShapeType } from "../utils/UShapes.js";
|
|
5
|
+
export class Kinogrida {
|
|
6
|
+
canvas;
|
|
7
|
+
context;
|
|
8
|
+
#isPlaying = false;
|
|
9
|
+
#debugMode = false;
|
|
10
|
+
#gridConfig = {
|
|
11
|
+
nbrColumns: Math.floor(window.innerWidth / 100),
|
|
12
|
+
nbrRows: Math.floor(window.innerHeight / 100),
|
|
13
|
+
cellSize: 1,
|
|
14
|
+
gridMargin: 50,
|
|
15
|
+
offsetX: 0,
|
|
16
|
+
offsetY: 0,
|
|
17
|
+
width: 0,
|
|
18
|
+
height: 0,
|
|
19
|
+
lineWidth: 1,
|
|
20
|
+
debug: this.#debugMode,
|
|
21
|
+
context: null, // Will be set in setupCanvas
|
|
22
|
+
colors: getRandomColorPalette(),
|
|
23
|
+
};
|
|
24
|
+
#grid = [];
|
|
25
|
+
#cells = [];
|
|
26
|
+
#isInitialized = false;
|
|
27
|
+
#fillPercentage = 0.2; // Fill 20% of the grid with shapes
|
|
28
|
+
boundHandleResize;
|
|
29
|
+
constructor(canvas) {
|
|
30
|
+
this.canvas = canvas;
|
|
31
|
+
const context = canvas.getContext("2d");
|
|
32
|
+
if (!context) {
|
|
33
|
+
throw new Error("Cannot get 2D context from canvas");
|
|
34
|
+
}
|
|
35
|
+
this.context = context;
|
|
36
|
+
this.boundHandleResize = this.handleResize.bind(this);
|
|
37
|
+
this.setupCanvas();
|
|
38
|
+
}
|
|
39
|
+
setupCanvas() {
|
|
40
|
+
this.canvas.width = this.canvas.clientWidth;
|
|
41
|
+
this.canvas.height = this.canvas.clientHeight;
|
|
42
|
+
this.attachEventListeners();
|
|
43
|
+
this.initGrid();
|
|
44
|
+
this.#isInitialized = true;
|
|
45
|
+
}
|
|
46
|
+
clearGrid() {
|
|
47
|
+
this.#grid = [];
|
|
48
|
+
this.#cells = [];
|
|
49
|
+
}
|
|
50
|
+
initGrid(config = {}) {
|
|
51
|
+
this.clearGrid();
|
|
52
|
+
const { nbrColumns, nbrRows } = this.#gridConfig;
|
|
53
|
+
for (let i = 0; i < nbrRows; i++) {
|
|
54
|
+
const row = [];
|
|
55
|
+
for (let j = 0; j < nbrColumns; j++) {
|
|
56
|
+
row.push(null);
|
|
57
|
+
}
|
|
58
|
+
this.#grid.push(row);
|
|
59
|
+
}
|
|
60
|
+
// Example: Place a BaseItem in the center of the grid
|
|
61
|
+
this.updateGridConfig(config);
|
|
62
|
+
const colors = this.#gridConfig.colors;
|
|
63
|
+
const maxCells = Math.floor(nbrColumns * nbrRows * this.#fillPercentage);
|
|
64
|
+
// debug
|
|
65
|
+
// const maxCells = 10;
|
|
66
|
+
let addedCells = 0;
|
|
67
|
+
const maxAttempts = 100;
|
|
68
|
+
let attempts = 0;
|
|
69
|
+
while (addedCells < maxCells && attempts < maxAttempts) {
|
|
70
|
+
const x = randomInt(0, nbrColumns - 1);
|
|
71
|
+
const y = randomInt(0, nbrRows - 1);
|
|
72
|
+
if (this.#grid[y][x] === null) {
|
|
73
|
+
const ShapeConstructor = getRandomShapeType();
|
|
74
|
+
this.addCell(new ShapeConstructor(this.#grid, x, y, {
|
|
75
|
+
color: colors[randomInt(0, colors.length - 1)],
|
|
76
|
+
radiusPercent: Math.random() < 0.5 ? 100 : 0,
|
|
77
|
+
}), x, y);
|
|
78
|
+
addedCells++;
|
|
79
|
+
attempts = 0; // Reset attempts after successfully adding a cell
|
|
80
|
+
}
|
|
81
|
+
attempts++;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
addCell(item, x, y) {
|
|
85
|
+
if (this.#grid[y][x] === null) {
|
|
86
|
+
this.#grid[y][x] = item;
|
|
87
|
+
this.#cells.push(item);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
updateGridConfig(config = {}) {
|
|
91
|
+
const { gridMargin, nbrColumns, nbrRows } = this.#gridConfig;
|
|
92
|
+
const cellSize = Math.floor(Math.min((this.canvas.width - 2 * gridMargin) / nbrColumns, (this.canvas.height - 2 * gridMargin) / nbrRows));
|
|
93
|
+
const gridWidth = nbrColumns * cellSize;
|
|
94
|
+
const gridHeight = nbrRows * cellSize;
|
|
95
|
+
const offsetX = (this.canvas.width - gridWidth) / 2;
|
|
96
|
+
const offsetY = (this.canvas.height - gridHeight) / 2;
|
|
97
|
+
const lineWidth = Math.max(1, Math.floor(cellSize * 0.1));
|
|
98
|
+
const colors = config.colors || getRandomColorPalette();
|
|
99
|
+
this.#gridConfig = {
|
|
100
|
+
...this.#gridConfig,
|
|
101
|
+
offsetX,
|
|
102
|
+
offsetY,
|
|
103
|
+
width: gridWidth,
|
|
104
|
+
height: gridHeight,
|
|
105
|
+
cellSize,
|
|
106
|
+
lineWidth,
|
|
107
|
+
debug: this.#debugMode,
|
|
108
|
+
context: this.context,
|
|
109
|
+
colors,
|
|
110
|
+
...config,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
drawGrid() {
|
|
114
|
+
const { nbrColumns, nbrRows, offsetX, offsetY, cellSize, width, height, } = this.#gridConfig;
|
|
115
|
+
this.context.strokeStyle = "white";
|
|
116
|
+
this.context.lineWidth = 1;
|
|
117
|
+
for (let i = 0; i <= nbrColumns; i++) {
|
|
118
|
+
const x = offsetX + i * cellSize;
|
|
119
|
+
this.context.beginPath();
|
|
120
|
+
this.context.moveTo(x, offsetY);
|
|
121
|
+
this.context.lineTo(x, offsetY + height);
|
|
122
|
+
this.context.stroke();
|
|
123
|
+
}
|
|
124
|
+
for (let j = 0; j <= nbrRows; j++) {
|
|
125
|
+
const y = offsetY + j * cellSize;
|
|
126
|
+
this.context.beginPath();
|
|
127
|
+
this.context.moveTo(offsetX, y);
|
|
128
|
+
this.context.lineTo(offsetX + width, y);
|
|
129
|
+
this.context.stroke();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
drawLockedCells() {
|
|
133
|
+
this.#cells.forEach((cell) => {
|
|
134
|
+
cell.drawLockedCells(this.context, this.#gridConfig);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
drawCellPositions() {
|
|
138
|
+
const { cellSize, offsetX, offsetY, nbrColumns, nbrRows } = this.#gridConfig;
|
|
139
|
+
for (let y = 0; y < nbrRows; y++) {
|
|
140
|
+
for (let x = 0; x < nbrColumns; x++) {
|
|
141
|
+
const cell = this.#grid[y][x];
|
|
142
|
+
if (cell instanceof BaseShape) {
|
|
143
|
+
const centerX = offsetX + x * cellSize + cellSize / 2;
|
|
144
|
+
const centerY = offsetY + y * cellSize + cellSize / 2;
|
|
145
|
+
this.context.fillStyle = "white";
|
|
146
|
+
this.context.font = `${cellSize * 0.3}px Arial`;
|
|
147
|
+
this.context.textAlign = "center";
|
|
148
|
+
this.context.textBaseline = "middle";
|
|
149
|
+
this.context.fillText(`(${x},${y})`, centerX, centerY);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
drawCells() {
|
|
155
|
+
this.context.lineWidth = this.#gridConfig.lineWidth;
|
|
156
|
+
this.#cells.forEach((cell) => {
|
|
157
|
+
cell.update(this.#grid, this.#gridConfig, this.context);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
handleResize() {
|
|
161
|
+
this.canvas.width = this.canvas.clientWidth;
|
|
162
|
+
this.canvas.height = this.canvas.clientHeight;
|
|
163
|
+
this.updateGridConfig({
|
|
164
|
+
colors: this.#gridConfig.colors, // Preserve the current color palette
|
|
165
|
+
});
|
|
166
|
+
this.drawGrid();
|
|
167
|
+
}
|
|
168
|
+
toggleDebugMode() {
|
|
169
|
+
this.#debugMode = !this.#debugMode;
|
|
170
|
+
this.#gridConfig.debug = this.#debugMode;
|
|
171
|
+
}
|
|
172
|
+
attachEventListeners() {
|
|
173
|
+
window.addEventListener("resize", this.boundHandleResize);
|
|
174
|
+
}
|
|
175
|
+
detachEventListeners() {
|
|
176
|
+
window.removeEventListener("resize", this.boundHandleResize);
|
|
177
|
+
}
|
|
178
|
+
animate = () => {
|
|
179
|
+
if (!this.#isInitialized || !this.#isPlaying)
|
|
180
|
+
return;
|
|
181
|
+
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
182
|
+
if (this.#debugMode) {
|
|
183
|
+
this.debug();
|
|
184
|
+
}
|
|
185
|
+
this.drawCells();
|
|
186
|
+
requestAnimationFrame(this.animate);
|
|
187
|
+
};
|
|
188
|
+
debug = () => {
|
|
189
|
+
this.drawGrid();
|
|
190
|
+
this.drawLockedCells();
|
|
191
|
+
this.drawCellPositions();
|
|
192
|
+
};
|
|
193
|
+
play() {
|
|
194
|
+
if (this.#isPlaying)
|
|
195
|
+
return;
|
|
196
|
+
this.#isPlaying = true;
|
|
197
|
+
this.animate();
|
|
198
|
+
}
|
|
199
|
+
pause() {
|
|
200
|
+
this.#isPlaying = false;
|
|
201
|
+
}
|
|
202
|
+
destroy() {
|
|
203
|
+
this.pause();
|
|
204
|
+
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
205
|
+
this.detachEventListeners();
|
|
206
|
+
}
|
|
207
|
+
setFillPercentage(percentage) {
|
|
208
|
+
this.#fillPercentage = Math.max(0, Math.min(1, percentage));
|
|
209
|
+
this.initGrid({
|
|
210
|
+
colors: this.#gridConfig.colors, // Preserve the current color palette
|
|
211
|
+
}); // Reinitialize the grid to apply the new fill percentage
|
|
212
|
+
}
|
|
213
|
+
getFillPercentage() {
|
|
214
|
+
return this.#fillPercentage;
|
|
215
|
+
}
|
|
216
|
+
getConfig() {
|
|
217
|
+
return this.#gridConfig;
|
|
218
|
+
}
|
|
219
|
+
setConfig(config) {
|
|
220
|
+
this.updateGridConfig(config);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=Kinogrida.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Kinogrida.js","sourceRoot":"","sources":["../../src/classes/Kinogrida.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TGrid, TGridConfig, TPosition, TShapeConfig } from "../types/TGrid.js";
|
|
2
|
+
import { BaseShape } from "./BaseShape.js";
|
|
3
|
+
export declare class SquareShape extends BaseShape {
|
|
4
|
+
protected radiusPercent: number;
|
|
5
|
+
constructor(grid: TGrid, x: number | undefined, y: number | undefined, options: TShapeConfig);
|
|
6
|
+
protected getLineCells(x0: number, y0: number, x1: number, y1: number): TPosition[];
|
|
7
|
+
protected calculateNewTarget(grid: TGrid, gridConfig: TGridConfig): void;
|
|
8
|
+
protected updatePosition(grid: TGrid): void;
|
|
9
|
+
draw(context: CanvasRenderingContext2D, gridConfig: TGridConfig): void;
|
|
10
|
+
strokeRoundedRect(context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radiusPercent?: number): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=SquareShape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SquareShape.d.ts","sourceRoot":"","sources":["../../src/classes/SquareShape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,qBAAa,WAAY,SAAQ,SAAS;IACtC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;gBAGhC,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,MAAM,YAAI,EACb,CAAC,EAAE,MAAM,YAAI,EACb,OAAO,EAAE,YAAY;IAMzB,SAAS,CAAC,YAAY,CAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACX,SAAS,EAAE;IAuBd,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI;IA2BxE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAyCpC,IAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,WAAW;IAyC/D,iBAAiB,CACpB,OAAO,EAAE,wBAAwB,EACjC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAU;CA4BhC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { BaseShape } from "./BaseShape.js";
|
|
2
|
+
import { clamp, randomInt } from "../utils/UMath.js";
|
|
3
|
+
export class SquareShape extends BaseShape {
|
|
4
|
+
radiusPercent = 0;
|
|
5
|
+
constructor(grid, x = 0, y = 0, options) {
|
|
6
|
+
super(grid, x, y, options);
|
|
7
|
+
this.radiusPercent = options.radiusPercent ?? 0;
|
|
8
|
+
}
|
|
9
|
+
getLineCells(x0, y0, x1, y1) {
|
|
10
|
+
const cells = [];
|
|
11
|
+
// Mouvement horizontal
|
|
12
|
+
if (y0 === y1) {
|
|
13
|
+
const startX = Math.min(x0, x1);
|
|
14
|
+
const endX = Math.max(x0, x1);
|
|
15
|
+
for (let x = startX; x <= endX; x++) {
|
|
16
|
+
cells.push({ x, y: y0 });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Mouvement vertical
|
|
20
|
+
else if (x0 === x1) {
|
|
21
|
+
const startY = Math.min(y0, y1);
|
|
22
|
+
const endY = Math.max(y0, y1);
|
|
23
|
+
for (let y = startY; y <= endY; y++) {
|
|
24
|
+
cells.push({ x: x0, y });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return cells;
|
|
28
|
+
}
|
|
29
|
+
calculateNewTarget(grid, gridConfig) {
|
|
30
|
+
const newDirection = randomInt(1, 4); // 1: up, 2: right, 3: down, 4: left
|
|
31
|
+
const newY = [1, 3].includes(newDirection)
|
|
32
|
+
? clamp(this.y +
|
|
33
|
+
randomInt(1, gridConfig.nbrRows / 2 - 1) *
|
|
34
|
+
(newDirection === 1 ? -1 : 1), 0, gridConfig.nbrRows - 1)
|
|
35
|
+
: this.y;
|
|
36
|
+
const newX = [2, 4].includes(newDirection)
|
|
37
|
+
? clamp(this.x +
|
|
38
|
+
randomInt(1, gridConfig.nbrColumns / 2 - 1) *
|
|
39
|
+
(newDirection === 2 ? -1 : 1), 0, gridConfig.nbrColumns - 1)
|
|
40
|
+
: this.x;
|
|
41
|
+
if (grid[newY][newX] === null && (newX !== this.x || newY !== this.y)) {
|
|
42
|
+
this.moveTo(grid, gridConfig, newX, newY);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
updatePosition(grid) {
|
|
46
|
+
if (this.hasReachedTarget) {
|
|
47
|
+
// Check if the item has reached its target position
|
|
48
|
+
if (Math.abs(this.tailX - this.targetX) > this.speed) {
|
|
49
|
+
this.tailX +=
|
|
50
|
+
this.tailX < this.targetX ? this.speed : -this.speed;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.tailX = this.targetX;
|
|
54
|
+
}
|
|
55
|
+
if (Math.abs(this.tailY - this.targetY) > this.speed) {
|
|
56
|
+
this.tailY +=
|
|
57
|
+
this.tailY < this.targetY ? this.speed : -this.speed;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.tailY = this.targetY;
|
|
61
|
+
}
|
|
62
|
+
if (this.tailX === this.targetX && this.tailY === this.targetY) {
|
|
63
|
+
this.onMoveComplete(grid, this.targetX, this.targetY);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Example: Move towards target position
|
|
68
|
+
if (Math.abs(this.x - this.targetX) > this.speed) {
|
|
69
|
+
this.x += this.x < this.targetX ? this.speed : -this.speed;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.x = this.targetX;
|
|
73
|
+
}
|
|
74
|
+
if (Math.abs(this.y - this.targetY) > this.speed) {
|
|
75
|
+
this.y += this.y < this.targetY ? this.speed : -this.speed;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.y = this.targetY;
|
|
79
|
+
}
|
|
80
|
+
// Check if the item has reached its target position
|
|
81
|
+
if (this.x === this.targetX && this.y === this.targetY) {
|
|
82
|
+
this.hasReachedTarget = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
draw(context, gridConfig) {
|
|
87
|
+
const { cellSize, offsetX, offsetY } = gridConfig;
|
|
88
|
+
// Calculer les positions en pixels pour les coordonnées originales et actuelles
|
|
89
|
+
const originalPixelX = this.tailX * cellSize + offsetX + cellSize * 0.1;
|
|
90
|
+
const originalPixelY = this.tailY * cellSize + offsetY + cellSize * 0.1;
|
|
91
|
+
const currentPixelX = this.x * cellSize + offsetX + cellSize * 0.1;
|
|
92
|
+
const currentPixelY = this.y * cellSize + offsetY + cellSize * 0.1;
|
|
93
|
+
// Calculer les coordonnées du rectangle qui s'étend de original à current
|
|
94
|
+
const startX = Math.min(originalPixelX, currentPixelX);
|
|
95
|
+
const startY = Math.min(originalPixelY, currentPixelY);
|
|
96
|
+
const endX = Math.max(originalPixelX, currentPixelX);
|
|
97
|
+
const endY = Math.max(originalPixelY, currentPixelY);
|
|
98
|
+
// Taille du rectangle couvrant la zone entre original et current
|
|
99
|
+
const rectWidth = endX - startX + cellSize * 0.8;
|
|
100
|
+
const rectHeight = endY - startY + cellSize * 0.8;
|
|
101
|
+
context.lineWidth = gridConfig.lineWidth;
|
|
102
|
+
context.strokeStyle = this.color;
|
|
103
|
+
this.strokeRoundedRect(context, startX, startY, rectWidth, rectHeight, this.radiusPercent);
|
|
104
|
+
context.strokeStyle = "white";
|
|
105
|
+
this.strokeRoundedRect(context, startX + cellSize * 0.2, startY + cellSize * 0.2, rectWidth - cellSize * 0.4, rectHeight - cellSize * 0.4, this.radiusPercent);
|
|
106
|
+
}
|
|
107
|
+
strokeRoundedRect(context, x, y, width, height, radiusPercent = 0) {
|
|
108
|
+
// Calculer le rayon réel basé sur le pourcentage et la plus petite dimension
|
|
109
|
+
const minDimension = Math.min(width, height);
|
|
110
|
+
const radius = Math.min((minDimension * Math.max(0, Math.min(100, radiusPercent))) / 200, minDimension / 2);
|
|
111
|
+
context.beginPath();
|
|
112
|
+
context.moveTo(x + radius, y);
|
|
113
|
+
context.lineTo(x + width - radius, y);
|
|
114
|
+
context.arcTo(x + width, y, x + width, y + radius, radius);
|
|
115
|
+
context.lineTo(x + width, y + height - radius);
|
|
116
|
+
context.arcTo(x + width, y + height, x + width - radius, y + height, radius);
|
|
117
|
+
context.lineTo(x + radius, y + height);
|
|
118
|
+
context.arcTo(x, y + height, x, y + height - radius, radius);
|
|
119
|
+
context.lineTo(x, y + radius);
|
|
120
|
+
context.arcTo(x, y, x + radius, y, radius);
|
|
121
|
+
context.closePath();
|
|
122
|
+
context.stroke();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=SquareShape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SquareShape.js","sourceRoot":"","sources":["../../src/classes/SquareShape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CCOLORS_OCEAN_PALETTE: string[];
|
|
2
|
+
export declare const CCOLORS_SUNSET_PALETTE: string[];
|
|
3
|
+
export declare const CCOLORS_DARK_PALETTE: string[];
|
|
4
|
+
export declare const CCOLORS_CYBERPUNK_PALETTE: string[];
|
|
5
|
+
export declare const CCOLORS_MONOCHROME_PALETTE: string[];
|
|
6
|
+
export declare const CWATERMELON_PALETTE: string[];
|
|
7
|
+
export declare const COLORS_PALETTES: string[][];
|
|
8
|
+
//# sourceMappingURL=CColors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CColors.d.ts","sourceRoot":"","sources":["../../src/constants/CColors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAWjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAWlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAWhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,UAWrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAOtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAEF,eAAO,MAAM,eAAe,YAO3B,CAAC"}
|