blocky-stacky-blitz / components /game-controls.js
Prince-7878's picture
Create a tertis game
5802f4e verified
Raw
History Blame Contribute Delete
3.12 kB
class GameControls extends HTMLElement {
connectedCallback() {
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
<style>
button {
transition: all 0.2s ease;
}
button:hover {
transform: translateY(-2px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
button:active {
transform: translateY(0);
}
</style>
<div class="flex flex-col gap-4 bg-gray-800 p-6 rounded-lg shadow-lg">
<h2 class="text-xl font-semibold text-center text-purple-400 mb-2">Controls</h2>
<div class="grid grid-cols-3 gap-3">
<button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center">
<i data-feather="arrow-left"></i>
</button>
<button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center">
<i data-feather="arrow-up"></i>
</button>
<button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center">
<i data-feather="arrow-right"></i>
</button>
<button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center">
<i data-feather="arrow-down"></i>
</button>
<button class="bg-purple-600 hover:bg-purple-500 text-white p-4 rounded-lg flex items-center justify-center col-span-2">
<i data-feather="corner-down-left" class="mr-2"></i>
<span>Hard Drop</span>
</button>
</div>
<div class="flex gap-3 mt-2">
<button id="startBtn" class="bg-green-600 hover:bg-green-500 text-white py-3 px-6 rounded-lg flex-1 flex items-center justify-center">
<i data-feather="play" class="mr-2"></i>
<span>Start</span>
</button>
<button id="resetBtn" class="bg-pink-600 hover:bg-pink-500 text-white py-3 px-6 rounded-lg flex-1 flex items-center justify-center">
<i data-feather="refresh-cw" class="mr-2"></i>
<span>Reset</span>
</button>
</div>
</div>
`;
this.shadowRoot.getElementById('startBtn').addEventListener('click', () => {
this.dispatchEvent(new CustomEvent('start-game'));
});
this.shadowRoot.getElementById('resetBtn').addEventListener('click', () => {
this.dispatchEvent(new CustomEvent('reset-game'));
});
feather.replace();
}
}
customElements.define('custom-game-controls', GameControls);