[PALIB]Problema con una función que he creado

Hola. Estoy haciendo un programa para la NDS con las LIBs PALIB. Tengo un pequeño problema, ya es muy tarde y estoy ahora mismo ofuscado y no doy con el problema (y la consiguiente solución) :P. Quiero realizar una función que "dibuje" una barra de carga; a dicha función se le pasa como variables el origen (x,y) donde se empieza adibujar dicha barra (la altura ya está establecida a 16); el tamaño o ancho de la barra (tamanyo); y el tanto porciento que está completada (porciento).

Mi problema es que para "dibujar" dicha barra tengo que usar unos sprites de 16x16.

Mi problema llega cuando tengo que dibujar la barra CON EL TAMAÑO EXACTO usando bloques de 16 píxeles de ancho.
Mi solución era primero dibujar el último bloque usando como referencia le tamaño máximo - 16 píxeles; y luego empezar por el primero y dibujar los demás con un "for". El problema llega con el tema de los 16 píxeles. Creo que es porque ya es tarde y llevo todo el día liado con el programa, y mi cabeza pide descanso y no rinde al 100% y no soy capaz de ver el problema :P.

Os pongo aquí el trozo de código que tengo justo en este mismo momento hecho para dicha función, haber si alguno de ustedes me podéis ayudar a corregirlo ^^

El loadingbar01 corresponde a la zona dibujada del tanto porcieto completado.
El loadingbar02 es la barra "vacía".
void loading_bar(int x, int y, int tamanyo, int porciento)
{
int i;
if (porciento!=0){
PA_LoadSpritePal(0, 1, (void*)loadingbar01_Pal);
PA_CreateSprite(0, 0, (void*)loadingbar01_Sprite, OBJ_SIZE_16X16, 1, 1, x+((tamanyo*porciento)/100)-16, y);
for(i=0; i<(((tamanyo*porciento)/100)/16); i=i+1)
{
PA_CreateSprite(0, i+1, (void*)loadingbar01_Sprite, OBJ_SIZE_16X16, 1, 1, x+(i*16), y);
}
}
PA_LoadSpritePal(0, 0, (void*)loadingbar02_Pal);
PA_CreateSprite(0, 0, (void*)loadingbar02_Sprite, OBJ_SIZE_16X16, 1, 0, x+tamanyo-16, y);
for(i=((tamanyo/16)-(((tamanyo*porciento)/100)/16)); i<((tamanyo/16)+1); i=i+1)
{
PA_CreateSprite(0, i+1, (void*)loadingbar02_Sprite, OBJ_SIZE_16X16, 1, 0, x+(i*16), y);
}
}


Gracias.

PD: Este post estaba en NDS/Scene, posteado a las 4:33am, por eso lo de "tarde".
0 respuestas