File size: 3,117 Bytes
5802f4e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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);