Transition entite to element dynamique

This commit is contained in:
Amaury Joly 2020-12-04 15:42:35 +01:00
parent f05bd67d8f
commit 6515ac97c6
4 changed files with 19 additions and 25 deletions

View File

@ -1,9 +1,6 @@
package modele.calculs;
import modele.donnees.ElementFond;
import modele.donnees.ElementPhysique;
import modele.donnees.Entite;
import modele.donnees.EntiteDynamique;
import modele.donnees.*;
import java.awt.*;
@ -28,8 +25,8 @@ public class Controle4Directions extends RealisateurDeDeplacement {
public boolean realiserDeplacement() {
boolean ret = false;
for (Entite e : lstEntitesDynamiques) {
if (directionCourante != null)
for (ElementDynamique e : lstEntitesDynamiques) {
if (e instanceof Entite && directionCourante != null)
switch (directionCourante) {
case gauche:
case droite:
@ -38,19 +35,11 @@ public class Controle4Directions extends RealisateurDeDeplacement {
break;
case bas:
case haut:
ElementFond ef = e.regarderDerriereSoit();
ElementFond ef = ((Entite) e).regarderDerriereSoit();
if(ef != null && ef.peutPermettreDeMonterDescendre()) {
ret = e.avancerDirectionChoisie(directionCourante);
}
/*
// on ne peut pas sauter sans prendre appui
// (attention, test d'appui réalisé à partir de la position courante, si la gravité à été appliquée, il ne s'agit pas de la position affichée, amélioration possible)
ElementPhysique eBas = e.regarderDansLaDirection(Direction.bas);
if (eBas != null && eBas.peutServirDeSupport()) {
if (e.avancerDirectionChoisie(Direction.haut))
ret = true;
}*/
break;
}
}

View File

@ -7,13 +7,15 @@ public class Gravite extends RealisateurDeDeplacement {
public boolean realiserDeplacement() {
boolean ret = false;
for (Entite e : lstEntitesDynamiques) {
ElementPhysique eBas = e.regarderDansLaDirection(Direction.bas);
ElementFond eFond = e.regarderDerriereSoit();
if(!(eFond != null && eFond.peutPermettreDeMonterDescendre())
&& eBas == null || (eBas != null && !eBas.peutServirDeSupport())) {
if (e.avancerDirectionChoisie(Direction.bas))
ret = true;
for (ElementDynamique e : lstEntitesDynamiques) {
if(e instanceof Entite) {
ElementPhysique eBas = ((Entite) e).regarderDansLaDirection(Direction.bas);
ElementFond eFond = ((Entite) e).regarderDerriereSoit();
if (!(eFond != null && eFond.peutPermettreDeMonterDescendre())
&& eBas == null || (eBas != null && !eBas.peutServirDeSupport())) {
if (e.avancerDirectionChoisie(Direction.bas))
ret = true;
}
}
}

View File

@ -1,5 +1,6 @@
package modele.calculs;
import modele.donnees.ElementDynamique;
import modele.donnees.Entite;
import modele.donnees.EntiteDynamique;
@ -9,8 +10,8 @@ import java.util.ArrayList;
Tous les déplacement sont déclenchés par cette classe (gravité, controle clavier, IA, etc.)
*/
public abstract class RealisateurDeDeplacement {
protected ArrayList<Entite> lstEntitesDynamiques = new ArrayList<Entite>();
protected ArrayList<ElementDynamique> lstEntitesDynamiques = new ArrayList<ElementDynamique>();
protected abstract boolean realiserDeplacement();
public void addEntiteDynamique(Entite ed) {lstEntitesDynamiques.add(ed);};
public void addEntiteDynamique(ElementDynamique ed) {lstEntitesDynamiques.add(ed);};
}

View File

@ -1,5 +1,7 @@
package modele.donnees;
public interface ElementDynamique {
import modele.calculs.Direction;
public interface ElementDynamique {
boolean avancerDirectionChoisie(Direction d);
}