Ok, separei as funções entre "Carregar Background", "Exibir Background" e "Destruir Background". O problema é na hora de exibir. Essa demo que estou fazendo se trata de quatro backgrounds, como se fossem as paredes de uma sala. Quando o usuário coloca o cursor na margem esquerda ou direita, e clica, vai para a tela correspondente (e isso dá certo tranquilo).
O problema é na hora de exibir uma seta para o usuário, indicando que ele está na posição correta. Segue o código:
void DesenharSala(ALLEGRO_BITMAP *background1, ALLEGRO_BITMAP *background2, ALLEGRO_BITMAP *background3, ALLEGRO_BITMAP *background4, int numero, ALLEGRO_DISPLAY_MODE disp_data)
{
if(numero == 0)
al_draw_scaled_bitmap(background1,0,0,XBKG,YBKG,0,0,disp_data.width,disp_data.height,0);
else
if(numero == 1)
al_draw_scaled_bitmap(background2,0,0,XBKG,YBKG,0,0,disp_data.width,disp_data.height,0);
else
if(numero == 2)
al_draw_scaled_bitmap(background3,0,0,XBKG,YBKG,0,0,disp_data.width,disp_data.height,0);
else
al_draw_scaled_bitmap(background4,0,0,XBKG,YBKG,0,0,disp_data.width,disp_data.height,0);
}
void DesenharSeta(ALLEGRO_BITMAP *seta, ALLEGRO_DISPLAY_MODE disp_data, int lugar)
{
if(lugar == DIREITA)
al_draw_bitmap(seta, disp_data.width - 130, disp_data.height / 2, ALLEGRO_FLIP_HORIZONTAL);
else
al_draw_bitmap(seta, 0, disp_data.height / 2, 0);
}
O problema parece ser onde colocar a função "al_flip_display()". Se coloco antes da seta, ela não aparece, se coloco depois, o background some e fica só a seta.