Initial setup for multiple decks
This commit is contained in:
parent
d32d50226b
commit
26849affc9
@ -2,7 +2,6 @@ let deckName, deckJSON, cardCount, deckWidth, deckHeight,
|
|||||||
piles = {'deck': [], discard: []};
|
piles = {'deck': [], discard: []};
|
||||||
|
|
||||||
window.addEventListener('load', () => {
|
window.addEventListener('load', () => {
|
||||||
deckName = document.querySelector('#card-container').getAttribute("data-deckName");
|
|
||||||
let xhr = new XMLHttpRequest();
|
let xhr = new XMLHttpRequest();
|
||||||
xhr.addEventListener("load", () => {
|
xhr.addEventListener("load", () => {
|
||||||
deckJSON = JSON.parse(xhr.responseText);
|
deckJSON = JSON.parse(xhr.responseText);
|
||||||
@ -13,7 +12,8 @@ window.addEventListener('load', () => {
|
|||||||
deckHeight = deckJSON.ObjectStates[0].CustomDeck["1"].NumHeight;
|
deckHeight = deckJSON.ObjectStates[0].CustomDeck["1"].NumHeight;
|
||||||
console.log(deckName);
|
console.log(deckName);
|
||||||
});
|
});
|
||||||
xhr.open("GET", "/" + deckName + ".json");
|
deckName = document.querySelector('#card-container').getAttribute("data-deckName");
|
||||||
|
xhr.open("GET", "/deck/" + deckName + "/deck.json");
|
||||||
xhr.send();
|
xhr.send();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ interact('.card-pile')
|
|||||||
newCard.style.backgroundPosition = `
|
newCard.style.backgroundPosition = `
|
||||||
${(cardNum % deckWidth) * parseInt(style.getPropertyValue("width"))}px
|
${(cardNum % deckWidth) * parseInt(style.getPropertyValue("width"))}px
|
||||||
${Math.floor(cardNum/deckHeight) * parseInt(style.getPropertyValue("height"))}px`;
|
${Math.floor(cardNum/deckHeight) * parseInt(style.getPropertyValue("height"))}px`;
|
||||||
newCard.style.backgroundImage = `url('${deckName}.png')`;
|
newCard.style.backgroundImage = "url('deck.png')";
|
||||||
newCard.style.backgroundSize = `${deckWidth * 100}% ${deckHeight * 100}%`;
|
newCard.style.backgroundSize = `${deckWidth * 100}% ${deckHeight * 100}%`;
|
||||||
|
|
||||||
// insert the card to the page
|
// insert the card to the page
|
||||||
|
109
server.js
109
server.js
@ -3,70 +3,95 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const http = require('http'),
|
const http = require('http'),
|
||||||
qs = require('querystring'),
|
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
url = require('url'),
|
url = require('url'),
|
||||||
https = require('https'),
|
|
||||||
port = 8080;
|
port = 8080;
|
||||||
|
|
||||||
const deckName = "the_Unholy_Priest_update_2";
|
|
||||||
|
|
||||||
const server = http.createServer((req, res) => {
|
const server = http.createServer((req, res) => {
|
||||||
const uri = url.parse(req.url);
|
const uri = url.parse(req.url);
|
||||||
|
|
||||||
if (req.method === 'POST') {
|
let pathParts = uri.pathname.split("/");
|
||||||
handlePost(res, req, uri);
|
switch (pathParts[1]) {
|
||||||
}
|
case '':
|
||||||
else {
|
case 'index.html':
|
||||||
switch( uri.pathname ) {
|
sendIndex(res);
|
||||||
case '/':
|
|
||||||
case '/index.html':
|
|
||||||
sendIndex(res, "");
|
|
||||||
break;
|
break;
|
||||||
case '/style.css':
|
case 'style.css':
|
||||||
sendFile(res, 'style.css', 'text/css');
|
sendFile(res, 'style.css', 'text/css');
|
||||||
break;
|
break;
|
||||||
case '/script.js':
|
case 'script.js':
|
||||||
sendFile(res, 'script.js', 'application/javascript');
|
sendFile(res, 'script.js', 'application/javascript');
|
||||||
break;
|
break;
|
||||||
case '/interact.js':
|
case 'interact.js':
|
||||||
sendFile(res, 'interact.js', 'application/javascript');
|
sendFile(res, 'interact.js', 'application/javascript');
|
||||||
break;
|
break;
|
||||||
case '/' + deckName + '.png':
|
case 'deck':
|
||||||
|
if (pathParts.length === 3) {
|
||||||
|
let deckName = pathParts[2];
|
||||||
|
sendDeckIndex(res, deckName);
|
||||||
|
}
|
||||||
|
else if (pathParts.length === 4) {
|
||||||
|
let deckName = pathParts[2];
|
||||||
|
switch (pathParts[3]) {
|
||||||
|
case 'play':
|
||||||
|
sendPlayfield(res, deckName);
|
||||||
|
break;
|
||||||
|
case 'deck.png':
|
||||||
sendFile(res, deckName + '.png', 'image/png');
|
sendFile(res, deckName + '.png', 'image/png');
|
||||||
break;
|
break;
|
||||||
case '/' + deckName + '.json':
|
case 'deck.json':
|
||||||
sendFile(res, deckName + '.json', 'application/json');
|
sendFile(res, deckName + '.json', 'application/json');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
res.writeHead(404, {'Content-type': "text/html; charset=utf-8"});
|
send404(res, uri);
|
||||||
const html = `
|
|
||||||
<head>
|
|
||||||
<title>404 Not Found</title>
|
|
||||||
<link rel="stylesheet" href="style.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Error 404: Path ${uri.pathname} not found</h1>
|
|
||||||
You seem to have gone to the wrong place, would you like to go
|
|
||||||
back to the <a href="/">main page</a>?
|
|
||||||
</body>`;
|
|
||||||
res.end(html, 'utf-8');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
send404(res, uri);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
server.listen(process.env.PORT || port);
|
server.listen(process.env.PORT || port);
|
||||||
console.log('listening on 8080');
|
console.log('listening on 8080');
|
||||||
|
|
||||||
function sendIndex(res) {
|
function sendIndex(res) {
|
||||||
let cards = [];
|
|
||||||
const html = `
|
const html = `
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<script src="interact.js"></script>
|
<link rel="stylesheet" type="text/css" href="/style.css">
|
||||||
<script src="script.js"></script>
|
</head>
|
||||||
<link rel="stylesheet" type="text/css" href="style.css">
|
<body>
|
||||||
|
<ul>
|
||||||
|
<li><a href="deck/the_Unholy_Priest_update_2">the_Unholy_Priest_update_2</a></li>
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>`;
|
||||||
|
res.writeHead(200, {'contentType': 'text/html; charset=utf-8'});
|
||||||
|
res.end(html, 'utf-8');
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendDeckIndex(res, deckName) {
|
||||||
|
const html = `
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="${deckName}/play">Play!</a>
|
||||||
|
</body>
|
||||||
|
</html>`;
|
||||||
|
res.writeHead(200, {'contentType': 'text/html; charset=utf-8'});
|
||||||
|
res.end(html, 'utf-8');
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendPlayfield(res, deckName) {
|
||||||
|
const html = `
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="/interact.js"></script>
|
||||||
|
<script src="/script.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="card-container" data-deckName="${deckName}">
|
<div id="card-container" data-deckName="${deckName}">
|
||||||
@ -80,6 +105,22 @@ function sendIndex(res) {
|
|||||||
res.end(html, 'utf-8');
|
res.end(html, 'utf-8');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function send404(res, uri) {
|
||||||
|
res.writeHead(404, {'Content-type': "text/html; charset=utf-8"});
|
||||||
|
const html = `
|
||||||
|
<head>
|
||||||
|
<title>404 Not Found</title>
|
||||||
|
<link rel="stylesheet" href="/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Error 404: Path ${uri.pathname} not found</h1>
|
||||||
|
You seem to have gone to the wrong place, would you like to go
|
||||||
|
back to the <a href="/">main page</a>?
|
||||||
|
</body>`;
|
||||||
|
res.end(html, 'utf-8');
|
||||||
|
}
|
||||||
|
|
||||||
function sendFile(res, filename, contentType='text/html; charset=utf-8') {
|
function sendFile(res, filename, contentType='text/html; charset=utf-8') {
|
||||||
fs.readFile(filename, (error, content) => {
|
fs.readFile(filename, (error, content) => {
|
||||||
res.writeHead(200, {'Content-type': contentType});
|
res.writeHead(200, {'Content-type': contentType});
|
||||||
|
Loading…
Reference in New Issue
Block a user