Compare commits

...

37 Commits

Author SHA1 Message Date
H4CK3R-01
0c7c104e2e Use Gitea actions instead of drone #2
All checks were successful
build
2023-03-28 00:13:06 +02:00
H4CK3R-01
eabec6e234 Merge branch 'main' of https://git.flokaiser.com/DHBW/Projektmanagement-Game 2023-03-28 00:11:27 +02:00
H4CK3R-01
abb95ae052 Use Gitea actions instead of drone 2023-03-28 00:10:37 +02:00
e8559435ac Update dependency socket.io to v4.6.1
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-21 06:01:25 +01:00
05afb7a350 Update dependency socket.io to v4.6.0
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-08 06:01:23 +01:00
c7d01928e0 Update dependency socket.io to v4.5.4
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-11-23 06:01:36 +01:00
2a34dcf4a0 Update dependency pixi.js to v6.5.8
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-24 07:01:22 +02:00
6c3419fb17 Update dependency pixi.js to v6.5.7
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-21 07:01:31 +02:00
b3be8fb2e9 Update dependency socket.io to v4.5.3
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-17 07:02:04 +02:00
087f577291 Update dependency pixi.js to v6.5.6
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-15 07:01:28 +02:00
94638c7f14 Update dependency pixi.js to v6.5.5
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-01 07:01:20 +02:00
59ad670649 Update dependency pixi.js to v6.5.4
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-09-22 07:01:43 +02:00
b5e2bb78a3 Update dependency @socket.io/admin-ui to ^0.5.0
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-09-20 07:01:21 +02:00
1fa206a073 Update dependency socket.io to v4.5.2
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-09-19 07:05:28 +02:00
cdff77c136 Update dependency pixi.js to v6.5.3
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-09-19 07:03:08 +02:00
13e383ac19 Update dependency @socket.io/admin-ui to ^0.4.0
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-09-19 07:01:03 +02:00
aafcbd3e17 Migrate to Gitea
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-09-18 01:07:45 +02:00
Florian Kaiser
f1a1ebd8e1
Create .drone.yml 2022-02-19 23:22:04 +01:00
Florian Kaiser
f1375661a7
Merge pull request #76 from H4CK3R-01/H4CK3R-01-patch-1
Update README.md
2021-07-15 10:06:25 +02:00
Florian Kaiser
7774003ff4
Update README.md 2021-07-15 09:12:44 +02:00
Florian Kaiser
0062d41afd
Merge pull request #75 from H4CK3R-01/mobile_design_fix
Fixed css for mobile devices
2021-07-14 23:48:30 +02:00
H4CK3R-01
8a6b676c1e Fixed css for mobile devices 2021-07-14 23:47:47 +02:00
Florian Kaiser
4eb1fed0d2
Merge pull request #74 from H4CK3R-01/refactoring
Optimized css for mobile devices
2021-07-14 11:37:30 +02:00
Florian Kaiser
4e2ad9df06
Merge branch 'main' into refactoring 2021-07-14 11:37:24 +02:00
Florian Kaiser
9ba3eabafe
Merge pull request #73 from H4CK3R-01/mobile_design
Optimized css for mobile devices
2021-07-14 11:36:06 +02:00
Florian Kaiser
afeb99c495
Merge pull request #72 from H4CK3R-01/fix_close_scoreboard_issue
Bug fix
2021-07-14 11:35:56 +02:00
H4CK3R-01
e2b6e88a3b Optimized css for mobile devices 2021-07-14 11:34:36 +02:00
H4CK3R-01
214e63513b Optimized css for mobile devices 2021-07-14 08:46:55 +02:00
H4CK3R-01
126490e149 Bug fix 2021-07-14 08:43:13 +02:00
Florian Kaiser
16683d049e
Merge pull request #71 from H4CK3R-01/question_modifications
Removed line breaks from some questions
2021-07-13 17:12:02 +02:00
H4CK3R-01
d517c41c03 Removed line breaks from some questions 2021-07-13 17:11:20 +02:00
Fabian Thomé
7f869cdd51
Merge pull request #70 from H4CK3R-01/red_border_bug_at_end_of_game
hunter is visible after game ends
2021-07-13 16:31:24 +02:00
H4CK3R-01
52b5b7b9a2 hunter is visible after game ends 2021-07-13 16:29:05 +02:00
Florian Kaiser
b7ca0f8a56
Merge pull request #69 from H4CK3R-01/minimized_images
Some improvements
2021-07-13 14:54:40 +02:00
H4CK3R-01
659f110773 - compressed images to reduce data usage
- small improvements
2021-07-13 14:53:36 +02:00
Florian Kaiser
eadf3254f0
Merge pull request #68 from H4CK3R-01/update_questions
Updated questions
2021-07-12 17:22:10 +02:00
H4CK3R-01
7ad1430ac6 Updated questions 2021-07-12 17:01:33 +02:00
27 changed files with 3655 additions and 6139 deletions

