Add "team selection" page to "add game" component
This commit is contained in:
		
							parent
							
								
									f69f7f1731
								
							
						
					
					
						commit
						bed8992ddd
					
				| 
						 | 
				
			
			@ -9,13 +9,19 @@
 | 
			
		|||
			<button (click)="switchToNextPage()" [disabled]="not4Players()">Next</button>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div id="announcements" class="visible-{{this.currentPage === 1}}">
 | 
			
		||||
			<p>Players: {{getPlayerNamesAsString()}}</p>
 | 
			
		||||
			<p>Select the announcements for this game:</p>
 | 
			
		||||
			<div class="active-{{isAnnouncementActive(announcement)}}" *ngFor="let announcement of getAllPossibleAnnouncements()" (click)="toggleAnnouncement(announcement)">{{announcement.toString()}}</div>
 | 
			
		||||
			<p id="announcement-warn" *ngIf="!checkAnnouncementsValid()">Illegal set of announcements!</p>
 | 
			
		||||
			<button (click)="switchToNextPage()" [disabled]="!checkAnnouncementsValid()">Next</button>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div id="player-teams" class="visible-{{this.currentPage === 2}}">
 | 
			
		||||
 | 
			
		||||
			<p>Players: {{getPlayerNamesAsString()}}</p>
 | 
			
		||||
			<p>Highest Announcements: {{getHighestAnnouncements()}}</p>
 | 
			
		||||
			<p>Please select the elder(s):</p>
 | 
			
		||||
			<div class="elder-player-{{isPlayerElder(player)}}" *ngFor="let player of actualPlayers" (click)="toggleElderPlayer(player)">{{player.firstName}}</div>
 | 
			
		||||
			<p id="team-warn" *ngIf="!checkValidTeamAssignment()">Illegal game teams!</p>
 | 
			
		||||
			<button (click)="switchToNextPage()" [disabled]="!checkValidTeamAssignment()">Next</button>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div id="player-points" class="visible-{{this.currentPage === 3}}">
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@
 | 
			
		|||
	color: $inactive;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#player-amount-warn {
 | 
			
		||||
#player-amount-warn, #announcement-warn, #team-warn {
 | 
			
		||||
	color: $warn;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +32,10 @@
 | 
			
		|||
	display: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#announcement-warn {
 | 
			
		||||
	color: $warn;
 | 
			
		||||
