159 lines
6.0 KiB
HTML
159 lines
6.0 KiB
HTML
<html>
|
|
<head>
|
|
<title>Deckard + Company</title>
|
|
<link href="css.css" rel="stylesheet">
|
|
<script src="https://labs.murkfall.net/bluesaxman/blue.js/raw/master/libs/bluecore.js"></script>
|
|
</head>
|
|
<body>
|
|
<h1>Welcome to Deckard + Company<h1>
|
|
</body>
|
|
<script>
|
|
|
|
window.server = "ws://localhost:8080/";
|
|
window.gameState = {};
|
|
window.gameState.users = [];
|
|
window.gameState.decks = [];
|
|
window.gameState.pools = [];
|
|
window.gameState.hands = [];
|
|
|
|
function updateEvent() {
|
|
window.UI.users.innerHTML = "<span>Users:</span>";
|
|
window.UI.decks.innerHTML = "<span>Decks:</span>";
|
|
window.UI.hands.innerHTML = "<span>Hands:</span>";
|
|
window.UI.pools.innerHTML = "<span>Pools:</span>";
|
|
window.gameState.users.forEach(function (user) {
|
|
window.UI.users[user] = elementPlace("#users","User_"+user,"username","li");
|
|
window.UI.users[user].innerText = user;
|
|
});
|
|
Object.keys(window.gameState.decks).forEach(function (deckID) {
|
|
var deck = window.gameState.decks[deckID];
|
|
window.UI.decks[deckID] = elementPlace("#decks","Deck_"+deck.name,"deck","li");
|
|
window.UI.decks[deckID].innerText = deck.name+":"+deck.size;
|
|
});
|
|
Object.keys(window.gameState.hands).forEach(function (handID) {
|
|
var hand = window.gameState.hands[handID];
|
|
window.UI.hands[handID] = elementPlace("#hands","Hand_"+hand.name,"hand","li");
|
|
window.UI.hands[handID].innerText = hand.name;
|
|
window.UI.hands[handID].cards = elementPlace("#Hand_"+hand.name,hand.name+"_cards",null,"ol");
|
|
hand.cards.forEach(function (card,index) {
|
|
window.UI.hands[handID].cards[index] = elementPlace("#"+hand.name+"_cards",null,"card","li");
|
|
window.UI.hands[handID].cards[index].innerHTML = card;
|
|
});
|
|
});
|
|
Object.keys(window.gameState.pools).forEach(function (poolID) {
|
|
var pool = window.gameState.pools[poolID];
|
|
window.UI.pools[poolID] = elementPlace("#pools","Pool_"+pool.name,"pool","li");
|
|
window.UI.pools[poolID].innerText = pool.name+":"+pool.top;
|
|
});
|
|
|
|
}
|
|
|
|
function startGameSession() {
|
|
window.gameSession = new WebSocket(server);
|
|
gameSession.onmessage = function (event) {
|
|
var message = JSON.parse(event.data);
|
|
if (message.userID) { window.userID = message.userID; }
|
|
if (message.message) { console.log(message.message); }
|
|
if (message.request) {
|
|
if ("session" == message.request) { window.gameSession.send('{"session":'+window.gameState.session+'}'); }
|
|
if ("user" == message.request) { window.gameSession.send('{"user":"'+window.gameState.user+'"}'); }
|
|
if ("join" == message.request) { window.gameSession.send('{"action":"join"}'); }
|
|
if ("update" == message.request) { window.gameSession.send('{"action":"update"}'); }
|
|
}
|
|
if (message.users) { window.gameState.users = message.users; updateEvent(); }
|
|
if (message.decks) { window.gameState.decks = message.decks; updateEvent(); }
|
|
if (message.pools) { window.gameState.pools = message.pools; updateEvent(); }
|
|
if (message.hands) { window.gameState.hands = message.hands; updateEvent(); }
|
|
if (message.action) {
|
|
if ("addCard" == message.action) {
|
|
window.gameState.hands[message.hand].cards.push(message.card);
|
|
updateEvent();
|
|
}
|
|
}
|
|
console.log(message);
|
|
|
|
};
|
|
gameSession.onconnect = function () {};
|
|
gameSession.onclose = function (event) {
|
|
console.log(event);
|
|
};
|
|
}
|
|
|
|
//elementPlace("body","menu",null,"div");
|
|
//buttonAdd("#menu","upload","Upload Deck", function () {
|
|
// popupDialog("deckLoader","Select Deck definition File",true,inputDialog,{"inputType":"file"},function (f) {
|
|
// var myFile = new FileReader();
|
|
// myFile.onload = function (file) {
|
|
// // Probably validate the file somehow befor eating it
|
|
// var ourFile = JSON.parse(file.target.result);
|
|
// window.gameState.deck = [];
|
|
// deckFromJSON(ourFile);
|
|
// window.hand = [];
|
|
// sendGameState();
|
|
// }
|
|
// myFile.readAsText(f[0]);
|
|
// });
|
|
//},null,"div");
|
|
//buttonAdd("#menu","add","Add Deck", function () {
|
|
// popupDialog("deckLoader","Select Deck definition to add",true,inputDialog,{"inputType":"file"},function (f) {
|
|
// var myFile = new FileReader();
|
|
// myFile.onload = function (file) {
|
|
// var ourFile = JSON.parse(file.target.result);
|
|
// deckFromJSON(ourFile);
|
|
// sendGameState();
|
|
// }
|
|
// myFile.readAsText(f[0]);
|
|
//});
|
|
//}, null, "div");
|
|
//buttonAdd("#menu","shuffle", "Shuffle Deck", function () {
|
|
// shuffleDeck(window.gameState.deck);
|
|
// sendGameState();
|
|
//}, null, "div");
|
|
//buttonAdd("#menu","shuffleAll", "Shuffle Hand to Deck", function () {
|
|
// window.gameState.deck = window.gameState.deck.concat(window.hand);
|
|
// window.hand = [];
|
|
// shuffleDeck(window.gameState.deck);
|
|
// sendGameState();
|
|
//}, null, "div");
|
|
//buttonAdd("#menu","draw", "Draw Card", function () {
|
|
// if (window.gameState.deck.length > 0) {
|
|
// window.hand.unshift(window.gameState.deck.shift());
|
|
// sendGameState();
|
|
// }
|
|
//}, null, "div");
|
|
elementPlace("body","display",null,"div");
|
|
window.UI = {};
|
|
window.UI.users = elementPlace("#display","users",null,"ol");
|
|
window.UI.decks = elementPlace("#display","decks",null,"ol");
|
|
window.UI.hands = elementPlace("#display","hands",null,"ol");
|
|
window.UI.pools = elementPlace("#display","pools",null,"ol");
|
|
|
|
var parms = new URLSearchParams(window.location.search);
|
|
if (!parms.get("s")) {
|
|
popupDialog("gettingStarted","Welcome to Deckard and company", false, inputDialog,{"content":"Please enter a game ID or leave blank to start a new game","inputType":"number"},
|
|
function (value) {
|
|
if (Number.isInteger(Number.parseInt(value))) {
|
|
window.gameState.session = Number.parseInt(value);
|
|
} else {
|
|
window.gameState.session = null;
|
|
}
|
|
window.location.search = '?s='+window.gameState.session;
|
|
// window.location.reload();
|
|
});
|
|
} else {
|
|
window.gameState.session = parms.get("s");
|
|
if (!window.gameState.user) {
|
|
popupDialog("gettingStarted","Welcome to Deckard and company", false, inputDialog, {"content":"Please enter a username","inputType":"text"},
|
|
function (value) {
|
|
if ((null != value) && ("" != value)) {
|
|
window.gameState.user = value;
|
|
} else {
|
|
window.gameState.user = "Unknown"+(new Date()).getTime();
|
|
}
|
|
startGameSession();
|
|
});
|
|
} else { startGameSession(); }
|
|
}
|
|
</script>
|
|
</html>
|