Closed caronpe closed 9 years ago
J'étais déjà dessus, je finis et je push :)
Je suis également dessus mais en galère..
Oki! N'oubliez pas de créer des issues avant de coder sinon on va merdouiller.
D'ailleurs question : une sortie est un OBSTACLE FRANCHISSABLE ou un type d'obstacle EXIT ? Deuxième question : les obstacles sont liés à la carte donc c'est un attribut d'une carte, ça serait plus facile comme ça nan ?
Je pense qu'il est plus judicieux de créer un nouvelle objet Exit dérivant de Obstacle (ou obstacle franchissable). Pour la deuxiéme question je pense qu'il est judicieux d'inclure un attibut à Map sous forme d'une liste d'objet Exit. (mais bon je suis pas expert en slick2d donc je suis pas le mieux placé pour répondre).
Aprés il faut voir si cette fameuse liste est vraiment utile, puisque si le changement de zone se déroule au moment du passage sur l'objet Exit je doute de l'utilité de le référencer dans l'objet Map.
Oui je créerai l'objet Exit qui dérive d'obstacle (car j'aurais besoin d'attribut non nécessaire dans un Crossable) Cette liste va enfaite m'aider, d'une part à savoir dans quel Map on est, deuzio - à dire vers quel map je me dirige & troizio - affecter des nouvelles coordonnées au personnage après le changement de carte [l'exit est en haut sur la première mais on arrive en bas de la seconde]
VALIDÉ ?
Je ne pense pas que c'est la bonne solution.
Je pense que ces informations sont à stocker dans l'objet Exit directement. En gros: if (Prochaine case == Exit){Déplacer à Exit.Destination}
Les paramètres de destination doivent être stocké dans les propriétés des objets (cf. Tiled), non?
exemple :
x = Float.parseFloat(map.getObjectProperty(0, objectID, "dest-x", Float.toString(x)));
Oui c'est toute à fait ma pensée PE Étienne : Ça c'est le tuto car il dessine des objets vectoriels, je n'ai pas trouvé la même chose pour associer des données sur une case du quadrillage qui compose la carte. C'est pour ça que j'ai élaboré cette solution
J'ai eu le même soucis que toi. En fait il faut télécharger une version plus ancienne de Tiled pour retrouver le même système.
Par contre je comprends pas, actuellement la "porte/sortie" de la première map ne fonctionne pas chez moi. Tu es bloqué comme moi ou c'est censé fonctionner ?
Tu peux me dire le numéro de version ?
Non le système ne fonctionne pas, je l'ai pas encore pusher car pas fini :)
Tu as push les modifs avec la class map... tout mon code n'est plus à jour maintenant... c'est assez problématique.
J'arrive à changer de map avec les triggers (+tes modifs de Map) mais normalement tu modifies la structure du code une fois que cela fonctionne ! pas pendant que l'on code les modifications car là cela change tout !
Mon code fonctionne mais je n'arrive pas à revenir sur la map d'origine soit un problème avec ton index, soit c'est mon trigger.C'est quand même une avancée.
Edit : Dsl double post
Edit 2 : Je pense qu'il faudrait revenir en arrière. La classe "Map" complique tout et n'apporte absolument rien...
Je vais pusher mes modifs là, tous fonctionne tu vas voir, c'est ma partie :)
Voilà c'est fait et ça fonctionne :+1:
c'est un peu réinventer la roue...
Pourquoi ? On attribue des Exits aux salles et voilà, de même tu pourras rajouter des Crossable(s) et en jouant sur leur attribut isCrossable, une fois il passe, une fois il passe pas.
A quoi sert "avantPlan" dans les maps ? s'il est décoché on peut le supprimer non?
Les avantPlan sont des claques qui vont au-dessus du personnage quand il passe dedans, on joue sur la transparence, tu peux voir un vrai avantPlan dans la première Map avec l'herbe par exemple. Même si il n'y a rien dessus, il faut garder cette hiérarchie pour les render :)
C'est réinventer la roue dans le sens où on nous propose une méthode avec "trigger" qui fonctionne avec un même code pour l'ensemble des maps.
Là avec ta méthode il faut rajouter le code de toutes les sorties et toutes les maps du jeu, sans compter les nouvelles classes, méthodes et attributs... pas franchement optimal je trouve dans le sens ou il y avait des outils déjà existant. Il fallait prendre le temps d'apprendre à les utiliser correctement.
EDIT : Ok pour les avantPlan
Je l'ai lu Étienne, j'ai lu les tutos mais cette solution ne nous intéresse pas dans le sens où là, il est obligé de faire ça car il se déplace au pixel près alors que nous, c'est à la case près déjà. Ensuite le code est le même pour chaque EXIT, peu importe la map, c'est la méthode getExitByCoordinate. Tous le code, les attributs, méthodes et tout comme tu dis, sur le tuto, il les fait dans l'éditeur de Map finalement donc il a déporté le problème en quelque sorte.
EDIT : Si tu veux rajouter une exit dynamique, avec ma solution, tu peux. Sur le tuto, faut retravailler la Map, pas franchement idéal....
Effectuer un changement de zone lors du passage sur une zone franchissage (porte)