.elder-player-false {
 | 
			
		||||
	color: $inactive;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.elder-player-true {
 | 
			
		||||
	color: $active;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
import {Component, OnInit} from '@angular/core';
 | 
			
		||||
import {Player} from '../../models/doppelkopf/player';
 | 
			
		||||
import * as Announcement from '../../models/doppelkopf/enums/announcement';
 | 
			
		||||
import {Team} from '../../models/doppelkopf/enums/team';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
	selector: 'app-add-game',
 | 
			
		||||
| 
						 | 
				
			
			@ -100,6 +101,18 @@ export class AddGameComponent implements OnInit {
 | 
			
		|||
		return this.actualPlayers.length !== 4;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Returns the names of the active players as a comma-separated string
 | 
			
		||||
	 */
 | 
			
		||||
	getPlayerNamesAsString(): string {
 | 
			
		||||
		let playerNames = '';
 | 
			
		||||
		for(let player of this.actualPlayers) {
 | 
			
		||||
			playerNames += player.firstName + ', ';
 | 
			
		||||
		}
 | 
			
		||||
		// Remove last ", "
 | 
			
		||||
		return playerNames.substring(0, playerNames.length-2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 *      ___                                                                 __
 | 
			
		||||
	 *    /   |  ____  ____  ____  __  ______  ________  ____ ___  ___  ____  / /______
 | 
			
		||||
| 
						 | 
				
			
			@ -142,4 +155,50 @@ export class AddGameComponent implements OnInit {
 | 
			
		|||
	checkAnnouncementsValid(): boolean {
 | 
			
		||||
		return Announcement.checkValidity(this.selectedAnnouncements);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	getHighestAnnouncements(): string {
 | 
			
		||||
		return Announcement.returnTwoHighestAnnouncements(this.selectedAnnouncements);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 *   ______
 | 
			
		||||
	 *  /_  __/__  ____ _____ ___  _____
 | 
			
		||||
	 *   / / / _ \/ __ `/ __ `__ \/ ___/
 | 
			
		||||
	 *  / / /  __/ /_/ / / / / / (__  )
 | 
			
		||||
	 * /_/  \___/\__,_/_/ /_/ /_/____/
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Toggles the players team
 | 
			
		||||
	 * @param player The player to toggle the team for
 | 
			
		||||
	 */
 | 
			
		||||
	toggleElderPlayer(player: Player): void {
 | 
			
		||||
		if(player.team === Team.RE) {
 | 
			
		||||
			player.team = Team.CONTRA;
 | 
			
		||||
		} else {
 | 
			
		||||
			player.team = Team.RE;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Checks if the player is an elder
 | 
			
		||||
	 * @param player The player to check
 | 
			
		||||
	 */
 | 
			
		||||
	isPlayerElder(player: Player): boolean {
 | 
			
		||||
		return player.team === Team.RE;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Checks if the current team assignment is valid
 | 
			
		||||
	 */
 | 
			
		||||
	checkValidTeamAssignment(): boolean {
 | 
			
		||||
		let numberOfElderPlayers: number = 0;
 | 
			
		||||
		for(let player of this.actualPlayers) {
 | 
			
		||||
			if(player.team === Team.RE) {
 | 
			
		||||
				numberOfElderPlayers++;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return !(numberOfElderPlayers !== 1 && numberOfElderPlayers !== 2);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,3 +69,43 @@ export function checkValidity(selectedAnnouncements: Announcement[]): boolean {
 | 
			
		|||
	// all fine, return true
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function returnTwoHighestAnnouncements(selectedAnnouncements: Announcement[]): string {
 | 
			
		||||
	let finalString: string = '';
 | 
			
		||||
 | 
			
		||||
	// First check "RE" announcements
 | 
			
		||||
	if(selectedAnnouncements.indexOf(Announcement.RE_NO_THIRTY) !== -1) {
 | 
			
		||||
		finalString += Announcement.RE_NO_THIRTY;
 | 
			
		||||
	} else if (selectedAnnouncements.indexOf(Announcement.RE_NO_SIXTY) !== -1) {
 | 
			
		||||
		finalString += Announcement.RE_NO_SIXTY;
 | 
			
		||||
	} else if (selectedAnnouncements.indexOf(Announcement.RE_NO_NINETY) !== -1) {
 | 
			
		||||
		finalString += Announcement.RE_NO_NINETY;
 | 
			
		||||
	} else if (selectedAnnouncements.indexOf(Announcement.RE) !== -1) {
 | 
			
		||||
		finalString += Announcement.RE;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// If there was a "RE" announcement, add a ", " so we can list the CONTRA announcement properly
 | 
			
		||||
	if(finalString !== '') {
 | 
			
		||||
		finalString += ', ';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Now check "CONTRA"
 | 
			
		||||
	if(selectedAnnouncements.indexOf(Announcement.CONTRA_NO_THIRTY) !== -1) {
 | 
			
		||||
		finalString += Announcement.CONTRA_NO_THIRTY;
 | 
			
		||||
	} else if (selectedAnnouncements.indexOf(Announcement.CONTRA_NO_SIXTY) !== -1) {
 | 
			
		||||
		finalString += Announcement.CONTRA_NO_SIXTY;
 | 
			
		||||
	} else if (selectedAnnouncements.indexOf(Announcement.CONTRA_NO_NINETY) !== -1) {
 | 
			
		||||
		finalString += Announcement.CONTRA_NO_NINETY;
 | 
			
		||||
	} else if (selectedAnnouncements.indexOf(Announcement.CONTRA) !== -1) {
 | 
			
		||||
		finalString += Announcement.CONTRA;
 | 
			
		||||
	} else {
 | 
			
		||||
		// Remove the last two chars from the finalString (", ")
 | 
			
		||||
		finalString = finalString.substring(0, finalString.length-2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(finalString === '') {
 | 
			
		||||
		finalString = 'None';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return finalString;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
export enum Team {
 | 
			
		||||
	RE = 0,
 | 
			
		||||
	KONTRA = 1
 | 
			
		||||
	CONTRA = 1
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user