From e343fd57a3babd4518076c435f09c7ecc9c67021 Mon Sep 17 00:00:00 2001 From: Kum1ta Date: Tue, 8 Oct 2024 20:10:08 +0200 Subject: [PATCH] Game - fix english - add pfp on scoreboard --- .../djangoserver/file/server/server/Game.py | 6 +- .../server/templates/multiOnlineGamePage.html | 2 +- .../djangoserver/file/server/server/urls.py | 4 +- .../nginx/static/javascript/lobbyPage/main.js | 24 +++---- .../static/javascript/multiOnlineGame/Map.js | 65 ++++++++++++++----- .../javascript/multiOnlineGame/Player.js | 3 +- .../multiOnlineGame/multiOnlineGamePage.js | 7 +- .../tournamentPage/TournamentPage.js | 20 +++++- .../javascript/typeResponse/typeTournament.js | 10 ++- .../static/javascript/waitingGame/main.js | 4 +- .../nginx/static/style/game/games.css | 9 ++- 11 files changed, 105 insertions(+), 49 deletions(-) diff --git a/docker-compose/requirements/djangoserver/file/server/server/Game.py b/docker-compose/requirements/djangoserver/file/server/server/Game.py index 4d2bcbc..0e403bc 100644 --- a/docker-compose/requirements/djangoserver/file/server/server/Game.py +++ b/docker-compose/requirements/djangoserver/file/server/server/Game.py @@ -6,7 +6,7 @@ # By: edbernar 0 ms

-

You lose...

+

You lost...

0 - 0

You will be redirected to the lobby in 5 seconds