View File

@ -0,0 +1,40 @@
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 }}

10
.renovaterc.json Normal file
View File

@ -0,0 +1,10 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"schedule": ["* 5 * * *"],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch", "pin", "digest"],
"automerge": true
}
]
}

View File

@ -16,8 +16,8 @@ COPY minimize.sh minimize.sh
RUN chmod +x minimize.sh
RUN ./minimize.sh
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://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\:\/\/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
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_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
EXPOSE 5000

View File

@ -1,4 +1,4 @@
# Projektmanagement Game
# Wer wird Projektmanager 2021?
## Docker
### Build

View File

@ -16,7 +16,6 @@ class Game {
this.currentStatus = Game.STATUS.SETTING_UP;
this.players = [];
this.currentPlayerIndex = 0;
this.winnerIndex = 0;
this.round = 0;
this.hunter = new Hunter();
this.playerNames = [];
@ -90,7 +89,6 @@ class Game {
let index = this.players.findIndex(player => player.position >= Game.MAX_POSITION);
if (index !== -1) {
this.currentStatus = Game.STATUS.IS_WON;
this.winnerIndex = index;
}
}

View File

@ -7,7 +7,7 @@ const app = express();
const server = require('http').createServer(app);
const {Server} = require("socket.io");
const io = new Server(server);
let cards = JSON.parse(fs.readFileSync(__dirname + '/../data/fragen_10_06_21_final_new_format.json'));
let cards = JSON.parse(fs.readFileSync(__dirname + '/../data/fragen_12_07_21_new_format.json'));
let game = {};
@ -56,7 +56,7 @@ io.on('connection', socket => {
socket.emit('login', game[socket.room].get_player_index(socket.username));
socket.join(socket.room);
io.in(socket.room).emit('updatePlayerNames', game[socket.room].getPlayerNames());
io.in(socket.room).emit('update player names', game[socket.room].getPlayerNames());
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');
game[socket.room].removePlayerName(socket.username);
io.in(socket.room).emit('updatePlayerNames', game[socket.room].getPlayerNames());
io.in(socket.room).emit('update player names', game[socket.room].getPlayerNames());
socket.broadcast.to(socket.room).emit('user left', socket.username);
game[socket.room].remove_player(socket.username);
@ -150,19 +150,20 @@ io.on('connection', socket => {
game[socket.room].finish_turn();
io.in(socket.room).emit('update hunter', game[socket.room].hunter.getPosition());
io.in(socket.room).emit('player moved', {
"next_player": game[socket.room].players[game[socket.room].currentPlayerIndex].name,
"player": index,
"position": position,
"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) {
let color;
switch (type) {
case 'LEFT':
color = '\x1b[31m';
@ -185,12 +186,12 @@ function generate_log_message(room, user, type, message) {
default:
color = '\x1b[0m';
}
room = pad(10, room, ' ').substr(0, 10);
user = pad(10, user, ' ').substr(0, 10);
type = pad(10, type, ' ').substr(0, 10);
let reset_color = '\x1b[0m';
console.info("%s[%s] [%s] [%s]\x1b[0m %s", color, room, user, type, reset_color, message);
console.info("%s[%s] [%s] [%s] \x1b[36m%s\x1b[0m", color, room, user, type, message);
}
function getRandomCard(difficulty, room) {

1052
data/fragen_12_07_21.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,59 +1,19 @@
import json
import io
if __name__ == '__main__':
array = []
with open('fragen_10_06_21_final.json') as file:
with io.open('fragen_12_07_21.json', 'r', encoding='utf-8-sig') as file:
data = json.load(file)
length_q = 0
id_q = 0
length = 0
id = 0
for i in range(0, len(data)):
new = {'id': int(data[i]['id']), 'difficulty': int(data[i]['difficulty']), 'question': data[i]['question'],
'answers': []}
new['answers'].append({"text": data[i]['A'],
"status": 'A' == data[i]['key']
})
new['answers'].append({"text": data[i]['B'],
"status": 'B' == data[i]['key']
})
new['answers'].append({"text": data[i]['C'],
"status": 'C' == data[i]['key']
})
new['answers'].append({"text": data[i]['D'],
"status": 'D' == data[i]['key']
})
if(length_q < len(data[i]['question'])):
length_q = len(data[i]['question'])
if(length < len(data[i]['A'])):
length = len(data[i]['A'])
if(length < len(data[i]['B'])):
length = len(data[i]['B'])
if(length < len(data[i]['C'])):
length = len(data[i]['C'])
if(length < len(data[i]['D'])):
length = len(data[i]['D'])
new = { 'id': int(data[i]['ID']), 'difficulty': int(data[i]['Schwierigkeit']), 'question': data[i]['Frage'], 'answers': [] }
new['answers'].append({"text": data[i]['A'], "status": 'A' == data[i]['Key']})
new['answers'].append({"text": data[i]['B'], "status": 'B' == data[i]['Key']})
new['answers'].append({"text": data[i]['C'], "status": 'C' == data[i]['Key']})
new['answers'].append({"text": data[i]['D'], "status": 'D' == data[i]['Key']})
array.append(new)
print("Längste Frage: " + str(length))
print("Längste Antwort: " + str(length_q))
with open('fragen_10_06_21_final.json') as file:
data = json.load(file)
for i in range(0, len(data)):
if(length_q == len(data[i]['question'])):
print("Längste Frage ID: " + str(data[i]['id']))
if(length == len(data[i]['A']) or length == len(data[i]['B']) or length == len(data[i]['C']) or length == len(data[i]['D'])):
print("Längste Antwort ID: " + str(data[i]['id']))
with open('fragen_10_06_21_final_new_format.json', 'w', encoding='utf8') as file:
with open('fragen_12_07_21_new_format.json', 'w', encoding='utf8') as file:
json.dump(array, file, ensure_ascii=False)

6059
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -2,8 +2,8 @@
"name": "projektmanagement-game",
"version": "1.0.0",
"dependencies": {
"@socket.io/admin-ui": "^0.2.0",
"@socket.io/admin-ui": "^0.5.0",
"express": "^4.17.1",
"socket.io": "^4.1.2"
"socket.io": "^4.1.3"
}
}

View File

@ -5,7 +5,7 @@
display: flex;
justify-content: 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*/
-moz-background-size: cover; /* Mozilla*/
-o-background-size: cover; /* Opera*/

View File

@ -55,20 +55,20 @@
}
@media only screen and (max-width: 980px) {
#login {
align-items: flex-start;
}
#login form {
padding-top: 10px;
}
#login label {
font-size: 2.5em;
}
#login input, #login button {
height: 4.0em;
height: 2.0em;
font-size: 2.5em;
}
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 866 KiB

After

Width:  |  Height:  |  Size: 859 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 443 KiB

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 KiB

After

Width:  |  Height:  |  Size: 306 KiB

View File

@ -4,22 +4,19 @@
<meta charset="UTF-8" content="user-scalable=no, autoRotate:disabled" name="viewport"/>
<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/header.css" rel="stylesheet">
<link href="css/chat.css" rel="stylesheet">
<link href="css/game.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">
</head>
<body>
<header>
<div class="spielanleitung"><span
onclick="open_manual();">Spielanleitung</span></div>
onclick="open_manual();">Instructions</span></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>
@ -29,13 +26,13 @@
<div id="login">
<form>
<h2 id="error"></h2>
<label for="username">Benutzername: </label>
<input id="username" name="username" placeholder="Benutzername" type="text">
<label for="username">Username: </label>
<input id="username" name="username" placeholder="Username" type="text">
<label for="room">Raumnummer: </label>
<input id="room" name="room" placeholder="Raumnummer" type="text">
<label for="room">Room name: </label>
<input id="room" name="room" placeholder="Room name" type="text">
<button id="ok" type="button">Bestätigen</button>
<button id="ok" type="button">Submit</button>
</form>
</div>
<div id="game">
@ -56,9 +53,11 @@
<div id="modal">
<div id="content">
<div id="modal_header">
<h3 id="modal_title">Spielanleitung</h3>
<span><i class="material-icon"
onclick="document.getElementById('modal').style.display = 'none';">close</i></span>
<h3 id="modal_title">Instructions</h3>
<span>
<i class="material-icon"
onclick="document.getElementById('modal').style.display = 'none';">close</i>
</span>
</div>
<div class="divider"></div>
<div id="manual"></div>
@ -69,9 +68,8 @@
</footer>
<script crossorigin="anonymous" referrerpolicy="no-referrer"
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="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.6.1/socket.io.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/6.5.8/browser/pixi.min.js"></script>
<script src="js/Card.js"></script>
<script src="js/Button.js"></script>
<script src="js/Sprite.js"></script>

View File

@ -117,7 +117,7 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
if (this.difficulty === 0) {
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 * 1, 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, this.answer_4.text, this.answer_4.status, function () {
if (_this.your_turn) {
select_answer(3, _this.answer_4.text);
}
@ -135,10 +135,8 @@ 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 () {
if (answer !== null) {
if (_this.right_answer === answer) { //TODO: do this in backend instead to prevent cheating
console.log("Richtig");
socket.emit('card finished', difficulty, true);
} else {
console.log("Falsch");
socket.emit('card finished', difficulty, false);
}
show_card = false;
@ -147,7 +145,7 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
rolled_number = null;
} else {
if (your_turn === true) {
alert("Bitte wähle eine Antwortmöglichkeit aus");
alert("Please choose your answer!");
} else {
show_card = false;
answer = null;

View File

@ -1,7 +1,5 @@
/*
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
sprite.jpg: https://media.istockphoto.com/photos/gray-granite-stone-texture-seamless-square-background-tile-ready-picture-id1096464726
*/
@ -57,8 +55,8 @@ function start_game() {
sprites.forEach(sprite => app.stage.addChild(sprite.getSprite()));
// Red border
let red_border = generate_red_border(new PIXI.Graphics(), 1, 9);
app.stage.addChild(red_border);
let hunter = generate_hunter(new PIXI.Graphics(), 1, 9);
app.stage.addChild(hunter);
// Player circles
@ -77,26 +75,17 @@ function start_game() {
// Card stacks
let cards_1 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_1.png'), 3, 3, function () {
if (diced && !show_card && rolled_number === 1) {
console.log("1");
socket.emit('get card', 1);
}
if (diced && !show_card && rolled_number === 1) socket.emit('get card', 1);
});
app.stage.addChild(cards_1);
let cards_2 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_2.png'), 5, 3, function () {
if (diced && !show_card && rolled_number === 2) {
console.log("2");
socket.emit('get card', 2);
}
if (diced && !show_card && rolled_number === 2) socket.emit('get card', 2);
});
app.stage.addChild(cards_2);
let cards_3 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_3.png'), 7, 3, function () {
if (diced && !show_card && rolled_number === 3) {
console.log("3");
socket.emit('get card', 3);
}
if (diced && !show_card && rolled_number === 3) socket.emit('get card', 3);
});
app.stage.addChild(cards_3);
@ -112,9 +101,7 @@ function start_game() {
dice.buttonMode = true;
dice.defaultCursor = 'pointer';
dice.on('pointerdown', function () {
if (!diced) {
socket.emit('roll dice');
}
if (!diced) socket.emit('roll dice');
});
app.stage.addChild(dice);
@ -127,7 +114,6 @@ function start_game() {
logo.y = sprite_size * 5.5 - sprite_size * 0.2;
logo.width = sprite_size * 3.5;
logo.height = sprite_size * 1.5;
// logo.rotation -= Math.PI / 8;
app.stage.addChild(logo);
@ -174,13 +160,11 @@ function start_game() {
score_button.defaultCursor = 'pointer';
score_button.on('pointerdown', function () {
card = new Card(game_board_size, "",
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("Kein Spieler"), "status": false},
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("Kein Spieler"), "status": false},
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("Kein Spieler"), "status": false},
{
"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("Kein Spieler"),
"status": false
}, 0, false);
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("N/A"), "status": false},
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("N/A"), "status": false},
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("N/A"), "status": false},
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("N/A"), "status": false},
0, false);
card.showCard();
show_card = true;
});
@ -188,11 +172,11 @@ function start_game() {
app.stage.addChild(score_button);
score_button.addChild(score_button_text);
socket.on('updatePlayerNames', function (p) {
socket.on('update player names', function (p) {
playerNames = p;
});
socket.on('first player', function () {
my_turn.text = "Your Turn";
});
@ -208,11 +192,9 @@ function start_game() {
});
socket.on('card', function (data) {
let u = data.username;
let q = data.card.question;
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);
if (show_card === true) card.destroyCard();
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);
card.showCard();
show_card = true;
});
@ -270,12 +252,12 @@ function start_game() {
if (data.state === 2 || data.state === 3) {
card = new Card(game_board_size, "",
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("Kein Spieler"), "status": false},
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("Kein Spieler"), "status": false},
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("Kein Spieler"), "status": false},
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("Kein Spieler"), "status": false},
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("N/A"), "status": false},
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("N/A"), "status": false},
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("N/A"), "status": false},
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("N/A"), "status": false},
0, false, data.state);
red_border.clear();
hunter.clear();
card.showCard();
show_card = true;
}
@ -283,12 +265,12 @@ function start_game() {
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 y = sprites[position].coord_y;
red_border.clear();
red_border = generate_red_border(new PIXI.Graphics(), x, y);
app.stage.addChild(red_border);
hunter.clear();
hunter = generate_hunter(new PIXI.Graphics(), x, y);
app.stage.addChild(hunter);
});
resize();
@ -306,7 +288,7 @@ function generate_card_stack(sprite, x, y, onclick) {
return sprite;
}
function generate_red_border(graphics, x, y) {
function generate_hunter(graphics, x, y) {
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);
return graphics;
@ -331,6 +313,7 @@ function generate_circle(graphics, x, y, color, offset) {
graphics.beginFill(0xFFFFFF, 1);
break;
}
switch (offset) {
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);
@ -345,6 +328,7 @@ 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);
break; // lower right
}
graphics.endFill();
return graphics;
}

View File

@ -2,8 +2,11 @@ let username;
let room_name;
window.addEventListener('beforeunload', function (e) {
// Prevent user from exiting page
e.preventDefault();
e.preventDefault(); // Prevent user from exiting page
});
window.addEventListener('keydown', function (event) {
if (event.code === 'Enter' && app == null) document.getElementById('ok').click();
});
document.getElementById('ok').addEventListener('click', function () {