Page d’Accueuil

La Page d'Accueil (MainPageComponent) constitue le point d'entrée principal de l'application. Elle propose aux utilisateurs différentes options de navigation : créer une partie, rejoindre une partie existante via un code, ou accéder à la gestion des jeux.

MainPageComponent

Propriétés

Propriété Type Description
isJoinGamePopupActive boolean Contrôle l'affichage du popup de saisie de code
isCodeValid boolean Indique si le code saisi est valide
codeErrorMsg string Message d'erreur à afficher si le code est invalide
codeInputs number[] Tableau des indices pour les champs de saisie du code
accessCode string[] Tableau contenant les caractères du code saisi

Méthodes

constructor(router: Router, joinGameService: JoinCharacterCreationService)

Description : Initialise le composant et récupère le tableau des codes d'accès.
Paramètres :

showJoinGamePopup()

Description : Affiche le popup de saisie de code pour rejoindre une partie.
Retour : Aucun

closeJoinGamePopup()

Description : Ferme le popup de saisie de code et réinitialise le code et l'état de validation. Retour : Aucun

onInputChange(event: Event, index: number)

Description : Gère la saisie de chaque caractère du code et déplace le focus au champ suivant.
Paramètres :

onBackspace(event: KeyboardEvent, index: number)

Description : Gère le comportement de la touche Backspace pour revenir au champ précédent.
Paramètres :

async redirectToCharacterCreation()

Description : Vérifie la validité du code et redirige vers la page de création de personnage si le code est valide.
Retour : Aucun
Détails : Utilise le service JoinCharacterCreationService pour valider le code et le routeur pour la redirection.

redirectToGames()

Description : Redirige vers la page d'administration des jeux.
Retour : Aucun

redirectToGameCreation()

Description : Redirige vers la page de création de partie.
Retour : Aucun

Éléments HTML importants

Composants utilisés

ButtonComponent

Composant personnalisé pour les boutons de l'application avec un style cohérent.

Propriétés

Propriété Type Description
@Input() text string Texte à afficher sur le bouton
@Input() icon string Icône Material Design à afficher
@Input() ngStyle { [key: string]: string } Styles CSS supplémentaires à appliquer

Utilisation dans MainPageComponent

Les trois boutons principaux utilisent ce composant avec des styles et icônes différents :

Services utilisés

JoinCharacterCreationService

Service responsable de la gestion de la saisie et validation des codes pour rejoindre une partie existante.

Propriétés

Propriété Type Description
accessCode string[] Tableau contenant les caractères du code saisi

Méthodes

constructor(private socketService: SocketService)

Description : Initialise le service avec le service socket pour la communication avec le serveur.
Paramètres :

onInputChange(event: Event, index: number)

Description : Gère la saisie d'un caractère du code d'accès et déplace le focus au champ suivant.
Paramètres :

Retour : Aucun

onBackspace(event: KeyboardEvent, index: number)

Description : Gère le comportement de la touche Backspace pour revenir au champ précédent.
Paramètres :

Retour : Aucun

isCodeComplete()

Description : Vérifie si tous les champs du code ont été remplis.
Retour : boolean - Vrai si le code est complet, faux sinon

async isCodeValid()

Description : Vérifie si le code saisi est valide pour rejoindre une partie.
Retour : Promise<{ valid: boolean; message: string }> - Résultat de la validation avec un message

async isCharacterCreationAccessible(gameCode: string)

Description : Vérifie auprès du serveur si la partie est accessible avec le code fourni. Paramètres :

getAccessCodeArray()

Description : Récupère le tableau des caractères du code.
Retour : string[] - Tableau des caractères du code

getAccessCode()

Description : Récupère le code sous forme de chaîne.
Retour : string - Code complet

resetAccessCode()

Description : Réinitialise le code d'accès.
Retour : Aucun

Communication avec le Serveur

Le service JoinCharacterCreationService communique avec le serveur via Socket.IO lors de la validation du code:

  1. Émission : SocketIOEvents.JoinCharacterCreation avec le code de partie
  2. Réception : Plusieurs événements possibles:
    • SocketIOEvents.LimitReached: La limite de joueurs est atteinte
    • SocketIOEvents.GameLocked: La partie est verrouillée
    • SocketIOEvents.RoomValidation: Validation générale du code (succès/échec)

Cette communication permet de vérifier si le code entrée correspond à une partie existante, disponible et non verrouillée avant de rediriger l'utilisateur vers la page de création de personnage pour cette partie.

Navigation

La Page d'Accueil peut rediriger vers:

  1. Page de Création de Personnage (CharacterCreationPageComponent) - Lorsqu'un code valide est saisi
  2. Page de Création de Partie (GameCreationPageComponent) - Lorsque le bouton "CRÉER UNE PARTIE" est cliqué
  3. Page d'Administration (AdminPageComponent) - Lorsque le bouton "GÉRER LES JEUX" est cliqué