Déplacement des Héros - HelmDefense/HelmDefense GitHub Wiki
Le déplacement des héros
Le déclenchement
La méthode move(Dir dir)
des héros est appelée tous les ticks où l'un des contrôles de déplacement de héros est enfoncé par le joueur. C'est le contrôleur des niveaux (LevelController
) qui s'occupe de cela.
La méthode
Présentation
Cette méthode est assez intéressante du point de vue de la séquence car elle met en place une première vérification (si le héros est vivant), puis réalise quelques traitements avec des appels variés, refait une nouvelle vérification (la position nouvellement calculée est valide) et enfin termine sur une action sans retour.
Le code
La méthode est la suivante :
public void move(Dir dir) {
if (! this.isAlive())
return;
Location loc = dir.n(this.getLoc(), this.stat(Attribute.MVT_SPD) / GameLoop.TPS * this.getLevel().getGameloop().getSpeedness());
if (loc.isInMap(this.getHitbox().getSize()))
this.teleport(loc);
}
Le diagramme de séquence
Voici le diagramme de séquence simplifié (au niveau des appels enchaînés pour obtenir la vitesse de jeu et la taille de l'entité, et la méthode stat(Attribute)
qui calcule les AttributeModifier
présents sur l'entité afin de renvoyer la statistique actuelle) :