Compare commits
No commits in common. "main" and "eadf325" have entirely different histories.
@ -1,40 +0,0 @@
|
|||||||
name: Build & Publish
|
|
||||||
on: [push]
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out the repo
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Docker meta
|
|
||||||
id: meta
|
|
||||||
uses: https://github.com/docker/metadata-action@v4
|
|
||||||
with:
|
|
||||||
images: git.flokaiser.com/dhbw/pmgame
|
|
||||||
tags: |
|
|
||||||
type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short
|
|
||||||
type=raw,value=latest,enable={{is_default_branch}}
|
|
||||||
|
|
||||||
- name: Get get-docker.sh
|
|
||||||
run: curl -fsSL https://get.docker.com -o get-docker.sh
|
|
||||||
|
|
||||||
- name: Install docker
|
|
||||||
run: sh get-docker.sh
|
|
||||||
|
|
||||||
- name: Login to Registry
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
registry: git.flokaiser.com
|
|
||||||
username: ${{ secrets.REGISTRY_USERNAME }}
|
|
||||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
|
|
||||||
- name: Build and push
|
|
||||||
uses: docker/build-push-action@v4
|
|
||||||
with:
|
|
||||||
platforms: linux/amd64
|
|
||||||
push: true
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
|
||||||
"schedule": ["* 5 * * *"],
|
|
||||||
"packageRules": [
|
|
||||||
{
|
|
||||||
"matchUpdateTypes": ["minor", "patch", "pin", "digest"],
|
|
||||||
"automerge": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -16,8 +16,8 @@ COPY minimize.sh minimize.sh
|
|||||||
RUN chmod +x minimize.sh
|
RUN chmod +x minimize.sh
|
||||||
RUN ./minimize.sh
|
RUN ./minimize.sh
|
||||||
RUN sed -i "s/DATE_TO_BE_REPLACED/$(date +%s)/" public/index.html
|
RUN sed -i "s/DATE_TO_BE_REPLACED/$(date +%s)/" public/index.html
|
||||||
RUN sed -i "s/COMMIT_TO_BE_REPLACED/GitHub: $(git ls-remote https://git.flokaiser.com/DHBW/Projektmanagement-Game refs/heads/main | awk '{print $1;}' | cut -c1-7)/" public/index.html
|
RUN sed -i "s/COMMIT_TO_BE_REPLACED/GitHub: $(git ls-remote https://github.com/H4CK3R-01/Projektmanagement-Game refs/heads/main | awk '{print $1;}' | cut -c1-7)/" public/index.html
|
||||||
RUN sed -i "s/COMMIT_LINK_TO_BE_REPLACED/https\:\/\/git.flokaiser.com\/DHBW\/Projektmanagement-Game\/commit\/$(git ls-remote https://git.flokaiser.com/DHBW/Projektmanagement-Game refs/heads/main | awk '{print $1;}')/" public/index.html
|
RUN sed -i "s/COMMIT_LINK_TO_BE_REPLACED/https\:\/\/github.com\/H4CK3R-01\/Projektmanagement-Game\/commit\/$(git ls-remote https://github.com/H4CK3R-01/Projektmanagement-Game refs/heads/main | awk '{print $1;}')/" public/index.html
|
||||||
|
|
||||||
EXPOSE 5000
|
EXPOSE 5000
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Wer wird Projektmanager 2021?
|
# Projektmanagement Game
|
||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
### Build
|
### Build
|
||||||
|
@ -16,6 +16,7 @@ class Game {
|
|||||||
this.currentStatus = Game.STATUS.SETTING_UP;
|
this.currentStatus = Game.STATUS.SETTING_UP;
|
||||||
this.players = [];
|
this.players = [];
|
||||||
this.currentPlayerIndex = 0;
|
this.currentPlayerIndex = 0;
|
||||||
|
this.winnerIndex = 0;
|
||||||
this.round = 0;
|
this.round = 0;
|
||||||
this.hunter = new Hunter();
|
this.hunter = new Hunter();
|
||||||
this.playerNames = [];
|
this.playerNames = [];
|
||||||
@ -89,6 +90,7 @@ class Game {
|
|||||||
let index = this.players.findIndex(player => player.position >= Game.MAX_POSITION);
|
let index = this.players.findIndex(player => player.position >= Game.MAX_POSITION);
|
||||||
if (index !== -1) {
|
if (index !== -1) {
|
||||||
this.currentStatus = Game.STATUS.IS_WON;
|
this.currentStatus = Game.STATUS.IS_WON;
|
||||||
|
this.winnerIndex = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ io.on('connection', socket => {
|
|||||||
|
|
||||||
socket.emit('login', game[socket.room].get_player_index(socket.username));
|
socket.emit('login', game[socket.room].get_player_index(socket.username));
|
||||||
socket.join(socket.room);
|
socket.join(socket.room);
|
||||||
io.in(socket.room).emit('update player names', game[socket.room].getPlayerNames());
|
io.in(socket.room).emit('updatePlayerNames', game[socket.room].getPlayerNames());
|
||||||
|
|
||||||
if (game[socket.room].players.length === 1) io.to(socket.id).emit('first player');
|
if (game[socket.room].players.length === 1) io.to(socket.id).emit('first player');
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ io.on('connection', socket => {
|
|||||||
if (game[socket.room].current_player_is(socket.username)) socket.broadcast.to(socket.room).emit('card destroyed');
|
if (game[socket.room].current_player_is(socket.username)) socket.broadcast.to(socket.room).emit('card destroyed');
|
||||||
|
|
||||||
game[socket.room].removePlayerName(socket.username);
|
game[socket.room].removePlayerName(socket.username);
|
||||||
io.in(socket.room).emit('update player names', game[socket.room].getPlayerNames());
|
io.in(socket.room).emit('updatePlayerNames', game[socket.room].getPlayerNames());
|
||||||
|
|
||||||
socket.broadcast.to(socket.room).emit('user left', socket.username);
|
socket.broadcast.to(socket.room).emit('user left', socket.username);
|
||||||
game[socket.room].remove_player(socket.username);
|
game[socket.room].remove_player(socket.username);
|
||||||
@ -150,20 +150,19 @@ io.on('connection', socket => {
|
|||||||
|
|
||||||
game[socket.room].finish_turn();
|
game[socket.room].finish_turn();
|
||||||
|
|
||||||
io.in(socket.room).emit('update hunter', game[socket.room].hunter.getPosition());
|
|
||||||
|
|
||||||
io.in(socket.room).emit('player moved', {
|
io.in(socket.room).emit('player moved', {
|
||||||
"next_player": game[socket.room].players[game[socket.room].currentPlayerIndex].name,
|
"next_player": game[socket.room].players[game[socket.room].currentPlayerIndex].name,
|
||||||
"player": index,
|
"player": index,
|
||||||
"position": position,
|
"position": position,
|
||||||
"state": game[socket.room].currentStatus,
|
"state": game[socket.room].currentStatus,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
io.in(socket.room).emit('update Hunter', game[socket.room].hunter.getPosition());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function generate_log_message(room, user, type, message) {
|
function generate_log_message(room, user, type, message) {
|
||||||
let color;
|
let color;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'LEFT':
|
case 'LEFT':
|
||||||
color = '\x1b[31m';
|
color = '\x1b[31m';
|
||||||
@ -186,12 +185,12 @@ function generate_log_message(room, user, type, message) {
|
|||||||
default:
|
default:
|
||||||
color = '\x1b[0m';
|
color = '\x1b[0m';
|
||||||
}
|
}
|
||||||
|
|
||||||
room = pad(10, room, ' ').substr(0, 10);
|
room = pad(10, room, ' ').substr(0, 10);
|
||||||
user = pad(10, user, ' ').substr(0, 10);
|
user = pad(10, user, ' ').substr(0, 10);
|
||||||
type = pad(10, type, ' ').substr(0, 10);
|
type = pad(10, type, ' ').substr(0, 10);
|
||||||
|
|
||||||
console.info("%s[%s] [%s] [%s] \x1b[36m%s\x1b[0m", color, room, user, type, message);
|
let reset_color = '\x1b[0m';
|
||||||
|
console.info("%s[%s] [%s] [%s]\x1b[0m %s", color, room, user, type, reset_color, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRandomCard(difficulty, room) {
|
function getRandomCard(difficulty, room) {
|
||||||
|
@ -807,7 +807,7 @@
|
|||||||
{
|
{
|
||||||
"id": 36,
|
"id": 36,
|
||||||
"difficulty": 3,
|
"difficulty": 3,
|
||||||
"question": "Ein wütender Besucher des Events, dessen Ressourcen du gemanagt hast, kommt zu dir und beschwert sich darüber, dass sein Fleisch nicht ganz so war, wie er es wollte.\nWar es dein Fehler?",
|
"question": "Ein wütender Besucher des Events, dessen Ressourcen du gemanagt hast, kommt zu dir und beschwert sich darüber, dass sein Fleisch nicht ganz so war, wie er es wollte.\r\nWar es dein Fehler?",
|
||||||
"answers": [
|
"answers": [
|
||||||
{
|
{
|
||||||
"text": "Ja, da die Zubereitung des Essens in deinen Zuständigkeitsbereich fällt",
|
"text": "Ja, da die Zubereitung des Essens in deinen Zuständigkeitsbereich fällt",
|
||||||
@ -2248,7 +2248,7 @@
|
|||||||
"status": false
|
"status": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Vorbereiten, Initiieren, Planen, Steuern, Abschließen",
|
"text": "Vorbereiten, Initiieren, Planen, Steuern, Abschließen\r\n",
|
||||||
"status": true
|
"status": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
6061
package-lock.json
generated
@ -2,8 +2,8 @@
|
|||||||
"name": "projektmanagement-game",
|
"name": "projektmanagement-game",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@socket.io/admin-ui": "^0.5.0",
|
"@socket.io/admin-ui": "^0.2.0",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"socket.io": "^4.1.3"
|
"socket.io": "^4.1.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background: url(../img/background.jpg) no-repeat center center fixed;
|
background: url(/img/background.jpg) no-repeat center center fixed;
|
||||||
-webkit-background-size: cover; /* For WebKit*/
|
-webkit-background-size: cover; /* For WebKit*/
|
||||||
-moz-background-size: cover; /* Mozilla*/
|
-moz-background-size: cover; /* Mozilla*/
|
||||||
-o-background-size: cover; /* Opera*/
|
-o-background-size: cover; /* Opera*/
|
||||||
|
@ -55,20 +55,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 980px) {
|
@media only screen and (max-width: 980px) {
|
||||||
|
|
||||||
#login {
|
#login {
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
#login form {
|
|
||||||
padding-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#login label {
|
#login label {
|
||||||
font-size: 2.5em;
|
font-size: 2.5em;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#login input, #login button {
|
#login input, #login button {
|
||||||
height: 2.0em;
|
height: 4.0em;
|
||||||
font-size: 2.5em;
|
font-size: 2.5em;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 859 KiB After Width: | Height: | Size: 866 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 161 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 411 KiB |
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 443 KiB |
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 435 KiB |
@ -4,19 +4,22 @@
|
|||||||
<meta charset="UTF-8" content="user-scalable=no, autoRotate:disabled" name="viewport"/>
|
<meta charset="UTF-8" content="user-scalable=no, autoRotate:disabled" name="viewport"/>
|
||||||
<title>Wer wird Projektmanager?</title>
|
<title>Wer wird Projektmanager?</title>
|
||||||
|
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Material+Icons" rel="stylesheet">
|
||||||
|
|
||||||
<link href="css/components.css" rel="stylesheet">
|
<link href="css/components.css" rel="stylesheet">
|
||||||
<link href="css/header.css" rel="stylesheet">
|
<link href="css/header.css" rel="stylesheet">
|
||||||
|
|
||||||
<link href="css/chat.css" rel="stylesheet">
|
<link href="css/chat.css" rel="stylesheet">
|
||||||
<link href="css/game.css" rel="stylesheet">
|
<link href="css/game.css" rel="stylesheet">
|
||||||
|
|
||||||
<link href="css/index.css" rel="stylesheet">
|
<link href="css/index.css" rel="stylesheet">
|
||||||
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Material+Icons" rel="stylesheet">
|
|
||||||
<link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
|
<link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<div class="spielanleitung"><span
|
<div class="spielanleitung"><span
|
||||||
onclick="open_manual();">Instructions</span></div>
|
onclick="open_manual();">Spielanleitung</span></div>
|
||||||
<div class="title">WWPM</div>
|
<div class="title">WWPM</div>
|
||||||
<div class="build"><span>DATE_TO_BE_REPLACED</span><span><a href="COMMIT_LINK_TO_BE_REPLACED" target="_blank">COMMIT_TO_BE_REPLACED</a></span>
|
<div class="build"><span>DATE_TO_BE_REPLACED</span><span><a href="COMMIT_LINK_TO_BE_REPLACED" target="_blank">COMMIT_TO_BE_REPLACED</a></span>
|
||||||
</div>
|
</div>
|
||||||
@ -26,13 +29,13 @@
|
|||||||
<div id="login">
|
<div id="login">
|
||||||
<form>
|
<form>
|
||||||
<h2 id="error"></h2>
|
<h2 id="error"></h2>
|
||||||
<label for="username">Username: </label>
|
<label for="username">Benutzername: </label>
|
||||||
<input id="username" name="username" placeholder="Username" type="text">
|
<input id="username" name="username" placeholder="Benutzername" type="text">
|
||||||
|
|
||||||
<label for="room">Room name: </label>
|
<label for="room">Raumnummer: </label>
|
||||||
<input id="room" name="room" placeholder="Room name" type="text">
|
<input id="room" name="room" placeholder="Raumnummer" type="text">
|
||||||
|
|
||||||
<button id="ok" type="button">Submit</button>
|
<button id="ok" type="button">Bestätigen</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="game">
|
<div id="game">
|
||||||
@ -53,11 +56,9 @@
|
|||||||
<div id="modal">
|
<div id="modal">
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<div id="modal_header">
|
<div id="modal_header">
|
||||||
<h3 id="modal_title">Instructions</h3>
|
<h3 id="modal_title">Spielanleitung</h3>
|
||||||
<span>
|
<span><i class="material-icon"
|
||||||
<i class="material-icon"
|
onclick="document.getElementById('modal').style.display = 'none';">close</i></span>
|
||||||
onclick="document.getElementById('modal').style.display = 'none';">close</i>
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="divider"></div>
|
<div class="divider"></div>
|
||||||
<div id="manual"></div>
|
<div id="manual"></div>
|
||||||
@ -68,8 +69,9 @@
|
|||||||
|
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.6.1/socket.io.min.js"></script>
|
<script crossorigin="anonymous" referrerpolicy="no-referrer"
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/6.5.8/browser/pixi.min.js"></script>
|
src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.1.2/socket.io.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/6.0.4/browser/pixi.js"></script>
|
||||||
<script src="js/Card.js"></script>
|
<script src="js/Card.js"></script>
|
||||||
<script src="js/Button.js"></script>
|
<script src="js/Button.js"></script>
|
||||||
<script src="js/Sprite.js"></script>
|
<script src="js/Sprite.js"></script>
|
||||||
|
@ -117,7 +117,7 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
|
|||||||
if (this.difficulty === 0) {
|
if (this.difficulty === 0) {
|
||||||
color = 0xF47A93;
|
color = 0xF47A93;
|
||||||
}
|
}
|
||||||
this.buttons.push(new Button(color, 0xcccccc, 0x4169E1, this.card_width - 40, 200, this.card_x + 20, this.card_y + this.card_height - 120 - 220, this.answer_4.text, this.answer_4.status, function () {
|
this.buttons.push(new Button(color, 0xcccccc, 0x4169E1, this.card_width - 40, 200, this.card_x + 20, this.card_y + this.card_height - 120 - 220 * 1, this.answer_4.text, this.answer_4.status, function () {
|
||||||
if (_this.your_turn) {
|
if (_this.your_turn) {
|
||||||
select_answer(3, _this.answer_4.text);
|
select_answer(3, _this.answer_4.text);
|
||||||
}
|
}
|
||||||
@ -135,8 +135,10 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
|
|||||||
this.card.addChild(new Button(0xffffff, 0xcccccc, 0xffffff, this.card_width - 40, 100, this.card_x + 20, this.card_y + this.card_height - 120, "OK", null, function () {
|
this.card.addChild(new Button(0xffffff, 0xcccccc, 0xffffff, this.card_width - 40, 100, this.card_x + 20, this.card_y + this.card_height - 120, "OK", null, function () {
|
||||||
if (answer !== null) {
|
if (answer !== null) {
|
||||||
if (_this.right_answer === answer) { //TODO: do this in backend instead to prevent cheating
|
if (_this.right_answer === answer) { //TODO: do this in backend instead to prevent cheating
|
||||||
|
console.log("Richtig");
|
||||||
socket.emit('card finished', difficulty, true);
|
socket.emit('card finished', difficulty, true);
|
||||||
} else {
|
} else {
|
||||||
|
console.log("Falsch");
|
||||||
socket.emit('card finished', difficulty, false);
|
socket.emit('card finished', difficulty, false);
|
||||||
}
|
}
|
||||||
show_card = false;
|
show_card = false;
|
||||||
@ -145,7 +147,7 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
|
|||||||
rolled_number = null;
|
rolled_number = null;
|
||||||
} else {
|
} else {
|
||||||
if (your_turn === true) {
|
if (your_turn === true) {
|
||||||
alert("Please choose your answer!");
|
alert("Bitte wähle eine Antwortmöglichkeit aus");
|
||||||
} else {
|
} else {
|
||||||
show_card = false;
|
show_card = false;
|
||||||
answer = null;
|
answer = null;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
Images
|
Images
|
||||||
|
background.jpg: https://pixabay.com/get/ge3fe775ba1a5bfd2cc937b0687982214d547e5cf538543560fc25041c070ad5b860d8dd24df751dbc5c7d5ede3f672e7_1920.jpg?attachment=
|
||||||
|
card_stack.png: https://www.google.de/url?sa=i&url=https%3A%2F%2Fwww.pngegg.com%2Fpt%2Fsearch%3Fq%3Drainha%2Bde%2Bcopas&psig=AOvVaw3wwfk87wAXBxqmdXnoGSfe&ust=1623254731054000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCMjUoaG1iPECFQAAAAAdAAAAABA5
|
||||||
dice.svg: https://www.svgrepo.com/download/198836/gambler-casino.svg
|
dice.svg: https://www.svgrepo.com/download/198836/gambler-casino.svg
|
||||||
sprite.jpg: https://media.istockphoto.com/photos/gray-granite-stone-texture-seamless-square-background-tile-ready-picture-id1096464726
|
sprite.jpg: https://media.istockphoto.com/photos/gray-granite-stone-texture-seamless-square-background-tile-ready-picture-id1096464726
|
||||||
*/
|
*/
|
||||||
@ -55,8 +57,8 @@ function start_game() {
|
|||||||
sprites.forEach(sprite => app.stage.addChild(sprite.getSprite()));
|
sprites.forEach(sprite => app.stage.addChild(sprite.getSprite()));
|
||||||
|
|
||||||
// Red border
|
// Red border
|
||||||
let hunter = generate_hunter(new PIXI.Graphics(), 1, 9);
|
let red_border = generate_red_border(new PIXI.Graphics(), 1, 9);
|
||||||
app.stage.addChild(hunter);
|
app.stage.addChild(red_border);
|
||||||
|
|
||||||
|
|
||||||
// Player circles
|
// Player circles
|
||||||
@ -75,17 +77,26 @@ function start_game() {
|
|||||||
|
|
||||||
// Card stacks
|
// Card stacks
|
||||||
let cards_1 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_1.png'), 3, 3, function () {
|
let cards_1 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_1.png'), 3, 3, function () {
|
||||||
if (diced && !show_card && rolled_number === 1) socket.emit('get card', 1);
|
if (diced && !show_card && rolled_number === 1) {
|
||||||
|
console.log("1");
|
||||||
|
socket.emit('get card', 1);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(cards_1);
|
app.stage.addChild(cards_1);
|
||||||
|
|
||||||
let cards_2 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_2.png'), 5, 3, function () {
|
let cards_2 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_2.png'), 5, 3, function () {
|
||||||
if (diced && !show_card && rolled_number === 2) socket.emit('get card', 2);
|
if (diced && !show_card && rolled_number === 2) {
|
||||||
|
console.log("2");
|
||||||
|
socket.emit('get card', 2);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(cards_2);
|
app.stage.addChild(cards_2);
|
||||||
|
|
||||||
let cards_3 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_3.png'), 7, 3, function () {
|
let cards_3 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_3.png'), 7, 3, function () {
|
||||||
if (diced && !show_card && rolled_number === 3) socket.emit('get card', 3);
|
if (diced && !show_card && rolled_number === 3) {
|
||||||
|
console.log("3");
|
||||||
|
socket.emit('get card', 3);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(cards_3);
|
app.stage.addChild(cards_3);
|
||||||
|
|
||||||
@ -101,7 +112,9 @@ function start_game() {
|
|||||||
dice.buttonMode = true;
|
dice.buttonMode = true;
|
||||||
dice.defaultCursor = 'pointer';
|
dice.defaultCursor = 'pointer';
|
||||||
dice.on('pointerdown', function () {
|
dice.on('pointerdown', function () {
|
||||||
if (!diced) socket.emit('roll dice');
|
if (!diced) {
|
||||||
|
socket.emit('roll dice');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(dice);
|
app.stage.addChild(dice);
|
||||||
|
|
||||||
@ -114,6 +127,7 @@ function start_game() {
|
|||||||
logo.y = sprite_size * 5.5 - sprite_size * 0.2;
|
logo.y = sprite_size * 5.5 - sprite_size * 0.2;
|
||||||
logo.width = sprite_size * 3.5;
|
logo.width = sprite_size * 3.5;
|
||||||
logo.height = sprite_size * 1.5;
|
logo.height = sprite_size * 1.5;
|
||||||
|
// logo.rotation -= Math.PI / 8;
|
||||||
app.stage.addChild(logo);
|
app.stage.addChild(logo);
|
||||||
|
|
||||||
|
|
||||||
@ -160,11 +174,13 @@ function start_game() {
|
|||||||
score_button.defaultCursor = 'pointer';
|
score_button.defaultCursor = 'pointer';
|
||||||
score_button.on('pointerdown', function () {
|
score_button.on('pointerdown', function () {
|
||||||
card = new Card(game_board_size, "",
|
card = new Card(game_board_size, "",
|
||||||
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("N/A"), "status": false},
|
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("N/A"), "status": false},
|
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("N/A"), "status": false},
|
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("N/A"), "status": false},
|
{
|
||||||
0, false);
|
"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("Kein Spieler"),
|
||||||
|
"status": false
|
||||||
|
}, 0, false);
|
||||||
card.showCard();
|
card.showCard();
|
||||||
show_card = true;
|
show_card = true;
|
||||||
});
|
});
|
||||||
@ -172,11 +188,11 @@ function start_game() {
|
|||||||
app.stage.addChild(score_button);
|
app.stage.addChild(score_button);
|
||||||
score_button.addChild(score_button_text);
|
score_button.addChild(score_button_text);
|
||||||
|
|
||||||
|
socket.on('updatePlayerNames', function (p) {
|
||||||
socket.on('update player names', function (p) {
|
|
||||||
playerNames = p;
|
playerNames = p;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
socket.on('first player', function () {
|
socket.on('first player', function () {
|
||||||
my_turn.text = "Your Turn";
|
my_turn.text = "Your Turn";
|
||||||
});
|
});
|
||||||
@ -192,9 +208,11 @@ function start_game() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
socket.on('card', function (data) {
|
socket.on('card', function (data) {
|
||||||
if (show_card === true) card.destroyCard();
|
let u = data.username;
|
||||||
|
let q = data.card.question;
|
||||||
card = new Card(game_board_size, data.card.question, data.card['answers'][0], data.card['answers'][1], data.card['answers'][2], data.card['answers'][3], data.card['difficulty'], data.username === username);
|
let a = data.card.answers;
|
||||||
|
let d = data.card.difficulty;
|
||||||
|
card = new Card(game_board_size, q, a[0], a[1], a[2], a[3], d, u === username);
|
||||||
card.showCard();
|
card.showCard();
|
||||||
show_card = true;
|
show_card = true;
|
||||||
});
|
});
|
||||||
@ -252,12 +270,12 @@ function start_game() {
|
|||||||
|
|
||||||
if (data.state === 2 || data.state === 3) {
|
if (data.state === 2 || data.state === 3) {
|
||||||
card = new Card(game_board_size, "",
|
card = new Card(game_board_size, "",
|
||||||
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("N/A"), "status": false},
|
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("N/A"), "status": false},
|
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("N/A"), "status": false},
|
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("N/A"), "status": false},
|
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("Kein Spieler"), "status": false},
|
||||||
0, false, data.state);
|
0, false, data.state);
|
||||||
hunter.clear();
|
red_border.clear();
|
||||||
card.showCard();
|
card.showCard();
|
||||||
show_card = true;
|
show_card = true;
|
||||||
}
|
}
|
||||||
@ -265,12 +283,12 @@ function start_game() {
|
|||||||
if (next_player === username) my_turn.text = "Your Turn";
|
if (next_player === username) my_turn.text = "Your Turn";
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('update hunter', function (position) {
|
socket.on('update Hunter', function (position) {
|
||||||
let x = sprites[position].coord_x;
|
let x = sprites[position].coord_x;
|
||||||
let y = sprites[position].coord_y;
|
let y = sprites[position].coord_y;
|
||||||
hunter.clear();
|
red_border.clear();
|
||||||
hunter = generate_hunter(new PIXI.Graphics(), x, y);
|
red_border = generate_red_border(new PIXI.Graphics(), x, y);
|
||||||
app.stage.addChild(hunter);
|
app.stage.addChild(red_border);
|
||||||
});
|
});
|
||||||
|
|
||||||
resize();
|
resize();
|
||||||
@ -288,7 +306,7 @@ function generate_card_stack(sprite, x, y, onclick) {
|
|||||||
return sprite;
|
return sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generate_hunter(graphics, x, y) {
|
function generate_red_border(graphics, x, y) {
|
||||||
graphics.lineStyle(sprite_size * 0.10, 0x862323, 1);
|
graphics.lineStyle(sprite_size * 0.10, 0x862323, 1);
|
||||||
graphics.drawRect(sprite_size * x - sprite_size * 0.2, sprite_size * y - sprite_size * 0.2, sprite_size * 1.5, sprite_size * 1.5);
|
graphics.drawRect(sprite_size * x - sprite_size * 0.2, sprite_size * y - sprite_size * 0.2, sprite_size * 1.5, sprite_size * 1.5);
|
||||||
return graphics;
|
return graphics;
|
||||||
@ -313,7 +331,6 @@ function generate_circle(graphics, x, y, color, offset) {
|
|||||||
graphics.beginFill(0xFFFFFF, 1);
|
graphics.beginFill(0xFFFFFF, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (offset) {
|
switch (offset) {
|
||||||
case 1:
|
case 1:
|
||||||
graphics.drawCircle(sprite_size * x - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
graphics.drawCircle(sprite_size * x - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
||||||
@ -328,7 +345,6 @@ function generate_circle(graphics, x, y, color, offset) {
|
|||||||
graphics.drawCircle(sprite_size * x + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
graphics.drawCircle(sprite_size * x + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
||||||
break; // lower right
|
break; // lower right
|
||||||
}
|
}
|
||||||
|
|
||||||
graphics.endFill();
|
graphics.endFill();
|
||||||
return graphics;
|
return graphics;
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,8 @@ let username;
|
|||||||
let room_name;
|
let room_name;
|
||||||
|
|
||||||
window.addEventListener('beforeunload', function (e) {
|
window.addEventListener('beforeunload', function (e) {
|
||||||
e.preventDefault(); // Prevent user from exiting page
|
// Prevent user from exiting page
|
||||||
});
|
e.preventDefault();
|
||||||
|
|
||||||
window.addEventListener('keydown', function (event) {
|
|
||||||
if (event.code === 'Enter' && app == null) document.getElementById('ok').click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById('ok').addEventListener('click', function () {
|
document.getElementById('ok').addEventListener('click', function () {
|
||||||
|