70 lines
2.7 KiB
TypeScript
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
|
|
} |