@amphore-dev/kinogrida 0.3.1 → 0.4.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.
Files changed (43) hide show
  1. package/README.md +132 -92
  2. package/dist/classes/ArcShape.d.ts +0 -1
  3. package/dist/classes/ArcShape.d.ts.map +1 -1
  4. package/dist/classes/ArcShape.js +32 -41
  5. package/dist/classes/ArcShape.js.map +1 -1
  6. package/dist/classes/BaseShape.d.ts +4 -3
  7. package/dist/classes/BaseShape.d.ts.map +1 -1
  8. package/dist/classes/BaseShape.js +16 -7
  9. package/dist/classes/BaseShape.js.map +1 -1
  10. package/dist/classes/Kinogrida.d.ts +17 -21
  11. package/dist/classes/Kinogrida.d.ts.map +1 -1
  12. package/dist/classes/Kinogrida.js +334 -122
  13. package/dist/classes/Kinogrida.js.map +1 -1
  14. package/dist/classes/SquareShape.d.ts +0 -1
  15. package/dist/classes/SquareShape.d.ts.map +1 -1
  16. package/dist/classes/SquareShape.js +14 -30
  17. package/dist/classes/SquareShape.js.map +1 -1
  18. package/dist/constants/CKinogrida.d.ts +3 -0
  19. package/dist/constants/CKinogrida.d.ts.map +1 -0
  20. package/dist/constants/CKinogrida.js +16 -0
  21. package/dist/constants/CKinogrida.js.map +1 -0
  22. package/dist/constants/CShapes.d.ts +3 -6
  23. package/dist/constants/CShapes.d.ts.map +1 -1
  24. package/dist/constants/CShapes.js.map +1 -1
  25. package/dist/constants/index.d.ts +1 -0
  26. package/dist/constants/index.d.ts.map +1 -1
  27. package/dist/constants/index.js +1 -0
  28. package/dist/constants/index.js.map +1 -1
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/types/TGrid.d.ts +2 -8
  34. package/dist/types/TGrid.d.ts.map +1 -1
  35. package/dist/types/TKinogrida.d.ts +19 -1
  36. package/dist/types/TKinogrida.d.ts.map +1 -1
  37. package/dist/types/index.d.ts +1 -0
  38. package/dist/types/index.d.ts.map +1 -1
  39. package/dist/types/index.js +1 -0
  40. package/dist/types/index.js.map +1 -1
  41. package/dist/utils/UShapes.d.ts +1 -1
  42. package/dist/utils/UShapes.d.ts.map +1 -1
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -11,9 +11,11 @@ Kinogrida provides a powerful and flexible system for creating animated grid-bas
11
11
  - 🎨 **Multiple Shape Types** - BaseShape, SquareShape, and ArcShape with extensible architecture
12
12
  - 🌈 **Rich Color Palettes** - 8 pre-built themes (Rainbow, Pastel, Neon, Ocean, Sunset, Dark, Earth, Cyberpunk)
13
13
  - 🔄 **Advanced Arc Animation** - Clockwise/counterclockwise rotation with configurable amplitude
14
- - ⚡ **High Performance** - Optimized rendering with requestAnimationFrame
14
+ - ⚡ **High Performance** - Frame-independent animation with requestAnimationFrame
15
15
  - 📱 **Responsive Design** - Auto-adapts to canvas resizing
16
16
  - 🎛️ **Highly Customizable** - Extensive configuration options
17
+ - 📡 **Event System** - Typed event emitter (`on`/`off`) for `cellClick`, `moveStart`, `move`, `moveEnd`
18
+ - 🐛 **Granular Debug** - Individual toggles for grid, stats, locked cells, paths, and positions
17
19
 
18
20
  ## 🚀 Installation
19
21
 
@@ -30,139 +32,177 @@ import { Kinogrida } from "@amphore-dev/kinogrida";
30
32
  const canvas = document.getElementById("myCanvas") as HTMLCanvasElement;
31
33
 
32
34
  // Create and start the visualization
33
- const kinogrida = new Kinogrida(canvas);
35
+ const kinogrida = new Kinogrida(canvas, {
36
+ speed: 2000, // Animation duration in ms (grow + shrink)
37
+ });
34
38
  kinogrida.play();
35
39
 
36
40
  // Stop when needed
37
41
  // kinogrida.pause();
