Skip to content

Commit

Permalink
Merge pull request #8 from juxd/focusable-canvas
Browse files Browse the repository at this point in the history
steal input only on canvas focus
  • Loading branch information
dexterleng committed Jan 8, 2021
2 parents 1f0d753 + cd01445 commit 7e47ed1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
25 changes: 19 additions & 6 deletions client/InputSystem.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@ class InputSystem {
}

// disable right click
document.addEventListener('contextmenu', event => event.preventDefault())
this.listen('contextmenu', event => {
event.preventDefault()
});

document.addEventListener('keydown', event => {
this.listen('keydown', event => {
// console.log('keydown', event)
// w or up arrow
if (event.keyCode === 87 || event.keyCode === 38) {
Expand Down Expand Up @@ -85,7 +87,7 @@ class InputSystem {
}
})

document.addEventListener('keyup', event => {
this.listen('keyup', event => {
// console.log('keyup', event)
if (event.keyCode === 87 || event.keyCode === 38) {
this.currentState.w = false
Expand Down Expand Up @@ -116,24 +118,35 @@ class InputSystem {
}
})

document.addEventListener('mousemove', event => {
this.listen('mousemove', event => {
this.currentState.mx = event.clientX
this.currentState.my = event.clientY
if (this.onmousemove) {
this.onmousemove(event)
}
})

document.addEventListener('pointerdown', event => {
this.listen('pointerdown', event => {
this.currentState.mouseDown = true
this.frameState.mouseDown = true
})

document.addEventListener('mouseup', event => {
this.listen('mouseup', event => {
this.currentState.mouseDown = false
})
}

listen(event, callback) {
document.addEventListener(event, (event) => {
const id = event.target.getAttribute('id');
if (id !== "main-canvas") {
return event;
}

callback(event);
})
}

releaseKeys() {
this.frameState.w = this.currentState.w
this.frameState.a = this.currentState.a
Expand Down
3 changes: 2 additions & 1 deletion client/runClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@ class UI {
instantiateClient(secretKey)
.then(client => {
console.log("success");
const canvas = '<canvas id=\'main-canvas\' style="height: 100%; width: 100%"></canvas>'
const canvas = '<canvas id=\'main-canvas\' style="height: 100%; width: 100%" tabindex="1"></canvas>'
this.container.innerText = ''
this.container.insertAdjacentHTML('beforeend', canvas)
document.getElementById('main-canvas').focus();
const gameClient = new GameClient(client)
let tick = 0
let previous = performance.now()
Expand Down

0 comments on commit 7e47ed1

Please sign in to comment.