diff --git a/docker-compose/requirements/djangoserver/file/server/server/urls.py b/docker-compose/requirements/djangoserver/file/server/server/urls.py index e2b0430..e0037f0 100644 --- a/docker-compose/requirements/djangoserver/file/server/server/urls.py +++ b/docker-compose/requirements/djangoserver/file/server/server/urls.py @@ -25,9 +25,9 @@ urlpatterns = [ path("multiOnlineGamePage", views.multiOnlineGamePage, name='multiOnlineGamePage'), path("waitingGamePage", views.waitingGamePage, name='waitingGamePage'), path("profilPage", views.profilPage, name='profilPage'), - path("game", views.game, name='game'), + # path("game", views.game, name='game'), path("wait_game", views.game, name='wait_game'), - #path("tournament", views.tournament, name='tournament'), + path("tournament", views.tournament, name='tournament'), path("login42", views.login42, name='login42'), path("logout", views.logout, name='logout'), path("verify", views.verify, name='verify'), diff --git a/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js b/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js index 2e0d124..c2c6f69 100644 --- a/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js +++ b/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js @@ -6,7 +6,7 @@ /* By: edbernar { + if (event.key == 'Enter') + startTournmament(); + }); listSelectCard = document.getElementsByClassName('select-card'); listSelectCard[0].addEventListener('click', selectGameModeOne); listSelectCard[1].addEventListener('click', selectGameModeTwo); @@ -177,11 +182,6 @@ function startTournmament() sendRequest("tournament", {action: 0, code: code}); } -function showGameMode() -{ - document.getElementById('loginPopup').style.display = 'flex'; -} - function closePopUpWhenClickOutsite (event) { if (event.target == document.getElementById('loginPopup')) diff --git a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js index 6454796..04ae3b9 100644 --- a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js +++ b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js @@ -6,7 +6,7 @@ /* By: edbernar { - contextImageLeft.drawImage(imageLeft, 0, 0, canvasImageLeft.width, canvasImageLeft.height); - textureImageLeft.needsUpdate = true; - }; + canvasImageLeft.classList.add('imgScoreBoard'); + imageLeft.onload = () => this.#putPlayerPfp(canvasImageLeft, contextImageLeft, textureImageLeft, imageLeft); canvasImageRight = document.createElement('canvas'); contextImageRight = canvasImageRight.getContext('2d'); @@ -505,11 +507,9 @@ class Map contextImageLeft.clearRect(0, 0, canvasImageLeft.width, canvasImageLeft.height); const imageRight = new Image(); + imageRight.setAttribute('class', 'imgScoreBoard'); imageRight.src = sourceImageRight; - imageRight.onload = () => { - contextImageRight.drawImage(imageRight, 0, 0, canvasImageRight.width, canvasImageRight.height); - textureImageRight.needsUpdate = true; - }; + imageRight.onload = () => this.#putPlayerPfp(canvasImageRight, contextImageRight, textureImageRight, imageRight); let materialProfileLeft = null; let materialProfileRight = null; @@ -537,8 +537,10 @@ class Map geometryProfileRightBack = new THREE.PlaneGeometry(width - 0.15, height - 0.15); meshProfileRightBack = new THREE.Mesh(geometryProfileRightBack, materialProfileRight); - meshProfileLeftFront.position.set(-spacing - width / 2 - 0.325, 1.6, - 8.5 + depth / 2 + 0.001); - meshProfileRightFront.position.set(spacing + width / 2 + 0.325, 1.6, - 8.5 + depth / 2 + 0.01); + meshProfileLeftFront.position.set(-spacing - width / 2 - 0.275, 1.6, - 8.15); + meshProfileLeftFront.rotation.y = 0.4; + meshProfileRightFront.position.set(spacing + width / 2 + 0.275, 1.6, - 8.15); + meshProfileRightFront.rotation.y = -0.4; meshProfileLeftBack.rotation.y = Math.PI; meshProfileLeftBack.position.set(-spacing - width / 2 - 0.325, 1.6, 8.5 - depth / 2 - 0.001); @@ -554,6 +556,33 @@ class Map this.arrObject.push({mesh: meshProfileLeftBack, name: "", type: "profileBoard"}); this.arrObject.push({mesh: meshProfileRightBack, name: "", type: "profileBoard"}); }; + + #putPlayerPfp(canvasImage, contextImage, textureImage, img) + { + const canvasWidth = canvasImage.width; + const canvasHeight = canvasImage.height; + const imageWidth = img.width; + const imageHeight = img.height; + const canvasRatio = canvasWidth / canvasHeight; + const imageRatio = imageWidth / imageHeight; + let drawWidth, drawHeight; + + if (imageRatio > canvasRatio) + { + drawWidth = canvasWidth; + drawHeight = canvasWidth / imageRatio; + } + else + { + drawWidth = canvasHeight * imageRatio; + drawHeight = canvasHeight; + } + const offsetX = (canvasWidth - drawWidth) / 2; + const offsetY = (canvasHeight - drawHeight) / 2; + contextImage.clearRect(0, 0, canvasWidth, canvasHeight); + contextImage.drawImage(img, offsetX, offsetY, drawWidth, drawHeight); + textureImage.needsUpdate = true; + } putVideoOnCanvas(nbImage, vNameNb) { diff --git a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js index f07ff12..5b44527 100644 --- a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js +++ b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js @@ -6,7 +6,7 @@ /* By: edbernar { if (content.opponentLeft) diff --git a/docker-compose/requirements/nginx/static/javascript/tournamentPage/TournamentPage.js b/docker-compose/requirements/nginx/static/javascript/tournamentPage/TournamentPage.js index 8e39769..2985a41 100644 --- a/docker-compose/requirements/nginx/static/javascript/tournamentPage/TournamentPage.js +++ b/docker-compose/requirements/nginx/static/javascript/tournamentPage/TournamentPage.js @@ -6,7 +6,7 @@ /* By: edbernar { + for (let i = 0; i < document.body.children.length; i++) + { + document.body.children[i].style.animation = 'none'; + } + }, 500); divTopInfo = document.getElementById('actuality-tournament'); divInfo = document.getElementsByClassName('infoo')[0]; divChat = document.getElementsByClassName('chat')[0]; @@ -48,6 +57,11 @@ class TournamentPage divTopInfo = null; divInfo = null; divChat = null; + Object.values(playerList).forEach((info) => { + info.id = 0; + info.username = null; + info.pfp = null; + }); } static newOpponent(content) diff --git a/docker-compose/requirements/nginx/static/javascript/typeResponse/typeTournament.js b/docker-compose/requirements/nginx/static/javascript/typeResponse/typeTournament.js index 52d6391..cff9b67 100644 --- a/docker-compose/requirements/nginx/static/javascript/typeResponse/typeTournament.js +++ b/docker-compose/requirements/nginx/static/javascript/typeResponse/typeTournament.js @@ -6,7 +6,7 @@ /* By: edbernar { + pageRenderer.changePage('tournamentPage', false, content.code); + }, 400); + } } export { typeTournament }; \ No newline at end of file diff --git a/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js b/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js index 0cedd66..8b01d2b 100644 --- a/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js +++ b/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js @@ -6,7 +6,7 @@ /* By: edbernar { document.body.style.animation = 'anim3 0.5s'; document.body.style.opacity = 0; - pageRenderer.changePage("multiOnlineGamePage", false, {player: lastSelected ? lastSelected.id : 0, opponent: content.skin, opponentGoaldId: content.goalId}); + pageRenderer.changePage("multiOnlineGamePage", false, {player: lastSelected ? lastSelected.id : 0, opponent: content.skin, opponentGoaldId: content.goalId, pfp: content.pfpSelf, pfpOpponent: content.pfpOpponent}); }, 1000); }, 500); document.body.removeChild(returnButton); diff --git a/docker-compose/requirements/nginx/static/style/game/games.css b/docker-compose/requirements/nginx/static/style/game/games.css index e9008ff..9431138 100644 --- a/docker-compose/requirements/nginx/static/style/game/games.css +++ b/docker-compose/requirements/nginx/static/style/game/games.css @@ -6,7 +6,7 @@ /* By: edbernar