# Notas Gem Blast
1) Condicion de game over?
2) Diagrama de estados (Estados)
3) Available Commands
4) Interface Back-Front
5) Ejemplo de snapshots
### 1) Condicion de Game over
- Tiempo 120 segundos
### 2) Diagrama de Estados
- Crear (1 jugador)
- Joinear otro Jugador (en cualquier momento)
- enviar start
```json
action : { input: "start" }
```
- enviar commands (* ver [3])
- game over (* ver [1])
- devuelve el Winner si todos los jugadores terminaron
### 3) available Commands
siempre se envian de la misma manera
```json
action : { input: command }
```
- "start" // se envia solo la primera vez (para arrancar el timer)
- "{fila}:{columna}:{u/d/r/l}" [ver nota ****]
- "Thunder Strike" // Accionar Booster convierte en pieza especial
- "Fire Strike" // Accionar Booster rompe todas las piezas del borde.
- "Extra Time" // Accionar Booster
### 4) Interface Back-Front
```javascript
const staging = {
snapshots: [
grid: [[0,2,3,4,5123][0,1,2,3 ...], ...],
match: fase / true,
prize: {label: 'asd', score: 123}
],
objective: {
detail: [{gem: 1, amount: 3, goal: 10 }, {gem: 1, amount: 3, goal: 10 }],
prize: { label: 'asd', score: 123}
}
score: 0,
gameOver: false,
gameStarted: true,
boostersUsed: [""],
time: {
left: 3000,
initial: null,
max: 3000,
}
}
```
****
action: { input: "{id-pieza-a-colocar}:{orientacion}:{id-pieza-a-aconectar}:{pata-t-r-b-l}"}
id 1 - t - id: 45 h: '',
|
| |
|---|---| |
| |----|
|
```
[0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4]
[
0 1 2 3 4 ... 8
9 10 11 12 13 ... 15
...... 79
]
0 - 6 : gemas (7)
7 - 16 : especiales (10)
-1 celdas vacias,
90 explotarla
lista de gemas
coordenada
numero de gema
[
{ coordenada, num_gem, explota?, }
]
endlessGrid = [0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7]
grid = [0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7]