@amphore-dev/kinogrida 0.3.0 → 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.
- package/README.md +132 -92
- package/dist/classes/ArcShape.d.ts +0 -1
- package/dist/classes/ArcShape.d.ts.map +1 -1
- package/dist/classes/ArcShape.js +32 -41
- package/dist/classes/ArcShape.js.map +1 -1
- package/dist/classes/BaseShape.d.ts +4 -3
- package/dist/classes/BaseShape.d.ts.map +1 -1
- package/dist/classes/BaseShape.js +16 -7
- package/dist/classes/BaseShape.js.map +1 -1
- package/dist/classes/Kinogrida.d.ts +17 -21
- package/dist/classes/Kinogrida.d.ts.map +1 -1
- package/dist/classes/Kinogrida.js +334 -122
- package/dist/classes/Kinogrida.js.map +1 -1
- package/dist/classes/SquareShape.d.ts +0 -1
- package/dist/classes/SquareShape.d.ts.map +1 -1
- package/dist/classes/SquareShape.js +14 -30
- package/dist/classes/SquareShape.js.map +1 -1
- package/dist/constants/CKinogrida.d.ts +3 -0
- package/dist/constants/CKinogrida.d.ts.map +1 -0
- package/dist/constants/CKinogrida.js +16 -0
- package/dist/constants/CKinogrida.js.map +1 -0
- package/dist/constants/CShapes.d.ts +3 -6
- package/dist/constants/CShapes.d.ts.map +1 -1
- package/dist/constants/CShapes.js.map +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types/TGrid.d.ts +2 -8
- package/dist/types/TGrid.d.ts.map +1 -1
- package/dist/types/TKinogrida.d.ts +19 -1
- package/dist/types/TKinogrida.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/UShapes.d.ts +1 -1
- package/dist/utils/UShapes.d.ts.map +1 -1
- package/package.json +2 -2
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** -
|
|
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
|
-
##
|
|
45
|
+
## 🎛️ Configuration
|
|
41
46
|
|
|
42
|
-
|
|
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
|
-
|
|
55
|
-
const
|
|
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
|
-
|
|
61
|
+
### Speed
|
|
59
62
|
|
|
60
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
73
|
+
### Debug Options
|
|
83
74
|
|
|
84
|
-
|
|
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
|
-
|
|
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
|
-
|
|
92
|
+
// Toggle all on/off
|
|
93
|
+
kinogrida.toggleDebugMode();
|
|
94
|
+
```
|
|
98
95
|
|
|
99
|
-
|
|
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
|
-
|
|
98
|
+
Kinogrida exposes a typed event emitter:
|
|
105
99
|
|
|
106
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
119
|
+
// Unsubscribe
|
|
120
|
+
kinogrida.off("cellClick", myHandler);
|
|
121
|
+
```
|
|
114
122
|
|
|
115
|
-
|
|
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
|
-
|
|
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
|
-
|
|
135
|
+
// Use any palette for your shapes
|
|
136
|
+
const colors = CWATERMELON_PALETTE;
|
|
137
|
+
```
|
|
125
138
|
|
|
126
|
-
|
|
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
|
-
|
|
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
|
-
|
|
168
|
+
Square with optional rounded corners, moves in straight lines (horizontal/vertical).
|
|
136
169
|
|
|
137
170
|
```typescript
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
179
|
+
Curved arc with rotation control, moves along circular paths.
|
|
148
180
|
|
|
149
181
|
```typescript
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
color: "red",
|
|
182
|
+
kinogrida.addCell("arc", x, y, {
|
|
183
|
+
color: "#e74c3c",
|
|
153
184
|
clockwise: true, // Rotation direction
|
|
154
|
-
rotationAmount: 0.25, // 0.25=
|
|
185
|
+
rotationAmount: 0.25, // 0.25=90°, 0.5=180°, 0.75=270°, 1.0=360°
|
|
155
186
|
});
|
|
156
187
|
```
|
|
157
188
|
|
|
158
|
-
|
|
189
|
+
## 🏗️ Architecture
|
|
159
190
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
|
188
|
-
├── types/
|
|
189
|
-
└── utils/
|
|
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;
|
|
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"}
|
package/dist/classes/ArcShape.js
CHANGED
|
@@ -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
|
-
|
|
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 (
|
|
154
|
-
|
|
155
|
-
this.progress
|
|
156
|
-
|
|
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.
|
|
179
|
-
this.tailProgress
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
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
|
|
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
|