[Solucionado Punto 3] Problemas con VLF en C

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
Dark_Miguel
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 12 May 2010, 22:26
PSN ID: Ninguna, pronto me creo una....
Ubicación: Spain, Andalucía. Jaén
Contactar:

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por Dark_Miguel »

m0skit0 escribió:Hm pero eso parece sólo el código de la parte "Extras". Me refiero a dónde en el código llamas al submenu "Extras".


Aqui está :D
Spoiler:

Código: Seleccionar todo

int OnMainMenuSelect(int sel)
{
    switch(sel)
    {
        case 0:
            vlfGuiCancelBottomDialog();
         ExampleSelection(0);
        break;
        case 1:
            vlfGuiCancelBottomDialog();
         ExampleSelection(1);
        break;
     
      case 2:
            vlfGuiCancelBottomDialog();
         ExampleSelection(2);
        break;
     
      case 3:
      vlfGuiCancelBottomDialog();
      ExampleSelection(3);
        break;
     
      case 4:
            vlfGuiCancelBottomDialog();
         ExampleSelection(4);
        break;
     
        case 5:
            sceKernelExitGame();
        break;
    }
   
   return VLF_EV_RET_REMOVE_OBJECTS | VLF_EV_RET_REMOVE_HANDLERS;
}
 
Imagen

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por m0skit0 »

¿Y cuál de todos los cases se supone que lleva a los "Extras"? :roll:

PD: por cierto, ya podrías ponerle algún comentario al código. Te apuesto que en 2 meses ni sabes para qué sirve la mitad del código. Acepto apuestas reales :lol:
Imagen

Avatar de Usuario
Dark_Miguel
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 12 May 2010, 22:26
PSN ID: Ninguna, pronto me creo una....
Ubicación: Spain, Andalucía. Jaén
Contactar:

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por Dark_Miguel »

m0skit0 escribió:¿Y cuál de todos los cases se supone que lleva a los "Extras"? :roll:

PD: por cierto, ya podrías ponerle algún comentario al código. Te apuesto que en 2 meses ni sabes para qué sirve la mitad del código. Acepto apuestas reales :lol:


Alaaa copie mal el codigo xDDDDDD, por cierto he ido borrando los comentarios con forme entendia el codigo y lo comprendia :o Aqui te dejo el codido de los case y de los ejemplos de seleción:

Spoiler:

Código: Seleccionar todo


void ExampleSelection(int opt)
{
    if (opt == 0) {
        text = vlfGuiAddText(80, 100, "Has escogido la primera opción.");
        option = opt;
    }
   
   if (opt == 1) {
        text = vlfGuiAddTextF(80, 100, "Has escogido la segunda opción.");
        option = opt;
   }
   
    if (opt == 2) {
        text = vlfGuiAddText(80, 100, "Has escogido la tercera opción." );
        option = opt;
    }
   if (opt == 3) {
      vlfGuiCancelCentralMenu();
      Extras(option);
        option = opt;
   }
   
    if (opt == 4) {
        text = vlfGuiAddText(20, 50, "Creditos:\n\nAgradecimientos:\nEspecialmente a Germax y a Dark_Mizar\n\nProgramación y Diseño:\nDark_Dragon-Black y Germax\n\nPaginas del autor:\nPSP.Station.org y PSP.SceneBeta.Com");
        option = opt;
    }
   
    if (opt == 5) {
        text = vlfGuiAddText(80, 100, "Has escogido la cuarta opción.");
        option = opt;
    }
    vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenu);
}


int OnMainMenuSelect(int sel)
{
    switch(sel)
    {
        case 0:
            vlfGuiCancelBottomDialog();
         ExampleSelection(0);
        break;
        case 1:
            vlfGuiCancelBottomDialog();
         ExampleSelection(1);
        break;
     
      case 2:
            vlfGuiCancelBottomDialog();
         ExampleSelection(2);
        break;
     
      case 3:
      vlfGuiCancelBottomDialog();
      ExampleSelection(3);
        break;
     
      case 4:
            vlfGuiCancelBottomDialog();
         ExampleSelection(4);
        break;
     
        case 5:
            sceKernelExitGame();
        break;
    }
   
   return VLF_EV_RET_REMOVE_OBJECTS | VLF_EV_RET_REMOVE_HANDLERS;
}

