Implemented awarding multiple players for non-buzzer questions

This commit is contained in:
EisiBaer 2023-07-14 18:07:20 +02:00
parent 5ef8ea86bb
commit 58f8fedaec
5 changed files with 20 additions and 38 deletions

View File

@ -86,29 +86,6 @@ exports.checkPlayerAcceptAnswers = ( playerId ) => {
});
}
/**
* Checks if a player is allowed to choose a BoardEntry
* @param {String} playerId
* @returns A promise which resolves with wheter the player is allowed to choose a BoardEntry or not. Rejects if an error occurs.
*/
exports.checkPlayerCanChoose = ( playerId ) => {
return new Promise((resolve, reject) => {
PlayerModel.findById( playerId )
.then( ( player ) => {
if( player ){
resolve( player.isChoosing );
} else {
let playerNotFoundError = new Error(`No player found with id "${playerId}"`);
playerNotFoundError.name = "NotFoundError";
reject(playerNotFoundError);
}
})
.catch( ( err ) => {
reject( err );
})
});
}
/**
* Checks if a player is allowed to currently answer a question and sets it to the specified value
* @param {String} playerId

View File

@ -6,7 +6,6 @@ const PlayerSchema = new Schema({
name: { type: String, required: true, maxLength: 100 },
points: { type: Number },
acceptAnswers: { type: Boolean, default: false },
isChoosing: { type: Boolean, default: false },
});
// Export model

View File

@ -344,7 +344,7 @@ exports.handleMessage = ( gameSocketList, socket, dataRaw ) => {
throw new Error("Player not found");
} else {
let message = `Player ${payload.playerName} got ${payload.pointsAdjustment} points`;
let sendingData = { players: game.players, acceptAnswers: game.acceptAnswers }
let sendingData = { adjustedPlayer: game.players[playerIndex], acceptAnswers: game.acceptAnswers }
sendAllPlayers( socket, gameSocketList, "pointsAdjusted", message, sendingData );
resolve();
};

View File

@ -10,21 +10,21 @@ import { useGameStore } from '@/stores/GameStore';
import Board from '@/models/Board';
import BoardEntry from '@/models/BoardEntry';
import BuzzerSound from "../../assets/sounds/buzzbuzz.mp3";
import NoBuzzerSound from "../../assets/sounds/dingdongy.mp3";
import CorrectAudio from "../../assets/sounds/correct.mp3";
import WrongAudio from "../../assets/sounds/wrong.mp3";
// import HardBuzzerSound from "../../assets/sounds/buzzbuzz.mp3";
import BuzzerSound from "../../assets/sounds/dingdongy.mp3";
// import CorrectAudio from "../../assets/sounds/correct.mp3";
// import WrongAudio from "../../assets/sounds/wrong.mp3";
const gameStore = useGameStore();
const route = useRoute();
let navbarHeight = ref(0);
let boardIsLoading = ref( true );
let buzzBuzz = new Audio( BuzzerSound );
buzzBuzz.volume = 0.3
let buzzNoBuzz = new Audio( NoBuzzerSound );
buzzNoBuzz.volume = 0.7
let answerCorrectAudio = new Audio( CorrectAudio );
let answerWrongAudio = new Audio( WrongAudio );
buzzBuzz.volume = 0.5
// let buzzNoBuzz = new Audio( NoBuzzerSound );
// buzzNoBuzz.volume = 0.7
// let answerCorrectAudio = new Audio( CorrectAudio );
// let answerWrongAudio = new Audio( WrongAudio );
let protocol = ('https:' == document.location.protocol ? 'https://' : 'http://');
@ -98,10 +98,9 @@ function setUpListeners(){
boardSelected();
});
gameStore.addSocketListener("pointsAdjusted", ( data ) => {
gameStore.players = data.payload.players;
let self = data.payload.players.find( playerEntry => playerEntry._id === gameStore.playerId );
if( self ){
gameStore.acceptAnswers = data.payload.acceptAnswers && self.acceptAnswers;
gameStore.setPlayerPoints( data.payload.adjustedPlayer );
if( gameStore.playerId === data.payload.adjustedPlayer._id ){
gameStore.acceptAnswers = data.payload.acceptAnswers && data.payload.adjustedPlayer.acceptAnswers;
} else {
gameStore.acceptAnswers = data.payload.acceptAnswers;
}

View File

@ -28,6 +28,13 @@ export const useGameStore = defineStore('game', {
}
},
actions: {
setPlayerPoints( adjustedPlayer ){
let playerToAdjustIndex = this.players.findIndex( playersEntry => playersEntry._id === adjustedPlayer._id );
if( playerToAdjustIndex !== -1 ){
this.players[playerToAdjustIndex].points = adjustedPlayer.points;
this.players[playerToAdjustIndex].isAnswering = false;
}
},
setPlayerOnIndexChoosing( playerId ){
let playerIndex = this.players.findIndex( playerEntry => playerEntry._id === playerId );
for( let i in this.players ){