Début de l'IA pour le NPC, il récupère maintenant les connaissances autour de lui.
J'ai du modifier pas mal de choses pour que ça fonctionne correctement. Les tests passent.
Les connaissances sont maintenant gérés dans une classe particulière.
Suppression du World dans tous les constructeurs : Il faut au maximum séparer les choses. Une entité peut être créée sans forcément appartenir à un monde.
D'où le changement sur la recherche si un nom existe déjà : On regarde dans le DatabaseManager, puisqu'il garde toutes les entités crées. Cela permet d'avoir des entités uniques
tout en laissant la possibilité de créer plusieurs mondes, et déplacer les entités de l'un a l'autre par exemple.
Correction d'un bug dans les Knowledge du Character
Correction d'un bug de Knowledge : le equals retournait trop souvent true, ce qui fait qu'on ne pouvait avoir qu'une seule connaissance (quelque soit le type) sur une entité.
Maintenant 2 Possessions sont égales si elles concernent le même objet au lieu de la même entité. En effet, un objet ne peut être possédé que par une seule entité à la fois,
alors qu'une entité peut posséder plusieurs objets.
Ajout d'un DesireManager (très limité pour le moment), pour gérer les objectifs d'un PNJ
Changement du fonctionnement de Objective, il utilise maintenant un Verb afin de reconnaitre rapidement le désir voulu.
Ajout d'une méthode updateKnowledges() dans Character, afin d'éliminer les connaissances de type Location, si la position est toujours visible, mais que l'entité concerné n'y est plus.
Changement sur l'id de Entity : il est maintenant géré par le DatabaseManager, afin de garder la cohérence entre l'id de l'entité et l'index dans la collection du DatabaseManager.
Attention si vous modifiez les toString(), certaines méthodes l'utilisent par instrospection ce qui peut ne pas afficher d'erreur, mais quand même empêcher le fonctionnement.
Implémentation du lookup d'Item dans DatabaseManager
Last but not least : Nous avons maintenant un PlanLibrary pour les PNJs. Un PNJ qui aura comme désir de posséder des objets (Verb.OWN) va ramasser tout les objets qui se trouvent
dans son champs de vision !!!
ajout de la methode toAsciiArt dans World
Merge branch 'master' of https://github.com/mpattyn/rpg
rectification toAsciiArt et ajout d'un main
ajout Player et UI