C_StyleAgent (affichage des images) / I_data (liste d’états d’un agent) / C_InspecteurImage (gestionnaire des images) / A_VisibleAgent / I_sim_constants
Le dialogue avec le context se fait après l’ajout des agents au context (à partir de la méthode build()). Dans le document xml du display dans lequel on veut utiliser le style, il faut modifier la ligne dans styles/entry. On a alors une première ligne qui correspond au path de l'agent, et une seconde qui est le path de son style. Il suffit d'écrire le package.class correspondant pour l'appliquer à la simulation.
Pour modifier l’icône d’un agent, on ne passe plus par le 2D Shape Editor. L’affichage est géré par C_StyleAgent et les images par C_InspecteurImage.
· C’est le système épiphyte qui gère les images, par le biais de la classe C_InspecteurImage.
· L’inspecteur d’images est instancié à l’initialisation, dans le ContextCreator, afin d’être disponible le plus tôt possible. Il charge toutes les images qui pourront être utilisées au cours de la simulation. Ceci permet de gagner du temps de calcul durant cette dernière.
· C_StyleAgent initialise l'icône des agents avec la méthode getVSpatial(). Un VSpatial peut être une image ou une forme géométrique. Repast appelle cette méthode à chaque pas de temps et pour chaque agent. De plus, ces derniers possèdent tous leur VSpatial, inclus dans une liste gérée par Repast. Pour créer un VSpatial il faut utiliser un ShapeFactory2D et sa méthode createImage(String id, BufferedImage img) ou createCircle(float radius, int slices). L'id des VSpatial doit être différent pour chaque appelle de createImage(…). De ce fait, on peut prendre l'id de l'agent à qui il appartient ainsi que son âge pour le définir. L'image en paramètre est choisie grâce à C_InspecteurImage.selectIcon().
· Si on utilise la représentation par les images, on utilise la méthode createImage(...) dans getVSpatial() ;
· Si on utilise la représentation par les ellipses, le VSpatial retourné dans getVSpatial() est créé au début de la simulation mais ne sera plus modifié dans cette classe. C'est la fonction getColor() qui va mettre à jour la couleur de l'ellipse à l'aide de C_InspecteurImage.getColor();
Schéma: Diagramme de classes de gestion des images
retour aux mémos retour au modèle retour à la page d'accueil