32 lines
No EOL
1 KiB
JavaScript
32 lines
No EOL
1 KiB
JavaScript
const birdElem = document.querySelector( "[data-bird]" )
|
|
const BIRD_SPEED = 0.5
|
|
const JUMP_DURATION = 150
|
|
|
|
let timeSinceLastJump = Number.POSITIVE_INFINITY
|
|
|
|
const setTop = ( top ) => birdElem.style.setProperty( "--bird-top", top )
|
|
|
|
const getTop = () => parseFloat( getComputedStyle( birdElem ).getPropertyValue( "--bird-top" ) )
|
|
|
|
const handleJump = ( event ) => {
|
|
if ( event.code === "Space" || event.type == "click") timeSinceLastJump = 0
|
|
}
|
|
|
|
export const setupBird = () => {
|
|
setTop( window.innerHeight / 2 )
|
|
document.removeEventListener( "keydown", handleJump )
|
|
document.addEventListener( "keydown", handleJump )
|
|
document.removeEventListener( "click", handleJump )
|
|
document.addEventListener( "click", handleJump )
|
|
}
|
|
|
|
export const updateBird = ( delta ) => {
|
|
if ( timeSinceLastJump < JUMP_DURATION )
|
|
setTop( getTop() - BIRD_SPEED * delta )
|
|
else
|
|
setTop( getTop() + BIRD_SPEED * delta )
|
|
|
|
timeSinceLastJump += delta
|
|
}
|
|
|
|
export const getBirdRect = () => birdElem.getBoundingClientRect() |