Comunque questo è quello che ho capito/imparato:
Al momento il codice è in grado di posizionare in una griglia full screen tutti i tile che voglio con dimensioni 32x32.
Il background è una immagine che si muove dipendentemente dalla direzione del player ad una velocità di molto inferiore
perchè ritrae un paesaggio e quindi genera un pò di prospettiva.
Lo scrolling del background ( bg) si sposta nella direzione opposta a quella del Player. il bg si sposta di n Pixel ogni volta che si muove il player.
Questi n Pixel ( da ora assegnati a OFFsetX ) vengono calcolati in questo modo:
OffSetX = 0;
OffSetY = 0;
if (MAP_WIDTH > WINDOW_WIDTH)
{
/* Ottiene la metà in pixel della finestra window */
int middle = WINDOW_WIDTH / OffSetDiv;
/* Questo offset mantiene il player sempre al centro */
OffSetX = Math.round(middle - X - gridCellWidth);
/* Ottiene la coordinate del lato sinistro */
OffSetX = Math.min(OffSetX, 0);
/* Ottiene la stessa cosa per il lato destro*/
OffSetX = Math.max(OffSetX, WINDOW_WIDTH - MAP_WIDTH);
/* Converte l'offeset in Tile*/
OffSetX /=gridCellWidth;
}
Lo stesso vale per l'asse Y.
Player:
L'offeset OFFSetX convertito in Tile, viene quindi sommato alle coordinate in Tile del Player ( es. X+OffSetX).
La varibaile X rappresenta la coordinata sull'asse X, mentre Y quella dell'asse Y. ( per ora non utilizzata).
Backround:
Al metodo o funzione che si occupa di muovere il BG , viene passato solamente OFFSetX senza alcuna coordinata in quanto il bg occupa tutto l'asse x e inizia il suo rendering quindi dalla posizione 0.
Rendering del livello:
I tile con associata immagine jpg , sono contenuti in un elenco ( Lista) e richiamati all'interno di un ciclo per il rendering
verso le rispettive coordinate in tile posX e posY.
Viene quindi sommato a posX e posY l'offset ( OFFSetX e OFFSetY). In realtà OFFsetY non lo uso per ora.
Il Player per ora non ha gravità , non salta e passa attraverso i tiles :rolleyes:
Tutto questo sopra spiegato permette al Player di muoversi liberamente con l'effetto scrolling.
Con il resto del codice è possibile caricare/salvare il livello , cancellare ogni singolo tile. Rendere visibile/invisibile
la griglia, il toolbox , lo stesso livello.
Il problema è che i tile che compongono il livello si muovono a passi di 32 pixel per volta ( 1 tile) ad ogni passo del Player.
Il Player fa anch'esso un passo pari a 32 pixel. Se decido di dimezzare tale passo, allora i tile del livello si muoveranno
sempre di 32pixel, ma ogni due passi del player.
Player e tile del livello sono legati come visto sopra.