42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
|
import { Controller } from "https://unpkg.com/@hotwired/stimulus@v3.2.2/dist/stimulus.js";
|
||
|
|
||
|
import { MARKERS, GameController } from "../models/gamecontroller.js";
|
||
|
|
||
|
export default class extends Controller {
|
||
|
static targets = [ "key" ];
|
||
|
static outlets = [ "playfield" ];
|
||
|
|
||
|
tappedKey(ev) {
|
||
|
ev.preventDefault();
|
||
|
|
||
|
let key = ev.target.dataset["key"];
|
||
|
this.playfieldOutlet.tappedKey(key);
|
||
|
}
|
||
|
|
||
|
colorizeKeys(ev) {
|
||
|
let hits = ev.detail.hits;
|
||
|
|
||
|
for (let k in hits) {
|
||
|
let thisKey = k.toLowerCase();
|
||
|
let marker = hits[k];
|
||
|
|
||
|
let keyElement = this.keyTargets.filter((e) => e.dataset.key == thisKey)[0];
|
||
|
switch (marker) {
|
||
|
case MARKERS.RIGHT_POS:
|
||
|
keyElement.classList.value = "right-pos";
|
||
|
break;
|
||
|
case MARKERS.RIGHT_CHAR:
|
||
|
if (!keyElement.classList.contains("right-pos")) {
|
||
|
keyElement.classList.add("right-char");
|
||
|
}
|
||
|
break;
|
||
|
case MARKERS.MISS:
|
||
|
if (keyElement.classList.length == 0) {
|
||
|
keyElement.classList.add("miss");
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|