import { Box, isTouching, posInBox } from "./utils"; import { createJugandoState, drawBackground } from "./jugando"; import { Juego, State as AllState } from "./main"; import { Sprite } from "./sprite"; export type State = { current: "welcome"; step: 0 | 1 | 2; // Hack because we can't detect when it is a mousedown/mouseup buttonCooldown: number; }; export function createState(): State { return { current: "welcome", step: 0, buttonCooldown: 0, }; } function button(juego: Juego): { box: Box; sprite: Sprite } { const sprite = juego.state.step === 2 ? juego.sprites.botonComenzar : juego.sprites.botonSiguiente; const width = sprite.getWidth(juego); const height = sprite.getHeight(juego); return { box: { x: juego.canvas.width - width - 30, y: juego.canvas.height - height - 30, width, height, }, sprite, }; } export function update(juego: Juego, dt: number) { const { box } = button(juego); juego.state.buttonCooldown -= dt; if ( ((juego.mouse.down && posInBox(box, juego.mouse)) || isTouching(juego, box)) && juego.state.buttonCooldown < 0 ) { juego.state.buttonCooldown = 1000; if (juego.state.step === 2) { (juego as Juego).state = createJugandoState(juego); return; } else { juego.state.step++; return; } } } export function draw(juego: Juego, timestamp: number) { drawBackground(juego, 0, juego.canvas.height, juego.assets.cielo); drawBackground(juego, 0, juego.canvas.height, juego.assets.parquePublicoRio); juego.sprites.logoFPGFDTBlanco.draw( juego, 30, juego.canvas.height - 30 - juego.sprites.logoFPGFDTBlanco.getHeight(juego) ); juego.sprites.logoSalvaLaCostaneraCostado.draw(juego, 30, 30); const instruccionSprite = juego.state.step === 0 ? juego.sprites.instrucciones1 : juego.state.step === 1 ? juego.sprites.instrucciones2 : juego.state.step === 2 ? juego.sprites.instrucciones3 : null; if (!instruccionSprite) throw new Error("AAAAAAAAAAAAAAAAAAAAA"); instruccionSprite.draw( juego, juego.canvas.width - instruccionSprite.getWidth(juego) - 30, juego.canvas.height * 0.1 ); juego.sprites.jugadorxPresentando.draw( juego, juego.canvas.width * 0.5 - juego.sprites.jugadorxPresentando.getWidth(juego), juego.canvas.height * 0.1 ); const { box, sprite } = button(juego); sprite.draw(juego, box.x, box.y); }