@benev/nubs
Version:
user-input system for web games
63 lines (60 loc) • 2.36 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { html } from "lit";
import { MagicElement, mixinCss } from "@chasemoskal/magical";
import { styles } from "./styles.css.js";
import { printVector2 } from "./parts/printing.js";
import { setupListeningToEffectsAndRecordingStats } from "./parts/setup-listening-to-effects-and-recording-stats.js";
let NubVisualizer = class NubVisualizer extends MagicElement {
realize() {
const { use } = this;
const [recentKeyStats, setRecentKeyStats, getRecentKeyStats] = (use.state({}));
const [statsForPointer, setStatsForPointer] = (use.state(() => ({
movement: [0, 0],
position: [0, 0],
})));
const [statsForStick, setStatsForStick] = (use.state(() => ({
vector: [0, 0],
})));
use.setup(setupListeningToEffectsAndRecordingStats({
eventTarget: window,
getRecentKeyStats,
setRecentKeyStats,
setStatsForPointer,
setStatsForStick,
}));
return html `
<div class=coordinatesbar>
<p>
<strong>pointer</strong>
<span>${printVector2(statsForPointer.movement)}</span>
<span>${printVector2(statsForPointer.position)}</span>
</p>
<p>
<strong>stick </strong>
<span>${printVector2(statsForStick.vector)}</span>
</p>
</div>
<ul class=keystats>
${Object
.entries(recentKeyStats)
.filter(([, stats]) => stats.detail.pressed)
.map(([effect, stats]) => html `
<li data-effect="${effect}">
<strong>${effect}</strong>
<span>${stats.detail.cause}</span>
</li>
`)}
</ul>
`;
}
};
NubVisualizer = __decorate([
mixinCss(styles)
], NubVisualizer);
export { NubVisualizer };
//# sourceMappingURL=element.js.map