Menos valores mágicos y spawneo de enemigos
This commit is contained in:
parent
9c03414bd2
commit
876bb8a9e5
1 changed files with 20 additions and 6 deletions
|
@ -13,6 +13,13 @@ const jugadorxSprite = loadSprite(jugadorxImg, 133, 266, juego => juego.canvas.h
|
||||||
const larretaSprite = loadSprite(larretaImg, 800, 1069, juego => juego.canvas.height / 4)
|
const larretaSprite = loadSprite(larretaImg, 800, 1069, juego => juego.canvas.height / 4)
|
||||||
const semillaSprite = loadSprite(semillaImg, 480, 640, juego => juego.canvas.height / 8)
|
const semillaSprite = loadSprite(semillaImg, 480, 640, juego => juego.canvas.height / 8)
|
||||||
|
|
||||||
|
const ENEMIES_NUM = 20
|
||||||
|
const SEED_SPEED = 1000
|
||||||
|
const SEED_COOLDOWN = 300
|
||||||
|
const MAP_MIN = 1000
|
||||||
|
const MAP_MAX = 5000
|
||||||
|
const MAP_SIZE = MAP_MAX - MAP_MIN
|
||||||
|
|
||||||
export type State = {
|
export type State = {
|
||||||
current: "jugando"
|
current: "jugando"
|
||||||
pos: { x: number }
|
pos: { x: number }
|
||||||
|
@ -27,11 +34,11 @@ export type State = {
|
||||||
export function createJugandoState(): State {
|
export function createJugandoState(): State {
|
||||||
return {
|
return {
|
||||||
current: "jugando",
|
current: "jugando",
|
||||||
pos: { x: 3000 },
|
pos: { x: MAP_MIN + MAP_SIZE / 2 },
|
||||||
view: { x: 0 },
|
view: { x: 0 },
|
||||||
velocity: { x: 0 },
|
velocity: { x: 0 },
|
||||||
side: "right",
|
side: "right",
|
||||||
enemies: [{ x: 2700 }],
|
enemies: [],
|
||||||
seeds: [],
|
seeds: [],
|
||||||
seedCooldown: 0,
|
seedCooldown: 0,
|
||||||
}
|
}
|
||||||
|
@ -49,16 +56,16 @@ export function update(juego: Juego<State>, dt: number) {
|
||||||
}
|
}
|
||||||
|
|
||||||
juego.state.pos.x += (dt / 1000) * juego.state.velocity.x
|
juego.state.pos.x += (dt / 1000) * juego.state.velocity.x
|
||||||
if (juego.state.pos.x < 2000) juego.state.pos.x = 2000
|
if (juego.state.pos.x < MAP_MIN) juego.state.pos.x = MAP_MIN
|
||||||
if (juego.state.pos.x > 4000) juego.state.pos.x = 4000
|
if (juego.state.pos.x > MAP_MAX) juego.state.pos.x = MAP_MAX
|
||||||
|
|
||||||
juego.state.seedCooldown -= dt
|
juego.state.seedCooldown -= dt
|
||||||
if (juego.keyboard.keys[' '] && juego.state.seedCooldown < 0) {
|
if (juego.keyboard.keys[' '] && juego.state.seedCooldown < 0) {
|
||||||
juego.state.seeds.push({
|
juego.state.seeds.push({
|
||||||
x: juego.state.pos.x,
|
x: juego.state.pos.x,
|
||||||
velocity: { x: juego.state.side === "left" ? -2000 : 2000 },
|
velocity: { x: juego.state.side === "left" ? -SEED_SPEED : SEED_SPEED },
|
||||||
})
|
})
|
||||||
juego.state.seedCooldown = 300
|
juego.state.seedCooldown = SEED_COOLDOWN
|
||||||
}
|
}
|
||||||
for (const seed of juego.state.seeds) {
|
for (const seed of juego.state.seeds) {
|
||||||
seed.x += (dt / 1000) * seed.velocity.x
|
seed.x += (dt / 1000) * seed.velocity.x
|
||||||
|
@ -81,6 +88,13 @@ export function update(juego: Juego<State>, dt: number) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (juego.state.enemies.length < ENEMIES_NUM) {
|
||||||
|
const x = Math.random() * MAP_SIZE + MAP_MIN
|
||||||
|
// Don't spawn enemies too close
|
||||||
|
if (Math.abs(juego.state.pos.x - x) < 300) continue
|
||||||
|
juego.state.enemies.push({ x })
|
||||||
|
}
|
||||||
|
|
||||||
juego.state.view.x = -juego.state.pos.x + juego.canvas.width / 2 - jugadorxSprite.getWidth(juego) / 2
|
juego.state.view.x = -juego.state.pos.x + juego.canvas.width / 2 - jugadorxSprite.getWidth(juego) / 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue