Celà fait longtemps que je veux réaliser un jeu du royaume, c'est à dire un jeu où l'on gère un domaine quelconque (oui, c'est le nom originel de ce genre de jeux). Eh bon, après environ 25 ans, me voilà à l'ouvrage.

dimanche 29 janvier 2012

Une case qui dépasse

Si vous avez l'oeil, vous avez pu remarquer, dans la liste des bouts de forêt, que certaines images sont plus grandes que d'autres :


La numéro 7, par exemple, est visiblement plus haute.

En fait, c'est parce qu'un problème, auquel je n'avais pas pensé, m'est tombé sur le crâne.
J'avais, fort logiquement, commencé par afficher les images de manière tout à fait normale, en leur donnant des coordonnées. En clair, je mettais leurs coordonnées sur leur style LEFT et TOP. Gauche et Dessus.

Ça paraissait logique, jusqu'à ce que je comprenne que non, en fait.

Parce que, vous l'imaginez, une image a peu de raisons de dépasser sa case par le dessous, d'autant qu'il y a déjà un sous-sol inclu, et que Ratsodie affiche les cases plus au sud par dessus (il commence par le coin Nord-Ouest de la carte, puis fait chaque ligne l'une après l'autre jusqu'à arriver au coin Sud-Est).

Par contre, les raisons de dépasser par le dessus (le Nord, quoi) sont nombreuses. Le premier que j'ai vu fut la forêt : Si un arbre pousse tout en haut de la case, son sommet va, logiquement, dépasser le haut de la case.

Et cela sera la même chose avec les montagnes, les villes, etc.

Comment faire ?

Parce que le problème, voyez-vous, ce n'est pas qu'une image soit plus grande que la case où elle est sensée s'afficher. C'est que puisque Ratsodie affiche les images par leur haut ("style.top"), comme on fait habituellement, il va mettre le haut de l'image en haut de la case... et repousser tout le reste de l'image vers le bas.

Je ne sais pas si je suis bien clair, alors un petit dessin :


Dans le premier cas, vous voyez un petit damier de six cases.
Comme vous pouvez le constater, la case rose, ayant la même taille que ses voisines, s'insère parfaitement dans le damier.

Dans le second damier, vous pouvez voir que la case rose est plus haute. Mais comme Ratsodie l'affiche en l'alignant par le haut (style.top=coordonnée de l'image), l'image est repoussée vers le bas, ce qui n'est pas ce que je veux puisque c'est le sommet des arbres qui dépasse, pas leurs racines !

Moi, ce que je veux, c'est comme dans le troisième damier : Ratsodie aligne l'image sur ses voisines, mais par le bas ! Et ainsi, si quelque chose doit dépasser, ce sera par le haut.

La solution m'a tarabusté un petit peu, jusqu'à ce que je trouve ceci : On PEUT aligner une image par le bas. Au lieu de "style.top", on fait "style.bottom", et voilà.

C'est bête, mais encore fallait-il le savoir.



Aucun commentaire:

Enregistrer un commentaire