Volver a la pantalla de inicio después de perder

This commit is contained in:
Nulo 2021-07-02 18:29:14 +00:00
parent 29ec9bed9c
commit 9667c7520b
2 changed files with 28 additions and 4 deletions

View file

@ -1,4 +1,5 @@
import { Juego } from "./main"; import { createState } from "./lose";
import { Juego, State as AllState } from "./main";
import { Sprite } from "./sprite"; import { Sprite } from "./sprite";
import { import {
Box, Box,
@ -93,7 +94,7 @@ function touchControls(juego: Juego<State>): {
export function update(juego: Juego<State>, dt: number) { export function update(juego: Juego<State>, dt: number) {
juego.state.time -= dt; juego.state.time -= dt;
if (juego.state.time < 0) { if (juego.state.time < 0) {
(juego as Juego<any>).state = { current: "lose" }; (juego as Juego<AllState>).state = createState(juego);
return; return;
} }

View file

@ -1,11 +1,27 @@
import { Juego } from "./main"; import { Juego, State as AllState } from "./main";
import { drawText } from "./utils"; import { drawText } from "./utils";
export type State = { export type State = {
current: "lose"; current: "lose";
timeout: number;
}; };
export function update(juego: Juego<State>, dt: number) {} const TIMEOUT = 10 * 1000;
export function createState(juego: Juego<any>): State {
return {
current: "lose",
timeout: TIMEOUT,
};
}
export function update(juego: Juego<State>, dt: number) {
juego.state.timeout -= dt;
if (juego.state.timeout < 0) {
(juego as Juego<AllState>).state = { current: "welcome" };
return;
}
}
export function draw(juego: Juego<State>, timestamp: number) { export function draw(juego: Juego<State>, timestamp: number) {
drawText( drawText(
@ -17,4 +33,11 @@ export function draw(juego: Juego<State>, timestamp: number) {
const width = juego.sprites.baldosa.getWidth(juego); const width = juego.sprites.baldosa.getWidth(juego);
juego.sprites.baldosa.draw(juego, juego.canvas.width / 2 - width / 2, 100); juego.sprites.baldosa.draw(juego, juego.canvas.width / 2 - width / 2, 100);
juego.ctx.fillRect(
0,
juego.canvas.height - 30,
juego.canvas.width * (juego.state.timeout / TIMEOUT),
30
);
} }