42
+ // kinogrida.destroy();
38
43
  ```
39
44
 
40
- ## 🎨 Color Palettes
45
+ ## 🎛️ Configuration
41
46
 
42
- ```typescript
43
- import {
44
- CCOLORS_RAINBOW_PALETTE,
45
- CCOLORS_PASTEL_PALETTE,
46
- CCOLORS_NEON_PALETTE,
47
- CCOLORS_OCEAN_PALETTE,
48
- CCOLORS_SUNSET_PALETTE,
49
- CCOLORS_DARK_PALETTE,
50
- CCOLORS_EARTH_PALETTE,
51
- CCOLORS_CYBERPUNK_PALETTE,
52
- } from "@amphore-dev/kinogrida";
47
+ ### Engine Options
53
48
 
54
- // Use any palette for your shapes
55
- const colors = CCOLORS_CYBERPUNK_PALETTE;
49
+ ```typescript
50
+ const kinogrida = new Kinogrida(canvas, {
51
+ nbrColumns: 20, // Number of columns
52
+ nbrRows: 15, // Number of rows
53
+ gridMargin: 50, // Margin around grid (px)
54
+ lineWidth: 2, // Stroke width for shapes
55
+ speed: 4000, // Total animation duration in ms (grow + shrink)
56
+ showMouseHighlight: true, // Highlight cell on hover
57
+ debug: false, // Debug mode (boolean or TDebugOptions)
58
+ });
56
59
  ```
57
60
 
58
- ## 🔧 Advanced Usage
61
+ ### Speed
59
62
 
60
- ### Creating Custom Shapes
63
+ `speed` is the total duration of a single move animation in milliseconds, covering both the grow phase (head moves to target) and the shrink phase (tail catches up). Lower values = faster movement.
61
64
 
62
65
  ```typescript
63
- import {
64
- BaseShape,
65
- TGrid,
66
- TGridConfig,
67
- TShapeConfig,
68
- } from "@amphore-dev/kinogrida";
66
+ kinogrida.setSpeed(1000); // Fast (1s per move)
67
+ kinogrida.setSpeed(4000); // Default (4s per move)
68
+ kinogrida.setSpeed(10000); // Slow (10s per move)
69
69
 
70
- export class CustomShape extends BaseShape {
71
- public draw(context: CanvasRenderingContext2D, gridConfig: TGridConfig) {
72
- // Your custom drawing logic
73
- context.fillStyle = this.color;
74
- const { cellSize, offsetX, offsetY } = gridConfig;
75
- const x = offsetX + this.x * cellSize;
76
- const y = offsetY + this.y * cellSize;
77
- context.fillRect(x, y, cellSize, cellSize);
78
- }
79
- }
70
+ kinogrida.getSpeed(); // Current speed in ms
80
71
  ```
81
72
 
82
- ### Grid Configuration
73
+ ### Debug Options
83
74
 
84
- ```typescript
85
- const gridConfig = {
86
- nbrColumns: 20, // Number of columns
87
- nbrRows: 15, // Number of rows
88
- gridMargin: 50, // Margin around grid
89
- cellSize: 40, // Size of each cell (auto-calculated)
90
- lineWidth: 2, // Stroke width for shapes
91
- debug: false, // Show debug information
92
- };
93
- ```
75
+ Debug can be a simple boolean (`true` enables all) or a granular `TDebugOptions` object:
94
76
 
95
- ### Movement System
77
+ ```typescript
78
+ import { TDebugOptions } from "@amphore-dev/kinogrida";
79
+
80
+ // Enable all debug overlays
81
+ kinogrida.toggleDebugMode(true);
82
+
83
+ // Granular control
84
+ kinogrida.toggleDebugMode({
85
+ showGrid: true, // Draw grid lines
86
+ showStats: true, // FPS, cell count, grid size overlay
87
+ showLockedCells: true, // Highlight locked cells during movement
88
+ showPath: true, // Draw arc debug paths
89
+ showPosition: false, // Show (x,y) coordinates on cells
90
+ });
96
91
 
97
- The library features an intelligent movement system:
92
+ // Toggle all on/off
93
+ kinogrida.toggleDebugMode();
94
+ ```
98
95
 
99
- - **Path Planning** - Calculates optimal routes between grid positions
100
- - **Cell Locking** - Reserves path cells to prevent collisions
101
- - **Smooth Animation** - Fluid transitions with configurable speed
102
- - **Bounce-free Motion** - Uses distance-based positioning for precise arrival
96
+ ## 📡 Events
103
97
 
104
- ## 🏗️ Architecture
98
+ Kinogrida exposes a typed event emitter:
105
99
 
