program friki_music_gp2x;

CONST
     max_instrumentos=8;
     columnas=3;
     filas=3;

GLOBAL
      estado;      //0 = esperando (menu de instrumentos)
                   //1 = en ejecución (instrucciones)
                   //2 = en ejecución (instrumento)
                   //3 = ejecutar menu principal
                   //4 = ejecutando menu principal
                   //5 = leer instrucciones
                   //6 = instrucciones en ejecucion
                   //7 = ejecutar creditos
                   //8 = creditos en ejecucion
                   //99= salir
      graficos1;
      
      //Variables del menu
      compatibilidad[1];
      ctes_compatibilidad[max_instrumentos][1];
      opcion;

include "gp2x_keys.inc";
include "portada.inc";
include "instructions.inc";
include "credits.inc";
include "cursor.inc";
include "guitar.inc";
include "drums.inc";
include "flute.inc";
include "violin.inc";
include "harp.inc";
include "ocarina2.inc";
include "xilophon.inc";
include "glass2.inc";
include "trumpet.inc";

begin
     full_screen=false;
     set_mode(320,240,16);
     set_fps(50,0);
     dump_type=1;
     restore_type=1;
     sound_freq=44100;
     sound_mode=0;
     //sound_mode=mode_mono;
     set_title("Algo raro");
     
     estado=3;
     //instrucciones();
     while (estado!=99)
           switch (estado)
           case 0:
              game();
              estado=1;
           end
           case 3:
                portada();
                estado=4;
           end
           case 5:
                instrucciones();
                estado=6;
           end
           case 7:
                creditos();
                estado=8;
           end
           end
           if (key(_esc)) estado=99; end
           frame;
     end
     let_me_alone();
end

//***********************************************************************
//  MENU PRINCIPAL
//***********************************************************************
function init_compatibilidad ()
begin
     ctes_compatibilidad[0][0]=90;
     ctes_compatibilidad[0][1]=100;
     ctes_compatibilidad[1][0]=90;
     ctes_compatibilidad[1][1]=90;
     ctes_compatibilidad[2][0]=100;
     ctes_compatibilidad[2][1]=10;
     ctes_compatibilidad[3][0]=0;
     ctes_compatibilidad[3][1]=90;
     ctes_compatibilidad[4][0]=0;
     ctes_compatibilidad[4][1]=100;
     ctes_compatibilidad[5][0]=100;
     ctes_compatibilidad[5][1]=10;
     ctes_compatibilidad[6][0]=50;
     ctes_compatibilidad[6][1]=90;
     ctes_compatibilidad[7][0]=90;
     ctes_compatibilidad[7][1]=100;
     ctes_compatibilidad[8][0]=80;
     ctes_compatibilidad[8][1]=10;
     return;
end

process barra (x,y,temp)
begin
     file=graficos1;
     graph=2;
     loop
         if (size_y>compatibilidad[temp]) size_y--; end
         if (size_y<compatibilidad[temp]) size_y++; end
         frame;
     end
end

process game ()
private
       ant_left;
       ant_right;
       ant_up;
       ant_down;
       hijos[1];
begin
     set_text_color(rgb(255,255,255));
     init_compatibilidad();
     graficos1=load_fpg("menu.fpg");
     file=graficos1;
     put(graficos1,1,0,120);
     compatibilidad[0]=100;
     compatibilidad[1]=100;
     hijos[0]=barra(25,190,0);
     hijos[1]=barra(40,190,1);
     put(graficos1,5,320,240);
     put(graficos1,6,125,50);
     put(graficos1,7,200,50);
     put(graficos1,8,275,50);
     put(graficos1,9,125,120);
     put(graficos1,10,200,120);
     put(graficos1,11,275,120);
     put(graficos1,12,125,190);
     put(graficos1,13,200,190);
     put(graficos1,14,275,190);
     //write_int(0,10,10,0,&opcion);
     while (!key(_control))
           if (!ant_left && key(_left))
              ant_left=true;
              opcion--;
              if (opcion<0) opcion=max_instrumentos+1; end
           end
           if (ant_left && !key(_left)) ant_left=false; end
           if (!ant_right && key(_right))
              ant_right=true;
              opcion++;
              if (opcion>max_instrumentos+1) opcion=0; end
           end
           if (ant_right && !key(_right)) ant_right=false; end
           if (!ant_up && key(_up))
              ant_up=true;
              if (opcion==max_instrumentos+1) opcion--;
              else opcion-=columnas;
              end
              //if (opcion<0) opcion=(filas*columnas)+opcion; end
              if (opcion<0) opcion=max_instrumentos+1; end
           end
           if (ant_up && !key(_up)) ant_up=false; end
           if (!ant_down && key(_down))
              ant_down=true;
              opcion+=columnas;
              //if (opcion>max_instrumentos+1) opcion=(opcion-1)%columnas; end
              if (opcion=>max_instrumentos+1+columnas) opcion=columnas-1; end
              if (opcion>max_instrumentos+1) opcion=max_instrumentos+1; end
              
           end
           if (ant_down && !key(_down)) ant_down=false; end
           
           //if (opcion<0) opcion=opcion+max_instrumentos+1; end
           //if (opcion>max_instrumentos+1) opcion=opcion-(max_instrumentos); end
           
           compatibilidad[0]=ctes_compatibilidad[opcion][0];
           if (opcion<=max_instrumentos)
              x=125+75*(opcion%columnas);
              y=50+70*(opcion/columnas);
              graph=3;
              compatibilidad[0]=ctes_compatibilidad[opcion][0];
              compatibilidad[1]=ctes_compatibilidad[opcion][1];
           else
               x=269;
               y=240;
               graph=4;
               compatibilidad[0]=0;
               compatibilidad[1]=0;
           end
           
           frame;
     end
     
     signal(hijos[0],s_kill);
     signal(hijos[1],s_kill);
     unload_fpg(graficos1);
     clear_screen();
     if (opcion==max_instrumentos+1)
        estado=99;
     else
         switch (opcion)
         case 0: intro_guitarra(); end
         case 1: intro_bateria(); end
         case 2: intro_flauta(); end
         case 3: intro_violin(); end
         case 4: intro_arpa(); end
         case 5: intro_ocarina(); end
         case 6: intro_xilofono(); end
         case 7: intro_vaso(); end
         case 8: intro_trompeta(); end
         end
     end
     
end
