ajout des niveaux
This commit is contained in:
129
src/GestionnaireNiveau.java
Normal file
129
src/GestionnaireNiveau.java
Normal file
@@ -0,0 +1,129 @@
|
||||
package linea;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GestionnaireNiveau {
|
||||
|
||||
public static final int FRAMES_PAR_NIVEAU = 25 * 10; // 10s a 25 FPS (timer 40ms)
|
||||
|
||||
private final List<Niveau> niveaux = new ArrayList<>();
|
||||
private int indexNiveau = 0;
|
||||
private int framesDepuisDebut = 0;
|
||||
private int framesDansNiveau = 0;
|
||||
|
||||
// Duree du fade en frames
|
||||
private static final int DUREE_FADE = 75; // 3 secondes
|
||||
|
||||
public GestionnaireNiveau() {
|
||||
|
||||
// Niveau 1 : lisse, cercle large
|
||||
niveaux.add(new Niveau(1,
|
||||
new Color(0, 73, 220),
|
||||
8, 1 / 80.0, 80, 100, 500));
|
||||
|
||||
// Niveau 2
|
||||
niveaux.add(new Niveau(2,
|
||||
new Color(75, 0, 180),
|
||||
10, 1 / 60.0, 60, 100, 500));
|
||||
|
||||
// Niveau 3
|
||||
niveaux.add(new Niveau(3,
|
||||
new Color(83, 30, 39),
|
||||
12, 1 / 40.0, 50, 100, 500));
|
||||
|
||||
// Niveau 4
|
||||
niveaux.add(new Niveau(4,
|
||||
new Color(20, 100, 40),
|
||||
14, 1 / 30.0, 40, 100, 500));
|
||||
|
||||
// Niveau 5 : chaos, cercle petit
|
||||
niveaux.add(new Niveau(5,
|
||||
new Color(30, 30, 30),
|
||||
16, 1 / 20.0, 30, 100, 500));
|
||||
}
|
||||
|
||||
public void mettreAJour() {
|
||||
framesDepuisDebut++;
|
||||
framesDansNiveau++;
|
||||
|
||||
if (framesDansNiveau >= FRAMES_PAR_NIVEAU && indexNiveau < niveaux.size() - 1) {
|
||||
indexNiveau++;
|
||||
framesDansNiveau = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public Niveau getNiveauActuel() {
|
||||
return niveaux.get(indexNiveau);
|
||||
}
|
||||
|
||||
public int getNumeroNiveau() {
|
||||
return niveaux.get(indexNiveau).numero;
|
||||
}
|
||||
|
||||
public Color getCouleurFondInterpolee() {
|
||||
if (framesDansNiveau < DUREE_FADE && indexNiveau > 0) {
|
||||
Color de = niveaux.get(indexNiveau - 1).couleurFond;
|
||||
Color vers = niveaux.get(indexNiveau).couleurFond;
|
||||
double t = (double) framesDansNiveau / DUREE_FADE;
|
||||
return interpolerCouleur(de, vers, t);
|
||||
}
|
||||
return niveaux.get(indexNiveau).couleurFond;
|
||||
}
|
||||
|
||||
public double getVitesseScroll() {
|
||||
if (framesDansNiveau < DUREE_FADE && indexNiveau > 0) {
|
||||
double de = niveaux.get(indexNiveau - 1).vitesseScroll;
|
||||
double vers = niveaux.get(indexNiveau).vitesseScroll;
|
||||
double t = (double) framesDansNiveau / DUREE_FADE;
|
||||
return de + (vers - de) * t;
|
||||
}
|
||||
return niveaux.get(indexNiveau).vitesseScroll;
|
||||
}
|
||||
|
||||
public double getNoiseFrequence() {
|
||||
if (framesDansNiveau < DUREE_FADE && indexNiveau > 0) {
|
||||
double de = niveaux.get(indexNiveau - 1).noiseFrequence;
|
||||
double vers = niveaux.get(indexNiveau).noiseFrequence;
|
||||
double t = (double) framesDansNiveau / DUREE_FADE;
|
||||
return de + (vers - de) * t;
|
||||
}
|
||||
return niveaux.get(indexNiveau).noiseFrequence;
|
||||
}
|
||||
|
||||
public double getRayonCercle() {
|
||||
if (framesDansNiveau < DUREE_FADE && indexNiveau > 0) {
|
||||
double de = niveaux.get(indexNiveau - 1).rayonCercle;
|
||||
double vers = niveaux.get(indexNiveau).rayonCercle;
|
||||
double t = (double) framesDansNiveau / DUREE_FADE;
|
||||
return de + (vers - de) * t;
|
||||
}
|
||||
return niveaux.get(indexNiveau).rayonCercle;
|
||||
}
|
||||
|
||||
public double getLimiteHaut() {
|
||||
return niveaux.get(indexNiveau).limiteHaut;
|
||||
}
|
||||
|
||||
public double getLimiteBas() {
|
||||
return niveaux.get(indexNiveau).limiteBas;
|
||||
}
|
||||
|
||||
public void reinitialiser() {
|
||||
indexNiveau = 0;
|
||||
framesDepuisDebut = 0;
|
||||
framesDansNiveau = 0;
|
||||
}
|
||||
|
||||
private static Color interpolerCouleur(Color de, Color vers, double t) {
|
||||
int r = (int) (de.getRed() + (vers.getRed() - de.getRed()) * t);
|
||||
int g = (int) (de.getGreen() + (vers.getGreen() - de.getGreen()) * t);
|
||||
int b = (int) (de.getBlue() + (vers.getBlue() - de.getBlue()) * t);
|
||||
return new Color(
|
||||
Math.max(0, Math.min(255, r)),
|
||||
Math.max(0, Math.min(255, g)),
|
||||
Math.max(0, Math.min(255, b))
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user