games: add: goal table

This commit is contained in:
starnakin 2024-02-20 16:54:14 +01:00
parent 4d2d4dfb98
commit 4c3116c51f
7 changed files with 58 additions and 27 deletions

View File

@ -14,7 +14,7 @@ class MyPlayer extends Player
*/ */
constructor(client, game, rail, nb_goal, position) constructor(client, game, rail, nb_goal, position)
{ {
super(game, client.me.id, rail, nb_goal, position, true); super(game, client.me.id, client.me.username, rail, nb_goal, position, true);
/** /**
* @type {Client} * @type {Client}
*/ */

View File

@ -7,12 +7,13 @@ class Player
/** /**
* @param {Number} id * @param {Number} id
* @param {Game} game * @param {Game} game
* @param {Segment} rail * @param {Segment} rail
* @param {Number} nb_goal * @param {Number} nb_goal
* @param {Number} position * @param {Number} position
* @param {Boolean} is_connected * @param {Boolean} is_connected
* @param {String} username
*/ */
constructor(game, id, rail, nb_goal, position, is_connected) constructor(game, id, username, rail, nb_goal, position, is_connected)
{ {
/** /**
* @type {Game} * @type {Game}
@ -43,6 +44,11 @@ class Player
* @type {Segment} * @type {Segment}
*/ */
this.rail = rail === undefined ? new Segment() : rail; this.rail = rail === undefined ? new Segment() : rail;
/**
* @type {String}
*/
this.username = username;
} }
/** /**
@ -90,30 +96,12 @@ class Player
from_json(data) from_json(data)
{ {
/**
* @type {Boolean}
*/
this.is_connected = data.is_connected; this.is_connected = data.is_connected;
/**
* @type {Number}
*/
this.id = data.user_id; this.id = data.user_id;
/**
* @type {Number}
*/
this.position = data.position.position ; this.position = data.position.position ;
/**
* @type {Number}
*/
this.nb_goal = data.nb_goal; this.nb_goal = data.nb_goal;
/**
* @type {Segment}
*/
this.rail = this.rail.from_json(data.rail); this.rail = this.rail.from_json(data.rail);
this.username = data.username;
return this; return this;
} }

View File

@ -35,5 +35,7 @@
"profileDenyRequest": "Refuser le cramptéman", "profileDenyRequest": "Refuser le cramptéman",
"profileAcceptRequest": "Accepter le cramptéman", "profileAcceptRequest": "Accepter le cramptéman",
"profileUnblock": "Quoicoudebloquer", "profileUnblock": "Quoicoudebloquer",
"profileBlock": "Quoicoubloquer" "profileBlock": "Quoicoubloquer",
"gameGoalTaken": "Tu es quoicoucringe",
"gamePlayersListName": "Crampteurs"
} }

View File

@ -35,5 +35,7 @@
"profileDenyRequest": "Decline Friend", "profileDenyRequest": "Decline Friend",
"profileAcceptRequest": "Accept Friend", "profileAcceptRequest": "Accept Friend",
"profileUnblock": "Unblock", "profileUnblock": "Unblock",
"profileBlock": "Block" "profileBlock": "Block",
"gameGoalTaken": "Goal Taken",
"gamePlayersListName": "Players"
} }

View File

@ -35,5 +35,7 @@
"profileDenyRequest": "Refuser l'ami", "profileDenyRequest": "Refuser l'ami",
"profileAcceptRequest": "Accepter l'ami", "profileAcceptRequest": "Accepter l'ami",
"profileUnblock": "Débloquer", "profileUnblock": "Débloquer",
"profileBlock": "Bloquer" "profileBlock": "Bloquer",
"gameGoalTaken": "But pris",
"gamePlayersListName": "Joueurs"
} }

View File

@ -2,6 +2,7 @@ import { client } from "../index.js";
import { Game } from "../api/game/Game.js"; import { Game } from "../api/game/Game.js";
import AbstractView from "./abstracts/AbstractView.js"; import AbstractView from "./abstracts/AbstractView.js";
import { MyPlayer } from "../api/game/MyPlayer.js"; import { MyPlayer } from "../api/game/MyPlayer.js";
import { lang } from "../index.js"
export default class extends AbstractView export default class extends AbstractView
{ {
@ -94,7 +95,7 @@ export default class extends AbstractView
this.my_player = new MyPlayer(client, this.my_player = new MyPlayer(client,
this.game, this.game,
my_player.rail, my_player.rail,
my_player.nb_gool, my_player.nb_goal,
my_player.position, my_player.position,
); );
this.game.players[index] = this.my_player; this.game.players[index] = this.my_player;
@ -113,6 +114,26 @@ export default class extends AbstractView
await this.join_game(); await this.join_game();
} }
display_players_list()
{
let players_list = document.getElementById("players_list");
this.game.players.forEach(player => {
console.log(player);
let tr = document.createElement("tr");
let name = document.createElement("td");
let goal = document.createElement("td");
name.innerText = player.username;
goal.innerText = player.nb_goal;
tr.appendChild(name);
tr.appendChild(goal);
players_list.appendChild(tr);
});
}
async postInit() async postInit()
{ {
let error_code = await this.game.init(); let error_code = await this.game.init();
@ -121,6 +142,7 @@ export default class extends AbstractView
return error_code; return error_code;
await this.update_game_state(); await this.update_game_state();
this.display_players_list();
} }
async leavePage() async leavePage()
@ -138,7 +160,17 @@ export default class extends AbstractView
return /* HTML */ ` return /* HTML */ `
<link rel="stylesheet" href="/static/css/game.css"> <link rel="stylesheet" href="/static/css/game.css">
<h2 id="game-state"></h2> <h2 id="game-state"></h2>
<div id="player_list"></div>
<table>
<thead>
<tr>
<th scope="col">${lang.get("gamePlayersListName")}</th>
<th scope="col">${lang.get("gameGoalTaken")}</th>
</tr>
</thead>
<tbody id="players_list">
</tbody>
</table>
`; `;
} }
} }

View File

@ -4,6 +4,8 @@ from .. import config
from channels.generic.websocket import WebsocketConsumer from channels.generic.websocket import WebsocketConsumer
from django.contrib.auth.models import User
from .Position import Position from .Position import Position
from .Spectator import Spectator from .Spectator import Spectator
from .Point import Point from .Point import Point
@ -27,6 +29,8 @@ class Player(Spectator):
self.rail: Segment = rail self.rail: Segment = rail
self.username: str = User.objects.get(pk = self.user_id).username
def receive(self, data: dict): def receive(self, data: dict):
detail: str = data.get("detail") detail: str = data.get("detail")
@ -111,6 +115,7 @@ class Player(Spectator):
def to_dict(self) -> dict: def to_dict(self) -> dict:
data = { data = {
"username": self.username,
"user_id": self.user_id, "user_id": self.user_id,
"position": self.position.to_dict(), "position": self.position.to_dict(),
"nb_goal": self.nb_goal, "nb_goal": self.nb_goal,