106
- ### Core Classes
100
+ ```typescript
101
+ // Cell click
102
+ kinogrida.on("cellClick", (x, y, isValid) => {
103
+ if (isValid) {
104
+ kinogrida.addCell("arc", x, y, { color: "#ff0000" });
105
+ }
106
+ });
107
107
 
108
- - **`Kinogrida`** - Main orchestrator class managing canvas and animation
109
- - **`BaseShape`** - Abstract base class for all animated shapes
110
- - **`SquareShape`** - Square implementation with optional rounded corners
111
- - **`ArcShape`** - Curved arc implementation with rotation and directional control
108
+ // Movement lifecycle
109
+ kinogrida.on("moveStart", (shape, fromX, fromY, toX, toY) => {
110
+ /* ... */
111
+ });
112
+ kinogrida.on("move", (shape, x, y) => {
113
+ /* ... */
114
+ });
115
+ kinogrida.on("moveEnd", (shape, x, y) => {
116
+ /* ... */
117
+ });
112
118
 
113
- ### Movement Lifecycle
119
+ // Unsubscribe
120
+ kinogrida.off("cellClick", myHandler);
121
+ ```
114
122
 
115
- 1. **Path Generation** - Calculate cells between start and target
116
- 2. **Collision Check** - Verify path is clear of obstacles
117
- 3. **Cell Locking** - Reserve path cells to prevent conflicts
118
- 4. **Animation Phase 1** - Move shape head to target
119
- 5. **Animation Phase 2** - Move shape tail to complete extension
120
- 6. **Cleanup** - Release locked cells and update grid state
123
+ ## 🎨 Color Palettes
121
124
 
122
- ## 🎭 Shape Types
125
+ ```typescript
126
+ import {
127
+ CCOLORS_OCEAN_PALETTE,
128
+ CCOLORS_SUNSET_PALETTE,
129
+ CCOLORS_DARK_PALETTE,
130
+ CCOLORS_CYBERPUNK_PALETTE,
131
+ CCOLORS_MONOCHROME_PALETTE,
132
+ CWATERMELON_PALETTE,
133
+ } from "@amphore-dev/kinogrida";
123
134
 
124
- ### BaseShape (Abstract)
135
+ // Use any palette for your shapes
136
+ const colors = CWATERMELON_PALETTE;
137
+ ```
125
138
 
126
- BaseShape provides core properties and methods for all shapes, including color management and movement logic.
139
+ ## 🔧 API Reference
140
+
141
+ ### Kinogrida
142
+
143
+ | Method | Description |
144
+ | ------------------------------ | ------------------------------------------------------ |
145
+ | `play()` | Start the animation loop |
146
+ | `pause()` | Pause the animation loop |
147
+ | `destroy()` | Stop and clean up all resources |
148
+ | `addCell(type, x, y, config?)` | Add a shape (`"square"` or `"arc"`) at grid position |
149
+ | `clearGrid()` | Remove all cells |
150
+ | `initGrid(config?)` | Reinitialize the grid |
151
+ | `fillGridRandomly()` | Fill the grid with random shapes |
152
+ | `setConfig(config, reset?)` | Update grid config; pass `reset: true` to reinitialize |
153
+ | `getConfig()` | Get current grid config |
154
+ | `setSpeed(ms)` | Set animation duration in ms |
155
+ | `getSpeed()` | Get current animation duration |
156
+ | `setFillPercentage(pct)` | Set fill density (0–1) and reinitialize |
157
+ | `getFillPercentage()` | Get current fill density |
158
+ | `toggleDebugMode(value?)` | Toggle or set debug options |
159
+ | `getCurrentFPS()` | Current measured FPS |
160
+ | `getDeltaTime()` | Last frame delta in ms |
161
+ | `on(event, handler)` | Subscribe to an event |
162
+ | `off(event, handler)` | Unsubscribe from an event |
127
163
 
128
- ```typescript
129
- // Abstract base class with color and movement capabilities
130
- const item = new BaseShape(grid, x, y, color);
131
- ```
164
+ ## 🎭 Shape Types
132
165
 
133
166
  ### SquareShape
134
167
 
135
- SquareShape extends BaseShape to create squares with optional rounded corners.
168
+ Square with optional rounded corners, moves in straight lines (horizontal/vertical).
136
169
 
137
170
  ```typescript
138
- // Configurable squares with optional rounding
139
- const square = new SquareShape(grid, x, y, {
140
- color: "blue",
141
- radiusPercent: 25, // 0-100 percentage for rounded corners
171
+ kinogrida.addCell("square", x, y, {
172
+ color: "#3498db",
173
+ radiusPercent: 0.5, // 0 = sharp, 1 = fully rounded
142
174
  });
143
175
  ```
144
176
 
145
177
  ### ArcShape
146
178
 
