Files
football-drawing/src/app/models/canvas.model.ts

70 lines
2.7 KiB
TypeScript

export interface TimelineStep {
startTime: number; // Le temps de début en millisecondes
endTime: number; // Le temps de fin en millisecondes
startX: number; // Position de départ de l'élément sur l'axe X
startY: number; // Position de départ de l'élément sur l'axe Y
endX: number; // Position de fin de l'élément sur l'axe X
endY: number; // Position de fin de l'élément sur l'axe Y
duration: number; // Temps d'animation (en secondes ou ticks)
}
export interface Rectangle {
x: number; // Position X du centre du rectangle de l'élément
y: number; // Position Y du centre du rectangle de l'élément
width: number; // longueur de l'élément
height: number; // largeur de l'élément
}
export interface Circle {
id: number; // Identifiant unique de l'élément
x: number; // Position X du centre du cercle de l'élément
y: number; // Position Y du centre du cercle de l'élément
radius: number; // Rayon du cercle de l'élément
isDragging: boolean;
isMoving: boolean;
progress: number; // Paramètre de progression sur la courbe
startX: number;
startY: number;
timeline: TimelineStep[]; // Stockage des étapes d'animation
currentStepIndex: number; // Suivre l'étape actuelle dans la timeline
}
export interface Circle2 {
x: number; // Position X du centre du cercle de l'élément
y: number; // Position Y du centre du cercle de l'élément
radius: number; // Rayon du cercle de l'élément
}
export interface Piquet {
id: number; // Identifiant unique de l'élément
design: Rectangle; // Design du piquet
isDragging: boolean; // Flag de déplacement du piquet
}
export interface Plot {
id: number; // Identifiant unique de l'élément
design: Circle2; // Design du plot
isDragging: boolean; // Flag de déplacement du plot
}
export interface Ball {
id: number; // Identifiant unique de l'élément
design: Circle2; // Design du ballon
isDragging: boolean; // Flag de déplacement du ballon
isMoving: boolean; // Flag d'animation du ballon
progress: number; // Paramètre de progression sur la courbe
steps: TimelineStep[]; // Stockage des étapes d'animation
currentStepIndex: number; // Suivre l'étape actuelle dans la timeline
attachedToPlayer: Player | null; // Le joueur auquel le ballon est attaché
}
export interface Player {
id: number; // Identifiant unique de l'élément
design: Circle2; // Design du Joueur
isDragging: boolean; // Flag de déplacement du joueur
isMoving: boolean; // Flag d'animation du joueur
progress: number; // Paramètre de progression sur la courbe
hasBall: boolean; // Indique si le joueur a le ballon
steps: TimelineStep[]; // Stockage des étapes d'animation
currentStepIndex: number; // Suivre l'étape actuelle dans la timeline
}