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 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 = {
|
||||
current: "jugando"
|
||||
pos: { x: number }
|
||||
|
@ -27,11 +34,11 @@ export type State = {
|
|||
export function createJugandoState(): State {
|
||||
return {
|
||||
current: "jugando",
|
||||
pos: { x: 3000 },
|
||||
pos: { x: MAP_MIN + MAP_SIZE / 2 },
|
||||
view: { x: 0 },
|
||||
velocity: { x: 0 },
|
||||
side: "right",
|
||||
enemies: [{ x: 2700 }],
|
||||
enemies: [],
|
||||
seeds: [],
|
||||
seedCooldown: 0,
|
||||
}
|
||||
|
@ -49,16 +56,16 @@ export function update(juego: Juego<State>, dt: number) {
|
|||
}
|
||||
|
||||
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 > 4000) juego.state.pos.x = 4000
|
||||
if (juego.state.pos.x < MAP_MIN) juego.state.pos.x = MAP_MIN
|
||||
if (juego.state.pos.x > MAP_MAX) juego.state.pos.x = MAP_MAX
|
||||
|
||||
juego.state.seedCooldown -= dt
|
||||
if (juego.keyboard.keys[' '] && juego.state.seedCooldown < 0) {
|
||||
juego.state.seeds.push({
|
||||
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) {
|
||||
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
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue