Ajout methodes dans jeu : regarder derriere soit + retirer item

This commit is contained in:
Amaury Joly 2020-12-04 15:43:09 +01:00
parent 6515ac97c6
commit 8c5f7c987c

View File

@ -105,41 +105,53 @@ public class Jeu {
Point positionEntite = map.get(e);
return fondALaPosition(positionEntite);
}
public ElementPhysique regarderDevantSoit(ElementFond e) {
Point positionEntite = map.get(e);
return objetALaPosition(positionEntite);
}
/** Si le déplacement de l'entité est autorisé (pas de mur ou autre entité), il est réalisé
* Sinon, rien n'est fait.
*/
public boolean deplacerEntite(Entite e, Direction d) {
public boolean deplacerEntite(ElementDynamique e, Direction d) {
boolean retour = false;
Point pCourant = map.get(e);
Point pCible = pCourant;
if(d != null)
pCible = calculerPointCible(pCourant, d);
Point pCible = calculerPointCible(pCourant, d);
if (contenuDansGrille(pCible) && objetALaPosition(pCible) == null) { // a adapter (collisions murs, etc.)
if (contenuDansGrille(pCible) && objetALaPosition(pCible) == null && e instanceof Entite) { // a adapter (collisions murs, etc.)
// compter le déplacement : 1 deplacement horizontal et vertical max par pas de temps par entité
Entite ent = (Entite) e;
switch (d) {
case bas:
case haut:
if (cmptDeplV.get(e) == null) {
cmptDeplV.put(e, 1);
if (cmptDeplV.get(ent) == null) {
cmptDeplV.put(ent, 1);
retour = true;
}
break;
case gauche:
case droite:
if (cmptDeplH.get(e) == null) {
cmptDeplH.put(e, 1);
if (cmptDeplH.get(ent) == null) {
cmptDeplH.put(ent, 1);
retour = true;
}
break;
}
}
if (retour) {
deplacerEntite(pCourant, pCible, e);
if (retour) {
deplacerEntite(pCourant, pCible, ent);
}
} else if (e instanceof modele.donnees.Items) {
retour = true;
retirerItem(pCourant, (modele.donnees.Items) e);
}
return retour;
@ -165,6 +177,11 @@ public class Jeu {
grilleEntites[pCible.x][pCible.y][0] = e;
map.put(e, pCible);
}
private void retirerItem(Point pCourant, modele.donnees.Items elt) {
grilleEntites[pCourant.x][pCourant.y][1] = null;
map.put((ElementDynamique) elt, new Point(-1, -1));
}
/** Indique si p est contenu dans la grille
*/