Os cuelgo un test ya con el sistema de scroll, a mi me da casi 17 mil procesos, joder la verdad es que me ha costado hacer que esto del scroll sea eficiente, al final he tenido problemas tecnicos con las Z y he tenido que recurrir a los consejos que me comentaste CicTec, sobre hacer varios barridos de la coleccion de procesos y en cada barrido renderizar unos y luego en otros barridos renderizar otros y luego en otro barrido ejecutar el codigo de los procesos, al final he podido dejarlo medio decente, pero tenias razon tio.. tiene tela marinera esto de ordenar todos los procesos en el orden correcto.. y mas cuando unos tienen que pintarse encima de otros pero ejecutarse en otro orden jeje..
Bueno os dejo el test del scroll.. es muy basico, haber cuantos procesos os crea a vosotros, para ser mas real también reproduce un archivo .ogg en stream.. así se tiene una vision mas real de lo que consume una aplicación de este tipo.
El source del programa es este, mañana colgaré todo el entorno actualizado con la nueva versión de la libreria y el video tutorial con la explicación del sistema de camaras y scroll, pero por el codigo vereis que es super sencillo.
Comentar que se puede hacer zoom al scroll y girarlo muy facilmente
[Codebox=cpp file=Untitled.cpp]/* BASIC SCROLL TEMPLATE */
#include "gameLibZero.cpp"
// Global var block..
int st = 0;
images img;
sounds snd;
musics mus;
//--------------------------------------------------------------------------------------
void setup(){
setMode(640, 400);
//ToggleFullscreen();
setTitle("gameLibZero C++ TUTORIAL 00");
setFps(60);
loadImages("data/images", &img);
loadSounds("data/sounds", &snd);
loadMusics("data/musics", &mus);
}
//--------------------------------------------------------------------------------------
class personaje : public sprite{
public:
void frame(){
//screenDrawText(GetFontDefault(), 22, "Ejemplo scroll", CENTER, 320, 20, WHITE, 255);
if(key(KEY_LEFT)){
addVx(-10);
}
if(key(KEY_RIGHT)){
addVx(10);
}
if(key(KEY_UP)){
addVy(-10);
}
if(key(KEY_DOWN)){
addVy(10);
}
}
};
//--------------------------------------------------------------------------------------
class cosa : public sprite{
public:
int st = 0;
void frame(){
}
};
//--------------------------------------------------------------------------------------
void draw(){
screenDrawText(GetFontDefault(), 22, (int)sprites.size(), RIGHT, 10, 10, WHITE, 255);
switch(st){
case 0:
{
setGravity(0,0);
setDamping(0.4);
setBackgroundColor(BLACK);
playMusic(mus[1]);
st = 10;
}
break;
case 10:
{
// call personaje..
personaje* a = new personaje();
a->graph = img[1];
a->visible = true;
a->x = rand(0, 320);
a->y = rand(0,200);
a->physicsEntityBuild(TYPE_BOX, STONE);
a->scene = true;
a->setCamera((sprite*)a);
a->z = 0;
st = 20;
}
break;
case 20:
{
if(GetFPS() > 58){
for(int i=0;i<10;i++){
// call cosa..
cosa* b = new cosa();
b->graph = img[2];
b->visible = true;
b->x = rand(0, GetScreenWidth());
b->y = rand(0, GetScreenHeight());
b->scene = true;
b->z = 10;
}
}
}
break;
default:
//..
break;
}
}[/Codebox]
Ahora tengo una pregunta,he visto que ponias las variables musics,images etc..Estas variables tienen el mismo nombre que las carpetas del proyecto,esto quiere decir que tengo que poner siempre el tipo images para variables de imagen o el tipo cambia segun el nombre de la carpeta.
@Hokuto: images sounds y musics son tipos de variable como por ejemplo int float o string, las carpetas pueden llamarse como tu quieras jeje.. solo es cargarlas así:
[Codebox=cpp file=Untitled.cpp]images myImageArray;
loadImages("mi directorio de imagens", &myImageArray);[/Codebox]
DESCARGA ACTUALIZADA DEL ENTORNO COMPLETO:
https://www.dropbox.com/s/54a7xq9gq0avc ... P.zip?dl=0