Imagen

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por m0skit0 »

Hm, a ver si se pasa soulless por aquí, que yo de VLF cero patatero.

PD: nunca borres los comentarios.
Imagen

soulless
Desarrollador
Desarrollador
Mensajes: 64
Registrado: 23 Oct 2009, 07:56

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por soulless »

Para cargar olas diferentes tienes:
int vlfGuiSetModel(void *data, int size) : carga las olas desde un buffer de un archivo GMO
int vlfGuiSetModelFile(char *file) : carga las olas desde un archivo GMO
int vlfGuiSetModelResource(char *rco, char *name) : carga las olas desde un archivo RCO


Nota: Hasta ahora no conozco ningún programa que exporte/cree archivos .GMO. Así que tu apuesta, creo, ha de ser la 3ra. función, a menos que consigas el código fuente de VLF Lua, que tiene una manera de cargar unas olas desde unos archivos .wv.

Sobre el problema del menú, se soluciona, en todos los casos que he visto, agregando "return VLF_EV_RET_NOTHING;" después de llamar un submenu, pruébalo y nos comentas.

PD: apoyo el consejo de m0skit0 sobre los comentarios :mrgreen:
"Quiero irme cuando quiero. Es de mal gusto prolongar artificialmente la vida. He hecho mi parte, es hora de irse. Yo lo haré con elegancia." -Albert Einstein.-

Avatar de Usuario
Dark_Miguel
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 12 May 2010, 22:26
PSN ID: Ninguna, pronto me creo una....
Ubicación: Spain, Andalucía. Jaén
Contactar:

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por Dark_Miguel »

soulless escribió:Para cargar olas diferentes tienes:
int vlfGuiSetModel(void *data, int size) : carga las olas desde un buffer de un archivo GMO
int vlfGuiSetModelFile(char *file) : carga las olas desde un archivo GMO
int vlfGuiSetModelResource(char *rco, char *name) : carga las olas desde un archivo RCO


Nota: Hasta ahora no conozco ningún programa que exporte/cree archivos .GMO. Así que tu apuesta, creo, ha de ser la 3ra. función, a menos que consigas el código fuente de VLF Lua, que tiene una manera de cargar unas olas desde unos archivos .wv.

Sobre el problema del menú, se soluciona, en todos los casos que he visto, agregando "return VLF_EV_RET_NOTHING;" después de llamar un submenu, pruébalo y nos comentas.

PD: apoyo el consejo de m0skit0 sobre los comentarios :mrgreen:


