mostly styling

This commit is contained in:
damouse 2017-02-15 12:52:01 -06:00
parent d9e73cfb38
commit 73435ead78
9 changed files with 787 additions and 13150 deletions

View file

@ -16,7 +16,7 @@
"license": "MIT",
"homepage": "https://github.com/christianalfoni/webpack-express-boilerplate",
"scripts": {
"start": "node src/server"
"start": "node src/server",
},
"dependencies": {
"babel-cli": "^6.4.0",

View file

@ -1,7 +1,6 @@
// Same
angular.module('controller', [])
.controller('RootController', function($scope) {
var socket = io.connect('localhost:3000');
.controller('RootController', function($scope, $location) {
var socket = io.connect($location.$$host + ':' + $location.$$port);
$scope.press = function(b, k) {
socket.emit("controller", { event: 'keydown', button: b, code: k });
@ -12,3 +11,7 @@ angular.module('controller', [])
socket.emit("controller", { event: 'keyup', button: b, code: k });
};
})
/**
* Add handlers to dpad-buttons
*/

101
src/nes.js Normal file
View file

@ -0,0 +1,101 @@
// Implementation of the NES controller, kept seperately from the angular, controller implementation
// because of the order of the imports
(function() {
"use strict";
var pad = document.getElementById("dpad"),
i = 0,
padbuttons = pad.getElementsByClassName("button"),
click = function() {
pad.className = this.id;
document.onmouseup = function() {
pad.className = "";
};
};
for (i = 0; i < padbuttons.length; i += 1) {
padbuttons[i].onmousedown = click;
}
}());
/**
* Draw d-pad
*/
(function() {
"use strict";
var canvas = document.getElementById("dpad-body");
function angularShape(canvas, coords) {
var shape = canvas.getContext("2d"),
i = 0;
shape.beginPath();
shape.moveTo(coords[0][0], coords[0][1]);
coords.slice(1);
for (i = 0; i < coords.length; i += 1) {
shape.lineTo(coords[i][0], coords[i][1]);
}
shape.closePath();
return shape;
}
function linearFill(shape, color1, color2, coords) {
var bg = shape.createLinearGradient(coords[0], coords[1], coords[2], coords[3]);
bg.addColorStop(0, color1);
bg.addColorStop(1, color2);
shape.fillStyle = bg;
shape.fill();
}
function ySide(canvas, y, xFrom, xTo) {
var shape = angularShape(canvas, [
[y, xFrom],
[y + 5, xFrom + 3.5],
[y + 5, xTo + 3.5],
[y, xTo]
]);
linearFill(shape, "#666", "#000", [y, xFrom, y + 15, xFrom]);
}
function xSide(canvas, x, yFrom, yTo) {
var shape = angularShape(canvas, [
[yFrom, x],
[yFrom + 5, x + 3.5],
[yTo + 5, x + 3.5],
[yTo, x]
]);
linearFill(shape, "#666", "#000", [yFrom, x, yFrom, x + 15]);
}
// draw the sides first
xSide(canvas, 63.5, 0, 100);
xSide(canvas, 100, 36.5, 63.5);
ySide(canvas, 63.5, 0, 36.5);
ySide(canvas, 63.5, 63.5, 100);
ySide(canvas, 100, 36.5, 63.5);
// draw the d-pad
var plus = angularShape(canvas, [
[0, 36.5],
[36.5, 36.5],
[36.5, 0],
[63.5, 0],
[63.5, 36.5],
[100, 36.5],
[100, 63.5],
[63.5, 63.5],
[63.5, 100],
[36.5, 100],
[36.5, 63],
[0, 63.5]
]);
plus.fillStyle = "#1a1a1a";
plus.shadowColor = "rgba(0, 0, 0, 0.6)";
plus.shadowBlur = 15;
plus.shadowOffsetX = 20;
plus.shadowOffsetY = 10;
plus.fill();
}());

View file

@ -11,7 +11,10 @@ for (var d of["stylesheets", "vendor", "sensors", "src"]) {
}
io.on('connection', (socket) => {
socket.on("controller", (m) => io.emit('input', m))
socket.on("controller", (m) => {
console.log(m)
io.emit('input', m)
})
socket.on("command", (m) => io.emit('command', m))
});

File diff suppressed because it is too large Load diff

View file

@ -441,7 +441,15 @@ Full-Width Styles
}
#main_content_wrap {
background: #f2f2f2;
background: #45484d;
/* Old browsers */
background: -moz-linear-gradient(top, #45484d 0%, #000000 100%);
/* FF3.6-15 */
background: -webkit-linear-gradient(top, #45484d 0%, #000000 100%);
/* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, #45484d 0%, #000000 100%);
/* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#45484d', endColorstr='#000000', GradientType=0);
height: 100vh;
}
@ -453,6 +461,11 @@ Full-Width Styles
background: #212121;
}
#files {
font-weight: bold;
color: white;
}
/*******************************************************************************
Small Device Styles
@ -510,7 +523,7 @@ div.emscripten {
}
div.emscripten_border {
border: 1px solid black;
/* border: 1px solid black; */
}
@ -647,3 +660,192 @@ canvas.emscripten {
background-color: green;
color: white;
}
@keyframes spin {
0%: {
transform: rotateX(45deg) rotateZ(-315deg);
}
100% {
transform: rotateX(45deg) rotateZ(45deg);
}
}
.n64,
.viewport {
width: 300px;
height: 300px;
}
.viewport {
transform: scale(0.5);
perspective: 725px;
perspective-origin: 50% 50%;
position: fixed;
top: 50%;
left: 50%;
margin-left: -150px;
margin-top: -150px;
}
.n64 {
transform: rotateX(45deg) rotateZ(-315deg);
transform-style: preserve-3d;
animation-name: spin;
animation-duration: 5s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
.n64 .side {
width: 100%;
height: 100%;
position: absolute;
backface-visibility: hidden;
}
.part {
display: block;
float: left;
}
.part.yellow {
background-color: #FFC001;
}
.part.red {
background-color: #FE2015;
}
.part.green {
background-color: #069330;
}
.part.blue {
background-color: #011DA9;
}
.bottom>div,
.top>div {
width: 100px;
height: 100px;
}
.bottom .vert-top,
.top .vert-top {
transform-origin: left;
transform: rotateY(-54deg) scaleX(1.7);
}
.top .vert-top {
transform-origin: right;
}
.bottom .vert-bottom,
.top .vert-bottom {
transform-origin: right;
transform: rotateY(54deg) scaleX(1.7);
}
.top .vert-bottom {
transform-origin: left;
}
.bottom .hoz-left,
.top .hoz-left {
transform-origin: bottom;
transform: rotateX(-54deg) scaleY(1.7);
}
.top .hoz-left {
transform-origin: top;
}
.bottom .hoz-right,
.top .hoz-right {
transform-origin: top;
transform: rotateX(54deg) scaleY(1.7);
}
.top .hoz-right {
transform-origin: bottom;
}
.bottom.side {
backface-visibility: visible;
}
.top.side {
transform-style: preserve-3d;
transform: translateZ(300px);
}
.bottom .red + .red,
.top .red + .red {
margin-left: 100px;
}
.front .part,
.back .part {
width: 100px;
height: 100%;
}
.left .part,
.right .part {
width: 100%;
height: 100px;
}
.front .part.middle,
.back .part.middle {
height: 100px;
margin-top: 100px;
transform: skewY(54deg) scaleY(1.63);
}
.left .part.middle,
.right .part.middle {
width: 100px;
margin-left: 100px;
transform: skewX(-54deg) scaleX(1.63);
}
.front {
transform-origin: 50% 100%;
transform: rotateX(-90deg);
}
.side.inside {
backface-visibility: visible;
}
.front.inside {
transform: rotateX(-90deg) translateZ(-100px);
}
.back {
transform-origin: 50% 0%;
transform: rotateX(90deg);
}
.back.inside {
transform: rotateX(90deg) translateZ(-100px);
}
.left {
transform-origin: 0% 50%;
transform: rotateY(-90deg);
}
.left.inside {
transform: rotateY(-90deg) translateZ(-100px);
}
.right {
transform-origin: 100% 50%;
transform: rotateY(90deg);
}
.right.inside {
transform: rotateY(90deg) translateZ(-100px);
}

View file

@ -13,6 +13,7 @@ function handleFileSelect(evt) {
encoding: 'binary'
});
document.getElementById('filechooser').style.visibility = 'hidden';
document.getElementById('n64-logo').style.display = 'none';
Module['callMain'](['--resolution', '640x480', rom]);
};
reader.readAsArrayBuffer(files[0]);
@ -231,6 +232,7 @@ Module.expectedDataFileDownloads++;
}
if (Module['calledRun']) {
console.log("Done")
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];

View file

@ -11,7 +11,7 @@
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-touch.js"></script>
<!-- <script src="https://ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-touch.js"></script> -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="assets/three.min.js"></script>
@ -24,13 +24,50 @@
</head>
<body ng-app="controller" ng-controller='RootController'>
<figure id="nespad">
<div class="cord"></div>
<section class="dpad-pane">
<div class="dpad-hole"></div>
<div id="dpad">
<canvas height="150" id="dpad-body" width="150"></canvas>
<button class="button" id="up" ng-mousedown='press("ArrowUp", 38)' ng-mouseup='release("ArrowUp", 38)'></button>
<button class="button" id="right" ng-mousedown='press("ArrowRight", 39)' ng-mouseup='release("ArrowRight", 39)'></button>
<button class="button" id="down" ng-mousedown='press("ArrowDown", 40)' ng-mouseup='release("ArrowDown", 40)'></button>
<button class="button" id="left" ng-mousedown='press("ArrowLeft", 37)' ng-mouseup='release("ArrowLeft", 37)'></button>
</div>
</section>
<section class="menu-pane">
<div class="labels">
<label class="select" for="select"> Z</label>
<label class="start" for="start">Start</label>
</div>
<div class="buttons">
<button class="button select" id="select" ng-mousedown='press("z", 90)' ng-mouseup='release("z", 90)'>Select</button>
<button class="button start" id="start" ng-mousedown='press("Enter", 13)' ng-mouseup='release("Enter", 13)'>Start</button>
</div>
</section>
<section class="action-pane">
<div class="logo">
Nintendo
</div>
<div class="buttons">
<label class="label">B
<button class="button" id="b" ng-mousedown='press("f", 70)' ng-mouseup='release("f", 70)'></button>
</label>
<label class="label">A
<button class="button" id="a" ng-mousedown='press("g", 71)' ng-mouseup='release("g", 71)'></button>
</label>
</div>
</section>
</figure>
<!-- <script src="assets/util.js"></script> -->
<!-- <script src="assets/complementary-filter.js"></script> -->
<!-- <script src="assets/plot-sensors.js"></script> -->
<!--
<div class='container'>
<div class='row main-row'></div>
<div class='row main-row'> </div>
<div class='row main-row'>
<div class='controls left-controls text-center'>
<div class='row'>
@ -41,6 +78,7 @@
<button class='gamepad-button' ng-mousedown='press("ArrowRight", 39)' ng-mouseup='release("ArrowRight", 39)'>Right</button>
</div>
<div class='controls mid-controls text-center'>
{{ counter }}
<button class='gamepad-button' ng-mousedown='press("Enter", 13)' ng-mouseup='release("Enter", 13)'>Start</button>
<button class='gamepad-button' ng-mousedown='press("z", 90)' ng-mouseup='release("z", 90)'>Z</button>
</div>
@ -49,7 +87,8 @@
<button class='gamepad-button' ng-mousedown='press("f", 70)' ng-mouseup='release("f", 70)'>B</button>
</div>
</div>
<div class='row main-row'></div>
<div class='row main-row'></div> -->
<script type='text/javascript' src='assets/nes.js'></script>
</body>

View file

@ -4,7 +4,7 @@
<head>
<meta charset='utf-8' />
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<link rel="stylesheet" type="text/css" media="screen" href="assets/stylesheet.css">
<link rel="stylesheet" type="text/css" media="screen" href="assets/display.css">
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
@ -12,6 +12,7 @@
</head>
<body>
<div id="main_content_wrap" class="outer">
<section id="main_content" class="inner">
<p>
@ -33,6 +34,72 @@
</section>
</div>
<div class="viewport" id='n64-logo'>
<div class="n64">
<div class="bottom side">
<div class="part yellow"></div>
<div class="part vert-top red" style="transform-origin: left;"></div>
<div class="part yellow"></div>
<div class="part hoz-left red"></div>
<div class="part hoz-right red"></div>
<div class="part yellow"></div>
<div class="part vert-bottom red"></div>
<div class="part yellow"></div>
</div>
<div class="front side">
<div class="part green"></div>
<div class="part middle green"></div>
<div class="part green"></div>
</div>
<div class="back side">
<div class="part green"></div>
<div class="part middle green"></div>
<div class="part green"></div>
</div>
<div class="left side">
<div class="part blue"></div>
<div class="part middle blue"></div>
<div class="part blue"></div>
</div>
<div class="right side">
<div class="part blue"></div>
<div class="part middle blue"></div>
<div class="part blue"></div>
</div>
<div class="front inside side">
<div class="part green"></div>
<div class="part middle green"></div>
<div class="part green"></div>
</div>
<div class="back inside side">
<div class="part green"></div>
<div class="part middle green"></div>
<div class="part green"></div>
</div>
<div class="left inside side">
<div class="part blue"></div>
<div class="part middle blue"></div>
<div class="part blue"></div>
</div>
<div class="right inside side">
<div class="part blue"></div>
<div class="part middle blue"></div>
<div class="part blue"></div>
</div>
<div class="top side">
<div class="part yellow"></div>
<div class="part vert-top red"></div>
<div class="part yellow"></div>
<div class="part hoz-left red"></div>
<div class="part hoz-right red"></div>
<div class="part yellow"></div>
<div class="part vert-bottom red"></div>
<div class="part yellow"></div>
</div>
</div>
</div>
</body>
</html>