147
- ArcShape extends BaseShape to create dynamic curved arcs with advanced rotation capabilities.
179
+ Curved arc with rotation control, moves along circular paths.
148
180
 
149
181
  ```typescript
150
- // Dynamic arcs with advanced rotation control
151
- const arc = new ArcShape(grid, x, y, {
152
- color: "red",
182
+ kinogrida.addCell("arc", x, y, {
183
+ color: "#e74c3c",
153
184
  clockwise: true, // Rotation direction
154
- rotationAmount: 0.25, // 0.25=quarter, 0.5=half, 0.75=three-quarter, 1.0=full rotation
185
+ rotationAmount: 0.25, // 0.25=90°, 0.5=180°, 0.75=270°, 1.0=360°
155
186
  });
156
187
  ```
157
188
 
158
- #### ArcShape Rotation Options
189
+ ## 🏗️ Architecture
159
190
 
160
- - **`clockwise`** - `true` for clockwise, `false` for counterclockwise rotation
161
- - **`rotationAmount`** - Amplitude of rotation:
162
- - `0.25` - Quarter turn (90°)
163
- - `0.5` - Half turn (180°)
164
- - `0.75` - Three-quarter turn (270°)
165
- - `1.0` - Full rotation (360°)
191
+ ### Core Classes
192
+
193
+ - **`Kinogrida`** - Main orchestrator class managing canvas, animation loop, and events
194
+ - **`BaseShape`** - Abstract base class for all animated shapes
195
+ - **`SquareShape`** - Square implementation with optional rounded corners
196
+ - **`ArcShape`** - Curved arc implementation with rotation and directional control
197
+
198
+ ### Movement Lifecycle
199
+
200
+ 1. **Path Generation** - Calculate cells between start and target
201
+ 2. **Collision Check** - Verify path is clear of obstacles
202
+ 3. **Cell Locking** - Reserve path cells to prevent conflicts
203
+ 4. **Grow Phase** - Move shape head to target (duration: `speed / 2`)
204
+ 5. **Shrink Phase** - Move shape tail to target (duration: `speed / 2`)
205
+ 6. **Cleanup** - Release locked cells and update grid state
166
206
 
167
207
  ## 📚 Development
168
208
 
@@ -183,10 +223,10 @@ cd example && npm run dev
183
223
 
184
224
  ```
185
225
  src/
186
- ├── classes/ # Core shape classes
187
- ├── constants/ # Color palettes and constants
188
- ├── types/ # TypeScript type definitions
189
- └── utils/ # Utility functions
226
+ ├── classes/ # Core shape classes (Kinogrida, BaseShape, SquareShape, ArcShape)
227
+ ├── constants/ # Color palettes and default config
228
+ ├── types/ # TypeScript type definitions
229
+ └── utils/ # Utility functions (math, colors, shapes)
190
230
  ```
191
231
 
192
232
  ## 🤝 Contributing
