Compare commits

..

No commits in common. "aec84dca5dcde8614f757a12a9c8a783e3ec04c3" and "7c3404acb031c4d8cc5e401406c6d280e6784251" have entirely different histories.

View File

@ -34,8 +34,8 @@ export class AddGameComponent implements OnInit {
team: Team.CONTRA, team: Team.CONTRA,
gamePoints: 0, gamePoints: 0,
finalCardScore: 0, finalCardScore: 0,
// foxesCaught: 1, foxesCaught: 1,
// wonLastTrickWithCharlie: true wonLastTrickWithCharlie: true
}); });
this.potentialPlayers.push({ this.potentialPlayers.push({
firebonkId: 2, firebonkId: 2,
@ -384,18 +384,17 @@ export class AddGameComponent implements OnInit {
calculateCurrentScores(): void { calculateCurrentScores(): void {
let gameScore: number = 0; let gameScore: number = 0;
let winningTeam = this.getWinningTeamAndScore().team;
let winningTeamScore = this.getWinningTeamAndScore().score; let winningTeamScore = this.getWinningTeamAndScore().score;
let unfulfilledAnnouncementPoints = this.checkUnfulfilledAnnouncements(winningTeam, winningTeamScore); let winningTeam = this.getWinningTeamAndScore().team;
let isSoloPlay = this.checkIfSolo(); let unfulfilledAnnouncements = this.checkUnfulfilledAnnouncements(winningTeam, winningTeamScore);
let isSoloPlay = false;
// We are going to calculate the points for the winning team and then set all players points accordingly // We are going to calculate the points for the winning team and then set all players points accordingly
if (unfulfilledAnnouncementPoints === 0) { if(!unfulfilledAnnouncements) {
gameScore += this.calculateNormalScore(winningTeamScore, winningTeam); gameScore += this.calculateNormalScore(winningTeamScore, winningTeam);
} else { } else {
gameScore += unfulfilledAnnouncementPoints; // TODO method to calculate game score for unfulfilled announcements
winningTeam = winningTeam === Team.RE ? Team.CONTRA : Team.RE;
} }
// Double Score in case of announcement // Double Score in case of announcement
@ -407,20 +406,15 @@ export class AddGameComponent implements OnInit {
} }
// Bonus points // Bonus points
if (!isSoloPlay) { if(!isSoloPlay) {
gameScore += this.getFinalFoxPoints(winningTeam); gameScore += this.getFinalFoxPoints(winningTeam);
gameScore += this.getCharliePoints(winningTeam); gameScore += this.getCharliePoints(winningTeam);
} }
this.setGameScores(gameScore, winningTeam, isSoloPlay); // TODO: Game score in case of a solo
this.setGameScores(gameScore, winningTeam);
} }
/**
* Calculate the score according to card points and announcements in case of a "normal" game, so without unfulfilled announcements
* @param winningTeamScore
* @param winningTeam
* @private
*/
private calculateNormalScore(winningTeamScore: number, winningTeam: Team): number { private calculateNormalScore(winningTeamScore: number, winningTeam: Team): number {
let gameScore = 1; // 1 Point for Winning let gameScore = 1; // 1 Point for Winning
@ -508,14 +502,10 @@ export class AddGameComponent implements OnInit {
* @param score The score to set * @param score The score to set
* @param winningTeam The team that won * @param winningTeam The team that won
*/ */
setGameScores(score: number, winningTeam: Team, isSolo: boolean) { setGameScores(score: number, winningTeam: Team) {
for (let player of this.actualPlayers) { for (let player of this.actualPlayers) {
if (player.team === winningTeam) { if (player.team === winningTeam) {
if(isSolo) {
player.gamePoints = score * 3;
} else {
player.gamePoints = score; player.gamePoints = score;
}
} else { } else {
player.gamePoints = -score; player.gamePoints = -score;
} }
@ -567,8 +557,8 @@ export class AddGameComponent implements OnInit {
* @param winningTeam The winning team * @param winningTeam The winning team
*/ */
getCharliePoints(winningTeam: Team): number { getCharliePoints(winningTeam: Team): number {
for (let player of this.actualPlayers) { for(let player of this.actualPlayers) {
if (player.wonLastTrickWithCharlie) { if(player.wonLastTrickWithCharlie) {
return player.team === winningTeam ? 1 : -1; return player.team === winningTeam ? 1 : -1;
} }
} }
@ -576,60 +566,34 @@ export class AddGameComponent implements OnInit {
} }
/** /**
* Checks if the winning team has made announcements that have not been fulfilled. * Checks if the winning team has made announcements that have not been fulfilled
* If so, returns the points that the "losing" team gets for these unfulfilled announcements
* @param normalWinningTeam The team that would have won under normal circumstances * @param normalWinningTeam The team that would have won under normal circumstances
* @param normalWinningTeamScore The card score of said team * @param normalWinningTeamScore The card score of said team
*/ */
checkUnfulfilledAnnouncements(normalWinningTeam: Team, normalWinningTeamScore: number): number { checkUnfulfilledAnnouncements(normalWinningTeam: Team, normalWinningTeamScore: number): boolean {
let gamePoints = 0; if(normalWinningTeam === Team.RE) {
if(this.checkAnnouncementActive(announcements.Announcement.RE_NO_NINETY) && normalWinningTeamScore < 151) {
if (normalWinningTeam === Team.RE) { return true;
if (this.checkAnnouncementActive(announcements.Announcement.RE_NO_NINETY) && normalWinningTeamScore < 151) {
gamePoints++;
} }
if (this.checkAnnouncementActive(announcements.Announcement.RE_NO_SIXTY) && normalWinningTeamScore < 181) { if(this.checkAnnouncementActive(announcements.Announcement.RE_NO_SIXTY) && normalWinningTeamScore < 181) {
gamePoints++; return true;
} }
if (this.checkAnnouncementActive(announcements.Announcement.RE_NO_THIRTY) && normalWinningTeamScore < 211) { if(this.checkAnnouncementActive(announcements.Announcement.RE_NO_THIRTY) && normalWinningTeamScore < 211) {
gamePoints++; return true;
} }
} }
if (normalWinningTeam === Team.CONTRA) { if(normalWinningTeam === Team.CONTRA) {
if (this.checkAnnouncementActive(announcements.Announcement.CONTRA_NO_NINETY) && normalWinningTeamScore < 151) { if(this.checkAnnouncementActive(announcements.Announcement.CONTRA_NO_NINETY) && normalWinningTeamScore < 151) {
gamePoints++; return true;
} }
if (this.checkAnnouncementActive(announcements.Announcement.CONTRA_NO_SIXTY) && normalWinningTeamScore < 181) { if(this.checkAnnouncementActive(announcements.Announcement.CONTRA_NO_SIXTY) && normalWinningTeamScore < 181) {
gamePoints++; return true;
} }
if (this.checkAnnouncementActive(announcements.Announcement.CONTRA_NO_THIRTY) && normalWinningTeamScore < 211) { if(this.checkAnnouncementActive(announcements.Announcement.CONTRA_NO_THIRTY) && normalWinningTeamScore < 211) {
gamePoints++; return true;
} }
} }
return gamePoints; return false;
}
/**
* _____ __
* / ___/____ / /___
* \__ \/ __ \/ / __ \
* ___/ / /_/ / / /_/ /
* /____/\____/_/\____/
*/
/**
* Checks, according to the assigned Teams, if this is a solo play
*/
checkIfSolo(): boolean {
let numberOfElders: number = 0;
for(let player of this.actualPlayers) {
if(player.team === Team.RE) {
numberOfElders++;
}
}
return numberOfElders === 1;
} }
} }