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) :

Diagramme de séquence du déplacement des Héros