Excelente, el sub-menú funciona pero al pulsar :circulo: no se borra el submenu y se sobrepone sobre el menu principal :(
Imagen

soulless
Desarrollador
Desarrollador
Mensajes: 64
Registrado: 23 Oct 2009, 07:56

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por soulless »

No se borra porque no estas usando vlfGuiCancelCentralMenu() cuando vuelves al menú principal.
"Quiero irme cuando quiero. Es de mal gusto prolongar artificialmente la vida. He hecho mi parte, es hora de irse. Yo lo haré con elegancia." -Albert Einstein.-

Avatar de Usuario
Dark_Miguel
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 12 May 2010, 22:26
PSN ID: Ninguna, pronto me creo una....
Ubicación: Spain, Andalucía. Jaén
Contactar:

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por Dark_Miguel »

soulless escribió:No se borra porque no estas usando vlfGuiCancelCentralMenu() cuando vuelves al menú principal.


No si hasta ahí llego pero donde lo coloco? Porque al colocarlo en el BackToManMenu lo que hace es ocultar el menú principal cuando yo dentro del () he puesto extras.
Imagen

soulless
Desarrollador
Desarrollador
Mensajes: 64
Registrado: 23 Oct 2009, 07:56

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por soulless »

Dark_Dragon-Black escribió:
soulless escribió:No se borra porque no estas usando vlfGuiCancelCentralMenu() cuando vuelves al menú principal.


No si hasta ahí llego pero donde lo coloco? Porque al colocarlo en el BackToManMenu lo que hace es ocultar el menú principal cuando yo dentro del () he puesto extras.


Así dices vlfGuiCancelCentralMenu(extras)???

Si es así como lo haces esta mal, se debe usar vlfGuiCancelCentralMenu(); y ya, eso cancela el menú que este, lo debes hacer antes de llamar al menú principal.
"Quiero irme cuando quiero. Es de mal gusto prolongar artificialmente la vida. He hecho mi parte, es hora de irse. Yo lo haré con elegancia." -Albert Einstein.-

Avatar de Usuario
Dark_Miguel
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 12 May 2010, 22:26
PSN ID: Ninguna, pronto me creo una....
Ubicación: Spain, Andalucía. Jaén
Contactar:

Re: [Solucionado Punto 3] Problemas con VLF en C

Mensaje por Dark_Miguel »

Perfecto, funciona, de nuevo hay un problema. Mira este código:

Spoiler:

Código: Seleccionar todo


#include <pspsdk.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <psppower.h>
#include <vlf.h>

PSP_MODULE_INFO("TodoInfoPSP", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);

// Callbacks
int ExitCallback(int arg1, int arg2, void *common)
{
    sceKernelExitGame();
    return 0;
}

int CallbackThread(SceSize args, void *argp)
{
    int callback_id;
   
    callback_id = sceKernelCreateCallback("Exit Callback", ExitCallback, NULL);
    sceKernelRegisterExitCallback(callback_id);
   
    sceKernelSleepThreadCB();
   
    return 0;
}

int SetupCallback(void)
{
    int thread_id = 0;
   
    thread_id = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, THREAD_ATTR_USER, 0);
   
    if (thread_id >= 0) {
        sceKernelStartThread(thread_id, 0, 0);
    }
   
    return thread_id;
}

void MainMenu(int sel);
void Extras(int sel);

int text;
int option = 0; // Para recordar la opcion seleccionada
int optionn = 0;
// Menu

int BackToMainMenuEspecial()
{
   vlfGuiCancelCentralMenu();
    vlfGuiRemoveText(text);
    vlfGuiCancelBottomDialog();
   MainMenu(option);
   
    return VLF_EV_RET_NOTHING;
}


int BackToMainMenu()
{
    vlfGuiRemoveText(text);
    vlfGuiCancelBottomDialog();
   MainMenu(option);
   
    return VLF_EV_RET_NOTHING;
}

int BackToMainMenuExtras()
{
    vlfGuiRemoveText(text);
   
   vlfGuiCancelBottomDialog();
   Extras(optionn);
   
    return VLF_EV_RET_NOTHING;
}

void ExampleSelectionExtra(int optt)
{
    if (optt == 0) {
        text = vlfGuiAddText(80, 100, "USB");
        optionn = optt;
    }
    if (optt == 1) {
        text = vlfGuiAddText(80, 100, "DUMP");
        optionn = optt;
    }
   
   vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenuExtras);   

}


int ExtrasSelect(int sel)
{
    switch(sel)
    {
        case 0:
            vlfGuiCancelBottomDialog();
         ExampleSelectionExtra(0);
        break;
        case 1:
            vlfGuiCancelBottomDialog();
         ExampleSelectionExtra(1);
        break;
    }
   return VLF_EV_RET_REMOVE_OBJECTS | VLF_EV_RET_REMOVE_HANDLERS;
}


void Extras(int sel)
{
    //Opciones del menu (texto)
   char *items[] =
   {
      "USB",
      "Dumpear IPL",
     
   };

   vlfGuiCentralMenu(2, items, sel, ExtrasSelect, 0, 0); // Establece el menu
   vlfGuiBottomDialog(-1, VLF_DI_ENTER, 1, 0, VLF_DEFAULT, NULL);
   
}   

