# 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]