@seeme: , c'est gentil
@LittleWhite: aller, pour te faire plaisir :
Le monde du jeu de base était programmé dans les fichiers de données par troncons et chaque bloc représenté bien entendu une partie du monde.
A l'époque cela était fait pour charger qu'une partie du monde à la fois pour des raisons de performance.
De nos jours, cela n'est pas nécessaire, mais je me suis dit que cela ne pouvait pas faire de mal.
Du coup, nettoyage au balai oblige, la classe Map ne donne plus un accès direct aux cellules mais il faut toujours passer par une fonction getCell. Personne n'accéde directement au tableau à part cette fonction.
Par contre, vu que certaines maps autorisent que le map soient extensible sur la gauche (on peut aller du bord gauche vers le bord droite directement), il faut pouvoir gérer la demande de la cellule (-1,-1) par exemple.
Et oui, pour le moment je triche . J'ai en fait tout charger. Mais il est simple de faire à la fin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Cell *Map::getCell (int i, int j) { int signedSizeX = sizeX; int signedSizeY = sizeY; //Depending on wrap around parameter, we do different things if (wrapAround == false) { if (i < 0 || j < 0 || i >= signedSizeY || j >= signedSizeX) return NULL; } else { //Wrap around if (i >= signedSizeY) i -= sizeY; if (j >= signedSizeX) j -= sizeX; while (i < 0) i += sizeY; while (j < 0) j += sizeX; } return cells[i][j]; }
Mais histoire de vous faire sourire, voici quelques screenshots :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (cells[i][j] == NULL) loadNewBlock (i, j); return cells[i][j];
Devant le château :
Avec une vue d'ensemble :
Effectivement, il faut que je m'occupe des soucis de performances puisqu'on baisse de facon significative dans cette vue.
Jc
Partager