Newer
Older
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<title>Pompey Plays...</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
position: relative;
}
.button .box {
fill: #c3c5c4;
stroke: #555a5d;
}
.button .arrow {
fill: #555a5d;
}
.hitbox {
fill: black;
opacity: 0;
transition: opacity 0.1s linear;
}
.hitbox:hover {
opacity: 0.3;
}
.button text {
font-family: sans-serif;
font-size: 150%;
fill: #555a5d;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.commands .button text {
font-size: 125%;
}
#a .box {
fill: #c92313;
}
#b .box {
fill: #f0ba24;
}
.hitbox {
fill: black;
opacity: 0;
transition: opacity 0.1s linear;
}
.hitbox:hover {
opacity: 0.3;
}
svg {
position: absolute;
left: 0;
right: 0;
<svg viewbox="0, 0, 500, 350">
<g class="group arrows" transform="translate(10,0)">
<g class="button" id="left" transform="translate(0,60)">
<path class="box" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
<path class="arrow" d="M 50,10 L 60,20 L 30,50 L 60,80 L 50,90 L 10,50 Z" />
<path class="hitbox" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
</g>
<g class="button" id="right" transform="translate(120,60)">
<path class="box" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
<path class="arrow" d="M 50,10 L 40,20 L 70,50 L 40,80 L 50,90 L 90,50 Z" />
<path class="hitbox" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
</g>
<g class="button" id="up" transform="translate(60,0)">
<path class="box" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
<path class="arrow" d="M 10,50 L 20,60 L 50,30 L 80,60 L 90,50 L 50,10 Z" />
<path class="hitbox" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
</g>
<g class="button" id="down" transform="translate(60,120)">
<path class="box" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
<path class="arrow" d="M 10,50 L 20,40 L 50,70 L 80,40 L 90,50 L 50,90 Z" />
<path class="hitbox" d="M 50,0 L 0,50 L 50,100 L 100,50 Z" />
</g>
</g>
<g class="group letters" transform="translate(260,0)">
<g class="button" id="a" transform="translate(60,120)">
<circle class="box" r="35" cx="50" cy="50"/>
<text x="50" y="50" dy="7">A</text>
<circle class="hitbox" r="35" cx="50" cy="50"/>
</g>
<g class="button" id="b" transform="translate(120,60)">
<circle class="box" r="35" cx="50" cy="50"/>
<text x="50" y="50" dy="7">B</text>
<circle class="hitbox" r="35" cx="50" cy="50"/>
</g>
</g>
<g class="group commands" transform="translate(135,250)">
<g class="button" id="select" transform="translate(0,0)">
<rect class="box" x="1" y="30" width="98" height="40" rx="25" ry="25"/>
<text x="50" y="50" dy="7">SELECT</text>
<rect class="hitbox" x="0" y="30" width="100" height="40" rx="25" ry="25"/>
</g>
<g class="button" id="start" transform="translate(120,0)">
<rect class="box" x="1" y="30" width="98" height="40" rx="25" ry="25"/>
<text x="50" y="50" dy="7">START</text>
<rect class="hitbox" x="0" y="30" width="100" height="40" rx="25" ry="25"/>
</g>
</g>
</svg>
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<script src="/ws.lib" type="application/javascript"></script>
<script>
var socket = new CombiSocket(),
keys = [
"a",
"b",
"left",
"right",
"up",
"down",
"select",
"start"
],
sendKey = function(key) {
socket.message("input", {key: key});
};
socket.on("input-response", function(data) {
console.log(data);
});
keys.map(function(e) {
document.querySelector("#" + e + " .hitbox").addEventListener("click", sendKey.bind(null, e));
})
</script>
</body>
</html>