Merge 4637cc589d into 2c879f99d2
This commit is contained in:
commit
4f43392395
17
js/main.js
17
js/main.js
@ -888,8 +888,17 @@ class Player extends PrimaryView {
|
|||||||
});
|
});
|
||||||
// Similarly, grab touch events and translate them to directions
|
// Similarly, grab touch events and translate them to directions
|
||||||
this.current_touches = {}; // ident => action
|
this.current_touches = {}; // ident => action
|
||||||
|
this.touch_history = {} // ident => {x, y} representing start of touch
|
||||||
this.touch_restart_delay = new util.DelayTimer;
|
this.touch_restart_delay = new util.DelayTimer;
|
||||||
let touch_target = this.root.querySelector('#player-game-area .level');
|
let touch_target = this.root.querySelector('#player-game-area .level');
|
||||||
|
let start_touches = ev => {
|
||||||
|
ev.stopPropagation();
|
||||||
|
ev.preventDefault();
|
||||||
|
this.using_touch = true;
|
||||||
|
for (let touch of ev.changedTouches) {
|
||||||
|
this.touch_history[touch.identifier] = {x: touch.clientX, y: touch.clientY};
|
||||||
|
}
|
||||||
|
}
|
||||||
let collect_touches = ev => {
|
let collect_touches = ev => {
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
@ -899,11 +908,10 @@ class Player extends PrimaryView {
|
|||||||
// TODO allow starting a level without moving?
|
// TODO allow starting a level without moving?
|
||||||
// TODO if you don't move the touch, the player can pass it and will keep going in that
|
// TODO if you don't move the touch, the player can pass it and will keep going in that
|
||||||
// direction?
|
// direction?
|
||||||
let [px, py] = this.level.player.visual_position();
|
|
||||||
px += 0.5;
|
|
||||||
py += 0.5;
|
|
||||||
for (let touch of ev.changedTouches) {
|
for (let touch of ev.changedTouches) {
|
||||||
|
let start = this.touch_history[touch.identifier]
|
||||||
let [x, y] = this.renderer.point_to_real_cell_coords(touch.clientX, touch.clientY);
|
let [x, y] = this.renderer.point_to_real_cell_coords(touch.clientX, touch.clientY);
|
||||||
|
let [px, py] = this.renderer.point_to_real_cell_coords(start.x, start.y);
|
||||||
let dx = x - px;
|
let dx = x - px;
|
||||||
let dy = y - py;
|
let dy = y - py;
|
||||||
// Divine a direction from the results
|
// Divine a direction from the results
|
||||||
@ -932,11 +940,12 @@ class Player extends PrimaryView {
|
|||||||
this.set_state('playing');
|
this.set_state('playing');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
touch_target.addEventListener('touchstart', collect_touches);
|
touch_target.addEventListener('touchstart', start_touches);
|
||||||
touch_target.addEventListener('touchmove', collect_touches);
|
touch_target.addEventListener('touchmove', collect_touches);
|
||||||
let dismiss_touches = ev => {
|
let dismiss_touches = ev => {
|
||||||
for (let touch of ev.changedTouches) {
|
for (let touch of ev.changedTouches) {
|
||||||
delete this.current_touches[touch.identifier];
|
delete this.current_touches[touch.identifier];
|
||||||
|
delete this.touch_history[touch.identifier];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
touch_target.addEventListener('touchend', dismiss_touches);
|
touch_target.addEventListener('touchend', dismiss_touches);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user