48 lines
1.2 KiB
JavaScript
48 lines
1.2 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);
|
|
}
|
|
|
|
resetKeyColors(ev) {
|
|
for (let keyElement of this.keyTargets) {
|
|
keyElement.classList.value = "";
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
} |