@beetpx/beetpx
Version:
A TypeScript framework for pixel art browser games.
187 lines • 6.73 kB
JavaScript
var _a;
import { HtmlTemplate } from "../HtmlTemplate";
export class GameInputTouch {
inputMethod = "touch";
static
up: 0b1000_00_0_00,
down: 0b0100_00_0_00,
left: 0b0010_00_0_00,
right: 0b0001_00_0_00,
O: 0b0000_10_0_00,
X: 0b0000_01_0_00,
menu: 0b0000_00_1_00,
muteUnmute: 0b0000_00_0_10,
fullScreen: 0b0000_00_0_01,
};
{
bitMask: _a.
events: ["button_up", "button_left"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsUpLeft,
elements: [],
},
{
bitMask: _a.
events: ["button_up"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsUp,
elements: [],
},
{
bitMask: _a.
events: ["button_up", "button_right"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsUpRight,
elements: [],
},
{
bitMask: _a.
events: ["button_left"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsLeft,
elements: [],
},
{
bitMask: _a.
events: ["button_right"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsRight,
elements: [],
},
{
bitMask: _a.
events: ["button_down", "button_left"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsDownLeft,
elements: [],
},
{
bitMask: _a.
events: ["button_down"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsDown,
elements: [],
},
{
bitMask: _a.
events: ["button_down", "button_right"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsDownRight,
elements: [],
},
{
bitMask: _a.
events: ["button_O"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsO,
elements: [],
},
{
bitMask: _a.
events: ["button_X"],
requiresStart: false,
selector: HtmlTemplate.selectors.controlsX,
elements: [],
},
{
bitMask: _a.
events: ["button_menu"],
requiresStart: true,
selector: HtmlTemplate.selectors.controlsMenu,
elements: [],
},
{
bitMask: _a.
events: ["mute_unmute_toggle"],
requiresStart: true,
selector: HtmlTemplate.selectors.controlsMuteToggle,
elements: [],
},
{
bitMask: _a.
events: ["full_screen"],
requiresStart: true,
selector: HtmlTemplate.selectors.controlsFullScreen,
elements: [],
},
];
constructor() {
this.
elements.push(...document.querySelectorAll(selector));
});
}
startListening() {
document.addEventListener("touchstart", this.
document.addEventListener("touchmove", this.
document.addEventListener("touchcancel", this.
document.addEventListener("touchend", this.
}
touchEvent.preventDefault();
for (const touch of touchEvent.changedTouches) {
if (touchEvent.type === "touchmove") {
let detectedEvents = 0;
for (const { elements, bitMask, requiresStart } of this.
if (!requiresStart &&
this.
detectedEvents |= bitMask;
}
}
this.
}
else if (touchEvent.type === "touchstart") {
let detectedEvents = 0;
for (const { elements, bitMask, events } of this.
if (this.
detectedEvents |= bitMask;
}
}
this.
}
else if (touchEvent.type === "touchend" ||
touchEvent.type === "touchcancel") {
this.
}
}
}
for (const el of elements) {
const bcr = el.getBoundingClientRect();
if (touch.clientX >=
bcr.left -
(bitMask & _a.
touch.clientX <=
bcr.right +
(bitMask & _a.
touch.clientY >=
bcr.top - (bitMask & _a.
touch.clientY <=
bcr.bottom +
(bitMask & _a.
return true;
}
}
return false;
}
update(eventsCollector) {
let anythingAdded = false;
for (const [touchIdentifier, ongoingEvents,] of this.
for (const { bitMask, events } of this.
if ((ongoingEvents & bitMask) === bitMask) {
for (const event of events) {
eventsCollector.add(event);
anythingAdded = true;
}
}
}
if (ongoingEvents & _a.
this.
}
}
return anythingAdded;
}
}
_a = GameInputTouch;
//# sourceMappingURL=GameInputTouch.js.map