void ExampleSelection(int opt)
{
    if (opt == 0) {
        text = vlfGuiAddText(80, 100, "Has escogido la primera opción.");
      vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenu);
        option = opt;
    }
   
   if (opt == 1) {
        text = vlfGuiAddTextF(80, 100, "Has escogido la segunda opción.");
      vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenu);
        option = opt;
   }
   
    if (opt == 2) {
        text = vlfGuiAddText(80, 100, "Has escogido la tercera opción." );
      vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenu);
        option = opt;
    }
   if (opt == 3) {
      vlfGuiCancelCentralMenu();
      Extras(optionn);
     vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenuEspecial);
      option = opt;
   }
   
    if (opt == 4) {
        text = vlfGuiAddText(20, 50, "Creditos:\n\nAgradecimientos:\nEspecialmente a Germax y a Dark_Mizar\n\nProgramación y Diseño:\nDark_Dragon-Black y Germax\n\nPaginas del autor:\nPSP.Station.org y PSP.SceneBeta.Com");
        option = opt;
      vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenu);
    }
   
    if (opt == 5) {
        text = vlfGuiAddText(80, 100, "Has escogido la cuarta opción.");
      vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenu);
        option = opt;
    }
   
}


int OnMainMenuSelect(int sel)
{
    switch(sel)
    {
        case 0:
            vlfGuiCancelBottomDialog();
         ExampleSelection(0);
        break;
        case 1:
            vlfGuiCancelBottomDialog();
         ExampleSelection(1);
        break;
     
      case 2:
            vlfGuiCancelBottomDialog();
         ExampleSelection(2);
        break;
     
      case 3:
      vlfGuiCancelBottomDialog();
      ExampleSelection(3);
     return VLF_EV_RET_NOTHING;
        break;
     
      case 4:
            vlfGuiCancelBottomDialog();
         ExampleSelection(4);
        break;
     
        case 5:
            sceKernelExitGame();
        break;
    }
   
   return VLF_EV_RET_REMOVE_OBJECTS | VLF_EV_RET_REMOVE_HANDLERS;
}

void MainMenu(int sel)
{
   char *items[] =
   {
      "Información PSP",
      "Información Memory Stick",
      "Información de la Bateria",
      "Extras",
      "Creditos",
      "Salir",
     
   }; // Opciones del menu

   vlfGuiCentralMenu(6, items, sel, OnMainMenuSelect, 0, 0); // Establece el menu
   vlfGuiBottomDialog(-1, VLF_DI_ENTER, 1, 0, VLF_DEFAULT, NULL);
   
}


// Aplicacion
int app_main()
{
   void *battery_icon;
    SetupCallback();
   
   
   vlfGuiSetBackgroundSystem(1);
   vlfGuiSetModelSystem(0, 0, 1);
   
   // Variables   
    int icono;
   int titulo;
   titulo = vlfGuiAddText(0,0,"TodoInfoPSP C v1"); // Titulo barra superior
   icono = vlfGuiAddPictureResource("sysconf_plugin", "tex_bar_init_icon", 4, -2);

   
   vlfGuiSetTitleBar(titulo, icono, 1, 1);
   
   
     // Añade el efecto de las ondas
    vlfGuiAddClock(); // Añade el reloj en la esquina superior derecha
    vlfGuiAddBatteryIconSystem(&battery_icon, 10*1000*1000); // Añade el icono de la bateria


    // Cargamos Icono barra superior
   
    // Mostramos menu anteriormente creado
    MainMenu(0);
   
    // Bucle principal
    while(1)
    {
        vlfGuiDrawFrame(); // Mostramos todo por pantalla
    }
   
    sceKernelSleepThread();
    return 0;
}


El problema es que si entro en Extras y salgo, si funciona pero si entro en DUMP (la opción de extras) no sale el boton de atrás.

-----------EDITADO----------------

Ya lo he solucionado.
Imagen

Responder