@@ -8,7 +8,6 @@ export declare class ArcShape extends BaseShape {
8
8
  protected clockwise: boolean;
9
9
  protected rotationAmount: number;
10
10
  private debugPath;
11
- protected moveDuration: number;
12
11
  constructor(grid: TGrid, x: number | undefined, y: number | undefined, options: TShapeConfig);
13
12
  private genAngleOffset;
14
13
  private calculateArcGeometry;
@@ -1 +1 @@
1
- {"version":3,"file":"ArcShape.d.ts","sourceRoot":"","sources":["../../src/classes/ArcShape.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,QAAS,SAAQ,SAAS;IACnC,SAAS,CAAC,QAAQ,SAAK;IACvB,SAAS,CAAC,YAAY,SAAK;IAC3B,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,cAAc,SAAQ;IAEhC,OAAO,CAAC,SAAS,CAQf;IAEF,SAAS,CAAC,YAAY,SAAQ;gBAE1B,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,MAAM,YAAI,EACb,CAAC,EAAE,MAAM,YAAI,EACb,OAAO,EAAE,YAAY;IAYzB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,CAAC,eAAe;IAgFhB,OAAO,CAAC,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,WAAW;IAkBlE,IAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,WAAW;IAOtE,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,uBAAuB;IA8C/B,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IASvE,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI;IA4DjE,WAAW,CACd,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,GACxB,SAAS,EAAE,GAAG,KAAK;IAwFtB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,cAAc;CAOzB"}
1
+ {"version":3,"file":"ArcShape.d.ts","sourceRoot":"","sources":["../../src/classes/ArcShape.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,QAAS,SAAQ,SAAS;IACnC,SAAS,CAAC,QAAQ,SAAK;IACvB,SAAS,CAAC,YAAY,SAAK;IAC3B,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,cAAc,SAAQ;IAEhC,OAAO,CAAC,SAAS,CAQf;gBAGE,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,MAAM,YAAI,EACb,CAAC,EAAE,MAAM,YAAI,EACb,OAAO,EAAE,YAAY;IAYzB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,CAAC,eAAe;IAiFhB,OAAO,CAAC,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,WAAW;IAkBlE,IAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,WAAW;IAStE,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,uBAAuB;IAuC/B,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMvE,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI;IAuDjE,WAAW,CACd,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,GACxB,SAAS,EAAE,GAAG,KAAK;IAyFtB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,cAAc;CAOzB"}
@@ -12,7 +12,6 @@ export class ArcShape extends BaseShape {
12
12
  outer: [],
13
13
  center: [],
14
14
  };
15
- moveDuration = 4000; // Duration of the move in milliseconds
16
15
  constructor(grid, x = 0, y = 0, options) {
17
16
  super(grid, x, y, options);
18
17
  this.color = options.color;
@@ -79,11 +78,11 @@ export class ArcShape extends BaseShape {
79
78
  const arcEndAngle = initAngle + rotationAngle * this.progress * rotationDirection;
80
79
  // Start cap
81
80
  context.beginPath();
82
- context.arc(startX, startY, halfWidth, this.clockwise ? startAngle : startAngle - Math.PI, this.clockwise ? startAngle + Math.PI : startAngle);
81
+ context.arc(startX, startY, Math.max(0, halfWidth), this.clockwise ? startAngle : startAngle - Math.PI, this.clockwise ? startAngle + Math.PI : startAngle);
83
82
  context.stroke();
84
83
  // End cap
85
84
  context.beginPath();
86
- context.arc(endX, endY, halfWidth, this.clockwise ? tailAngle - Math.PI : tailAngle, this.clockwise ? tailAngle : tailAngle - Math.PI);
85
+ context.arc(endX, endY, Math.max(0, halfWidth), this.clockwise ? tailAngle - Math.PI : tailAngle, this.clockwise ? tailAngle : tailAngle - Math.PI);
87
86
  context.stroke();
88
87
  // Outer arc
89
88
  context.beginPath();
@@ -93,6 +92,7 @@ export class ArcShape extends BaseShape {
93
92
  context.beginPath();
94
93
  context.arc(arcCenterX, arcCenterY, arcRadius - halfWidth, arcStartAngle, arcEndAngle, !this.clockwise);
95
94
  context.stroke();
95
+ context.closePath();
96
96
  }
97
97
  drawArc(context, gridConfig) {
98
98
  const geometry = this.calculateArcGeometry(gridConfig);
@@ -104,7 +104,8 @@ export class ArcShape extends BaseShape {
104
104
  }
105
105
  draw(context, gridConfig) {
106
106
  this.drawArc(context, gridConfig);
107
- if (gridConfig.debug) {
107
+ const showPath = typeof gridConfig.debug === "object" && gridConfig.debug.showPath;
108
+ if (showPath) {
108
109
  this.drawDebugPath(context);
109
110
  }
110
111
  }
@@ -150,42 +151,34 @@ export class ArcShape extends BaseShape {
150
151
  if (!this.isMoving)
151
152
  return;
152
153
  const { arcCenterX, arcCenterY, arcRadius, endAngle, cellSize } = geometry;
153
- if (!this.hasReachedTarget &&
154
- (this.progress >= 1 || this.progress + this.speed >= 1)) {
155
- this.progress = 1;
156
- this.hasReachedTarget = true;
157
- }
158
- else if (this.tailProgress >= 1 ||
159
- (this.tailProgress + this.speed >= 1 && this.hasReachedTarget)) {
160
- this.tailProgress = 1;
161
- // Calculer la position finale en tenant compte de la direction de rotation
162
- const rotationDirection = this.clockwise ? 1 : -1;
163
- const rotationAngle = 2 * Math.PI * this.rotationAmount;
164
- const finalAngle = endAngle - Math.PI + rotationAngle * rotationDirection;
165
- const newX = Math.floor((arcCenterX +
166
- arcRadius * Math.cos(finalAngle) -
167
- geometry.offsetX) /
168
- cellSize);
169
- const newY = Math.floor((arcCenterY +
170
- arcRadius * Math.sin(finalAngle) -
171
- geometry.offsetY) /
172
- cellSize);
173
- this.onMoveComplete(this.grid, newX, newY);
174
- }
175
- else if (this.progress < 1) {
176
- this.progress += this.speed;
154
+ if (this.progress < 1) {
155
+ this.progress = Math.min(1, this.progress + this.speed);
156
+ if (this.progress >= 1) {
157
+ this.hasReachedTarget = true;
158
+ }
177
159
  }
178
- else if (this.progress >= 1 && this.tailProgress < 1) {
179
- this.tailProgress += this.speed;
160
+ else if (this.tailProgress < 1) {
161
+ this.tailProgress = Math.min(1, this.tailProgress + this.speed);
162
+ if (this.tailProgress >= 1) {
163
+ const rotationDirection = this.clockwise ? 1 : -1;
164
+ const rotationAngle = 2 * Math.PI * this.rotationAmount;
165
+ const finalAngle = endAngle - Math.PI + rotationAngle * rotationDirection;
166
+ const newX = Math.floor((arcCenterX +
167
+ arcRadius * Math.cos(finalAngle) -
168
+ geometry.offsetX) /
169
+ cellSize);
170
+ const newY = Math.floor((arcCenterY +
171
+ arcRadius * Math.sin(finalAngle) -
172
+ geometry.offsetY) /
173
+ cellSize);
174
+ this.onMoveComplete(this.grid, newX, newY);
175
+ }
180
176
  }
181
177
  }
182
178
  onMoveComplete(grid, newX, newY) {
183
179
  super.onMoveComplete(grid, newX, newY);
184
180
  this.progress = 0;
185
181
  this.tailProgress = 0;
186
- this.isMoving = false;
187
- this.hasReachedTarget = true;
188
- this.hasTailReachedTarget = true;
189
182
  }
190
183
  calculateNewTarget(grid, gridConfig) {
191
184
  if (this.isMoving) {
@@ -223,9 +216,6 @@ export class ArcShape extends BaseShape {
223
216
  this.angleOffset = newOffset;
224
217
  this.clockwise = newClockwise;
225
218
  this.rotationAmount = newRotationAmount;
226
- const frames = (this.moveDuration / 1000) * 60;
227
- const speed = 1 / frames; // toujours en %
228
- this.speed = speed;
229
219
  this.moveTo(grid, gridConfig, endX, endY);
230
220
  }
231
221
  }
@@ -251,7 +241,8 @@ export class ArcShape extends BaseShape {
251
241
  path.push({ x: gridX, y: gridY });
252
242
  return true;
253
243
  };
254
- if (gridConfig.debug)
244
+ const showPath = typeof gridConfig.debug === "object" && gridConfig.debug.showPath;
245
+ if (showPath)
255
246
  this.resetDebugPath();
256
247
  for (let i = 0; i <= steps; i++) {
257
248
  const progress = i / steps;
@@ -261,24 +252,24 @@ export class ArcShape extends BaseShape {
261
252
  rotationAngle * progress * rotationDirection;
262
253
  const centerX = arcCenterX + arcRadius * Math.cos(angle);
263
254
  const centerY = arcCenterY + arcRadius * Math.sin(angle);
264
- if (gridConfig.debug)
255
+ if (showPath)
265
256
  this.debugPath.center.push({ x: centerX, y: centerY });
266
257
  const innerRadius = Math.max(0.001, arcRadius - halfWidth);
267
258
  const innerX = arcCenterX + innerRadius * Math.cos(angle);
268
259
  const innerY = arcCenterY + innerRadius * Math.sin(angle);
269
- if (gridConfig.debug)
260
+ if (showPath)
270
261
  this.debugPath.inner.push({ x: innerX, y: innerY });
271
262
  const outerRadius = arcRadius + halfWidth;
272
263
  const outerX = arcCenterX + outerRadius * Math.cos(angle);
273
264
  const outerY = arcCenterY + outerRadius * Math.sin(angle);
274
- if (gridConfig.debug)
265
+ if (showPath)
275
266
  this.debugPath.outer.push({ x: outerX, y: outerY });
276
267
  const checkCenter = addPoint(centerX, centerY);
277
268
  const checkInner = addPoint(innerX, innerY);
278
269
  const checkOuter = addPoint(outerX, outerY);
279
270
  if (!checkCenter || !checkInner || !checkOuter) {
280
271
  // Si l'une des positions n'est pas valide, arrêter de générer le chemin
281
- if (gridConfig.debug)
272
+ if (showPath)
282
273
  this.resetDebugPath();
283
274
  return false;
284
275
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArcShape.js","sourceRoot":"","sources":["../../src/classes/ArcShape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArcShape.js","sourceRoot":"","sources":["../../src/classes/ArcShape.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { TGrid, TGridConfig, TPosition, TShapeConfig } from "../types/TGrid.js";
2
2
  export declare class BaseShape {
3
+ #private;
3
4
  protected grid: TGrid;
4
5
  protected x: number;
5
6
  protected y: number;
6
7
  protected speed: number;
8
+ protected moveDistance: number;
7
9
  protected lastMoveTime: number;
8
- protected moveDuration: number;
9
10
  protected minBounceTime: number;
10
11
  protected maxBounceTime: number;
11
12
  protected moveDebounce: number;
@@ -18,7 +19,6 @@ export declare class BaseShape {
18
19
  protected targetX: number;
19
20
  protected targetY: number;
20
21
  protected hasReachedTarget: boolean;
21
- protected hasTailReachedTarget: boolean;
22
22
  protected color: string;
23
23
  protected lockedCells: TPosition[];
24
24
  constructor(grid: TGrid, x: number | undefined, y: number | undefined, options: TShapeConfig);
@@ -26,12 +26,13 @@ export declare class BaseShape {
26
26
  genLockPath(grid: TGrid, gridConfig: TGridConfig, targetX: number, targetY: number): TPosition[] | false;
27
27
  lockGridCells(grid: TGrid, cells: TPosition[], applyLocks?: boolean): boolean;
28
28
  protected getLineCells(_x0: number, _y0: number, _x1: number, _y1: number): TPosition[];
29
- update(grid: TGrid, gridConfig: TGridConfig, context: CanvasRenderingContext2D): void;
29
+ update(grid: TGrid, gridConfig: TGridConfig, context: CanvasRenderingContext2D, deltaTime?: number): void;
30
30
  protected calculateNewTarget(_grid: TGrid, _gridConfig: TGridConfig): void;
31
31
  protected updatePosition(_grid: TGrid): void;
32
32
  protected onMoveComplete(grid: TGrid, newX: number, newY: number): void;
33
33
  unlockGridCells(grid: TGrid): void;
34
34
  draw(_context: CanvasRenderingContext2D, _gridConfig: TGridConfig): void;
35
35
  drawLockedCells(context: CanvasRenderingContext2D, gridConfig: TGridConfig): void;
36
+ setEmitter(emitter: (event: string, ...args: any[]) => void): void;
36
37
  }
37
38
  //# sourceMappingURL=BaseShape.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseShape.d.ts","sourceRoot":"","sources":["../../src/classes/BaseShape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAI/E,qBAAa,SAAS;IAClB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;IACtB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAK;IACxB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAK;IACxB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAS;IAEhC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAc;IAC5C,SAAS,CAAC,YAAY,EAAE,MAAM,CAAQ;IACtC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IACpC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAM;IACrC,SAAS,CAAC,YAAY,EAAE,MAAM,CAC4B;IAE1D,SAAS,CAAC,OAAO,EAAE,OAAO,CAAQ;IAClC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAS;IACpC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAK;IAC5B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAK;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAS;IAC5C,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAS;IAEhD,SAAS,CAAC,KAAK,EAAE,MAAM,CAAW;IAElC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAM;gBAGpC,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,MAAM,YAAI,EACb,CAAC,EAAE,MAAM,YAAI,EACb,OAAO,EAAE,YAAY;IAclB,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAwBjE,WAAW,CACd,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,SAAS,EAAE,GAAG,KAAK;IAUf,aAAa,CAChB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,SAAS,EAAE,EAClB,UAAU,GAAE,OAAc,GAC3B,OAAO;IA0BV,SAAS,CAAC,YAAY,CAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACZ,SAAS,EAAE;IAMP,MAAM,CACT,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,wBAAwB,GAClC,IAAI;IAUP,SAAS,CAAC,kBAAkB,CACxB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GACzB,IAAI;IAEP,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAE5C,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAwBhE,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IASlC,IAAI,CAAC,QAAQ,EAAE,wBAAwB,EAAE,WAAW,EAAE,WAAW;IAEjE,eAAe,CAClB,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,WAAW;CA4B9B"}
1
+ {"version":3,"file":"BaseShape.d.ts","sourceRoot":"","sources":["../../src/classes/BaseShape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAI/E,qBAAa,SAAS;;IAClB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;IACtB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAK;IACxB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAK;IACxB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAK;IAC5B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAK;IAEnC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAc;IAC5C,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IACpC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAM;IACrC,SAAS,CAAC,YAAY,EAAE,MAAM,CAC4B;IAE1D,SAAS,CAAC,OAAO,EAAE,OAAO,CAAQ;IAClC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAS;IACpC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAK;IAC5B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAK;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAS;IAE5C,SAAS,CAAC,KAAK,EAAE,MAAM,CAAW;IAElC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAM;gBAMpC,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,MAAM,YAAI,EACb,CAAC,EAAE,MAAM,YAAI,EACb,OAAO,EAAE,YAAY;IAclB,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IA0BjE,WAAW,CACd,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,SAAS,EAAE,GAAG,KAAK;IAUf,aAAa,CAChB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,SAAS,EAAE,EAClB,UAAU,GAAE,OAAc,GAC3B,OAAO;IA0BV,SAAS,CAAC,YAAY,CAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACZ,SAAS,EAAE;IAMP,MAAM,CACT,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,wBAAwB,EACjC,SAAS,GAAE,MAAc,GAC1B,IAAI;IAgBP,SAAS,CAAC,kBAAkB,CACxB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GACzB,IAAI;IAEP,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAE5C,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAoBhE,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IASlC,IAAI,CAAC,QAAQ,EAAE,wBAAwB,EAAE,WAAW,EAAE,WAAW;IAEjE,eAAe,CAClB,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,WAAW;IA8BpB,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;CAG5E"}
@@ -4,9 +4,9 @@ export class BaseShape {
4
4
  grid;
5
5
  x = 0;
6
6
  y = 0;
7
- speed = 0.005;
7
+ speed = 0;
8
+ moveDistance = 0;
8
9
  lastMoveTime = Date.now(); // Randomize initial move debounce time
9
- moveDuration = 1000; // Duration of the move in milliseconds
10
10
  minBounceTime = 0; // Minimum time in seconds before the shape can move again
11
11
  maxBounceTime = 10; // Maximum time in seconds before the shape can move again
12
12
  moveDebounce = 1000 * random(this.minBounceTime, this.maxBounceTime); // Minimum time between moves in milliseconds
@@ -19,9 +19,10 @@ export class BaseShape {
19
19
  targetX = 0;
20
20
  targetY = 0;
21
21
  hasReachedTarget = false;
22
- hasTailReachedTarget = false;
23
22
  color = "white";
24
23
  lockedCells = [];
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ #emitter;
25
26
  constructor(grid, x = 0, y = 0, options) {
26
27
  this.grid = grid;
27
28
  this.x = x;
@@ -50,8 +51,10 @@ export class BaseShape {
50
51
  this.tailY = this.y;
51
52
  this.originalX = this.x;
52
53
  this.originalY = this.y;
54
+ this.moveDistance = Math.abs(x - this.x) + Math.abs(y - this.y);
53
55
  this.isMoving = true;
54
56
  this.lastMoveTime = Date.now();
57
+ this.#emitter?.("moveStart", this, this.x, this.y, x, y);
55
58
  }
56
59
  genLockPath(grid, gridConfig, targetX, targetY) {
57
60
  // Calculer la trajectoire entre la position actuelle et la position cible
@@ -88,10 +91,14 @@ export class BaseShape {
88
91
  const cells = [];
89
92
  return cells;
90
93
  }
91
- update(grid, gridConfig, context) {
94
+ update(grid, gridConfig, context, deltaTime = 16.67) {
92
95
  this.grid = grid; // Update the grid reference in case it has changed
96
+ // speed = fraction of each phase (grow/shrink) completed per frame
97
+ // gridConfig.speed = total animation duration in ms (grow + shrink)
98
+ this.speed = (2 * deltaTime) / gridConfig.speed;
93
99
  if (this.isMoving) {
94
100
  this.updatePosition(grid);
101
+ this.#emitter?.("move", this, this.x, this.y);
95
102
  }
96
103
  else {
97
104
  this.calculateNewTarget(grid, gridConfig);
@@ -114,10 +121,8 @@ export class BaseShape {
114
121
  this.unlockGridCells(grid);
115
122
  grid[savedY][savedX] = null; // Clear the original position in the grid
116
123
  grid[newY][newX] = this;
117
- const frames = (this.moveDuration / 1000) * 60;
118
- const speed = 1 / frames; // toujours en %
119
- this.speed = speed;
120
124
  this.hasReachedTarget = false;
125
+ this.#emitter?.("moveEnd", this, newX, newY);
121
126
  }
122
127
  unlockGridCells(grid) {
123
128
  for (const { x, y } of this.lockedCells) {
@@ -142,5 +147,9 @@ export class BaseShape {
142
147
  context.fillRect(pixelX, pixelY, cellSize, cellSize);
143
148
  });
144
149
  }
150
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
+ setEmitter(emitter) {
152
+ this.#emitter = emitter;
153
+ }
145
154
  }
146
155
  //# sourceMappingURL=BaseShape.js.map