Anuncios Google

ayuda por favor en VLF de C

hola necesito ayuda en VLF en C quiero crear submenus pero no lo logro como lo hace el ultrapandora installer v4.0 de marce_80 por favor ayudeme coders de esta comunidad.

#include <pspsdk.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h> 
#include <vlf.h>
 
PSP_MODULE_INFO("VLF", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
 
// Llamada de salida
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);
 
int texto;
int opcion = 0;
 
int BackToMainMenu()
{
    vlfGuiRemoveText(texto);
    vlfGuiCancelBottomDialog();
	MainMenu(opcion);
 
    return VLF_EV_RET_NOTHING;
}
 
// Opciones de cada menu
void ExampleSelection(int opc)
{
    // Boton para atras
    vlfGuiBottomDialog(VLF_DI_BACK, -1, 1, 0, VLF_DEFAULT, BackToMainMenu);
 
}
 
// Seleccion de cada menu
int OnMainMenuSelect(int sel)
{
    switch(sel)
    {
        // Opcion 1       
        case 0:
            vlfGuiCancelBottomDialog();
            ExampleSelection(0);
        break;
 
        // Opcion 2
        case 1:
            vlfGuiCancelBottomDialog();
            ExampleSelection(1);
        break;
 
        // Opcion 3 
        case 2:
            vlfGuiCancelBottomDialog();
            ExampleSelection(2);
        break;
 
		// Opcion 4
        case 3:
            vlfGuiCancelBottomDialog();
            ExampleSelection(3);
        break;
 
		// Opcion 5
        case 4:
            vlfGuiCancelBottomDialog();
            ExampleSelection(4);
        break;
 
		// Opcion 6
        case 5:
            vlfGuiCancelBottomDialog();
            ExampleSelection(5);
        break;
 
		// Opcion 7
        case 6:
            vlfGuiCancelBottomDialog();
            ExampleSelection(6);
        break;
 
		// Opcion 8
        case 7:
            vlfGuiCancelBottomDialog();
            ExampleSelection(7);
        break;
    }
 
    return VLF_EV_RET_REMOVE_OBJECTS | VLF_EV_RET_REMOVE_HANDLERS;
}
 
void MainMenu(int sel) 
{
 
    //Opciones del menu (texto) 
	char *menu[] =
	{
	    "Menu 1",
        "Menu 2",
        "Menu 3",
        "Menu 4",
        "Menu 5",
        "Menu 6",
        "Menu 7",
	"Menu 8",
        "Menu 9"
	};
	vlfGuiCentralMenuSelection(8, menu, sel, OnMainMenuSelect, 0, 0);
 
    // menu central
	vlfGuiCentralMenu(8, menu, sel, OnMainMenuSelect, 0, 0);
 
	// mensaje inferior
	vlfGuiBottomDialog(-1, VLF_DI_ENTER, 1, 0, VLF_DEFAULT, NULL);
}
 
 
// Aplicacion
int app_main()
{
    // Variables
    int titulo = vlfGuiAddText(0,0,"Programs PSP v1.0"); 
    int icono;
    void *icono_bateria;
 
    // Callbacks
    SetupCallback();
 
	vlfGuiSetBackgroundPlane(0x000000);
	vlfGuiSetModelSystem();	
    vlfGuiAddClock();    
    vlfGuiAddBatteryIconSystem(&icono_bateria, 10*1000*1000);
	icono = vlfGuiAddPictureResource("sysconf_plugin", "tex_bar_init_icon", 4, -2);
	vlfGuiSetTitleBarEx(titulo, icono, 1, 0, 0x152654);
    MainMenu(0);
 
 
 
    while(1)
    {
        vlfGuiDrawFrame();
    }
    sceKernelSleepThread();
    return 0;
}


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de pspgorrister

Consejo

Bueno, yo no te puedo ayudar con lo del menú, porque lo toqué hace tiempo y ya estoy muy verde xDDD

Lo que sí te puedo decir es que tu función OnMainMenuSelect() es la cosa más horrible que he visto en varios días por aquí :P

// Seleccion de cada menu
int OnMainMenuSelect(int sel)
{
    switch(sel)
    {
        // Opcion 1       
        case 0:
            vlfGuiCancelBottomDialog();
            ExampleSelection(0);
        break;
 
        // Opcion 2
        case 1:
            vlfGuiCancelBottomDialog();
            ExampleSelection(1);
        break;
 
        // Opcion 3 
        case 2:
            vlfGuiCancelBottomDialog();
            ExampleSelection(2);
        break;
 
		// Opcion 4
        case 3:
            vlfGuiCancelBottomDialog();
            ExampleSelection(3);
        break;
 
		// Opcion 5
        case 4:
            vlfGuiCancelBottomDialog();
            ExampleSelection(4);
        break;
 
		// Opcion 6
        case 5:
            vlfGuiCancelBottomDialog();
            ExampleSelection(5);
        break;
 
		// Opcion 7
        case 6:
            vlfGuiCancelBottomDialog();
            ExampleSelection(6);
        break;
 
		// Opcion 8
        case 7:
            vlfGuiCancelBottomDialog();
            ExampleSelection(7);
        break;
    }
 
    return VLF_EV_RET_REMOVE_OBJECTS | VLF_EV_RET_REMOVE_HANDLERS;
}

Todo ese código redundante lo puedes resumir en:

// Seleccion de cada menu
int OnMainMenuSelect(int sel)
{
   vlfGuiCancelBottomDialog();
   ExampleSelection(sel);
    return VLF_EV_RET_REMOVE_OBJECTS | VLF_EV_RET_REMOVE_HANDLERS;
}


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.