Skip to content

Commit 376bf4e

Browse files
authored
Merge pull request #10 from keguigong/dev
Now support TOUCH and POINTER events
2 parents 301ac51 + cc16edd commit 376bf4e

File tree

4 files changed

+38
-11
lines changed

4 files changed

+38
-11
lines changed

game/DistanceMeter.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export default class DistanceMeter {
4545
maxDistanceStr += "9"
4646
}
4747

48+
this.readHighScore()
4849
this.maxScore = parseInt(maxDistanceStr)
4950
}
5051

@@ -184,13 +185,26 @@ export default class DistanceMeter {
184185
* Set the highscore as a array string.
185186
* Position of char in the sprite: H - 10, I - 11.
186187
*/
187-
setHightScore(distance: number) {
188+
setHighScore(distance: number) {
188189
distance = this.getActualDistance(distance)
189190
let highScoreStr = (this.defaultString + distance).substr(-this.maxScoreUnits)
190191

192+
this.saveHighScore(highScoreStr)
191193
this.highScore = "AB " + highScoreStr
192194
}
193195

196+
readHighScore() {
197+
const localValue = localStorage.getItem("chrome-dino-high-score")
198+
if (localValue) {
199+
let highScoreStr = (this.defaultString + parseInt(localValue)).substr(-this.maxScoreUnits)
200+
this.highScore = "AB " + highScoreStr
201+
}
202+
}
203+
204+
saveHighScore(score: string) {
205+
localStorage.setItem("chrome-dino-high-score", score)
206+
}
207+
194208
reset() {
195209
this.update(0, 0)
196210
this.achievement = false

game/Runner.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ export default class Runner {
213213
}
214214

215215
// Check for collisions.
216-
let collision = hasObstacles && checkForCollision(this.horizon.obstacles[0], this.tRex, this.ctx)
216+
let collision = hasObstacles && checkForCollision(this.horizon.obstacles[0], this.tRex)
217217

218218
if (!collision) {
219219
this.distanceRan += (this.currentSpeed * deltaTime) / this.msPerFrame
@@ -359,7 +359,7 @@ export default class Runner {
359359
// Update the high score.
360360
if (this.distanceRan > this.highestScore) {
361361
this.highestScore = Math.ceil(this.distanceRan)
362-
this.distanceMeter.setHightScore(this.highestScore)
362+
this.distanceMeter.setHighScore(this.highestScore)
363363
}
364364

365365
this.time = Date.now()
@@ -445,7 +445,8 @@ export default class Runner {
445445
document.addEventListener(Runner.events.KEYUP, this)
446446

447447
// Touch / pointer.
448-
this.containerEl.addEventListener(Runner.events.TOUCHSTART, this)
448+
document.addEventListener(Runner.events.TOUCHSTART, this)
449+
document.addEventListener(Runner.events.TOUCHEND, this)
449450
document.addEventListener(Runner.events.POINTERDOWN, this)
450451
document.addEventListener(Runner.events.POINTERUP, this)
451452
}
@@ -460,20 +461,28 @@ export default class Runner {
460461
const evtType = e.type
461462
switch (evtType) {
462463
case Runner.events.KEYDOWN:
464+
case Runner.events.TOUCHSTART:
465+
case Runner.events.POINTERDOWN:
463466
this.onKeydown(e)
464467
break
465468
case Runner.events.KEYUP:
469+
case Runner.events.TOUCHEND:
470+
case Runner.events.POINTERUP:
466471
this.onKeyUp(e)
467472
break
468473
}
469474
}
470475

471476
onKeydown(e: KeyboardEvent) {
477+
if (IS_MOBILE && this.playing) {
478+
e.preventDefault()
479+
}
480+
472481
const keycode = e.keyCode
482+
const isJumpKey =
483+
Runner.keycodes.JUMP[keycode] || e.type === Runner.events.TOUCHSTART || e.type === Runner.events.POINTERDOWN
473484
if (!this.crashed && !this.paused) {
474-
if (Runner.keycodes.JUMP[keycode]) {
475-
e.preventDefault()
476-
485+
if (isJumpKey) {
477486
if (!this.playing) {
478487
this.loadSound()
479488
this.setPlayStatus(true)
@@ -485,8 +494,6 @@ export default class Runner {
485494
this.tRex.startJump(this.currentSpeed)
486495
}
487496
} else if (this.playing && Runner.keycodes.DUCK[keycode]) {
488-
e.preventDefault()
489-
490497
if (this.tRex.jumping) {
491498
this.tRex.setSpeedDrop()
492499
} else if (!this.tRex.jumping && !this.tRex.ducking) {
@@ -498,7 +505,9 @@ export default class Runner {
498505

499506
onKeyUp(e: KeyboardEvent) {
500507
const keycode = e.keyCode
501-
if (this.isRunning() && Runner.keycodes.JUMP[keycode]) {
508+
const isJumpKey =
509+
Runner.keycodes.JUMP[keycode] || e.type === Runner.events.TOUCHEND || e.type === Runner.events.POINTERUP
510+
if (this.isRunning() && isJumpKey) {
502511
this.tRex.endJump()
503512
} else if (Runner.keycodes.DUCK[keycode]) {
504513
this.tRex.speedDrop = false
@@ -508,10 +517,14 @@ export default class Runner {
508517

509518
if (
510519
Runner.keycodes.RESTART[keycode] ||
520+
e.type === Runner.events.POINTERUP ||
511521
(deltaTime >= this.config.GAMEOVER_CLEAR_TIME && Runner.keycodes.JUMP[keycode])
512522
) {
513523
this.restart()
514524
}
525+
} else if (this.paused && isJumpKey) {
526+
this.tRex.reset()
527+
this.play()
515528
}
516529
}
517530

game/collisionDetection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export function checkForCollision(obstacle: Obstacle, tRex: Trex, optCanvasCtx?:
2626
)
2727

2828
if (optCanvasCtx) {
29-
// drawCollisionBoxes(optCanvasCtx, tRexBox, obstacleBox)
29+
drawCollisionBoxes(optCanvasCtx, tRexBox, obstacleBox)
3030
}
3131

3232
// Simple outer bounds check.

public/favicon.ico

-24.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)