Index: game.c ================================================================== --- game.c +++ game.c @@ -697,10 +697,26 @@ if(replay_size Select Title Play <0-9> Find Cancel",0xF7,0xF0); draw_text(0,8," Wide/Tall ID/Ord",0xF7,0xF0); sqlite3_reset(st); if(mo&1) { scrmax=level_nindex; - draw_text(16,16,mo&2?"\xB3 ID \xB3":"\xB3 ORD \xB3",0xF7,0xF1); + draw_text(16,16,"\xB3 ORD \xB3W \xB3H \xB3 TITLE",0xF7,0xF1); + if(mo&2) draw_text(24,16," ID ",0xF7,0xF1); if(rescroll) { if(sel=scroll+screen->h/8-3) scroll=sel+4-screen->h/8; rescroll=0; } @@ -768,10 +785,16 @@ draw_text(2*8,y,"\xB3",b=0x02,0xF8); } snprintf(buf,6,"%5u",mo&2?sqlite3_column_int(st,0):i); draw_text(3*8,y,buf,b,sqlite3_column_int(st,6)?0xFA:0xFC); draw_text(8*8,y,"\xB3",b,b^0xFA); + snprintf(buf,6,"%2u %2u",sqlite3_column_int(st,3),sqlite3_column_int(st,4)); + draw_text(9*8,y,buf,b,0xFF); + draw_text(11*8,y,"\xB3",b,b^0xFA); + draw_text(14*8,y,"\xB3",b,b^0xFA); + copy_text_to_plain(buf,255,sqlite3_column_text(st,5)); + draw_text(15*8,y,buf,b,0xFF); } } else { scrmax=(level_nindex+columns-1)/columns; draw_text(0,16,mo&2?"(ID)":"(Ord)",0xF7,0xF1); if(rescroll) { @@ -808,11 +831,11 @@ set_cursor(XC_arrow); break; case SDL_KEYDOWN: if((ev.key.keysym.mod&KMOD_NUM) && ev.key.keysym.sym>=SDLK_KP0 && ev.key.keysym.sym<=SDLK_KP9) goto digit; switch(ev.key.keysym.sym) { - case SDLK_ESCAPE: sqlite3_finalize(st); return 0; + case SDLK_ESCAPE: i=0; goto final; //TODO: Change the scroll to approximately the middle, instead of zero case SDLK_F1: scroll=0; mo^=1; rescroll=1; goto redraw; case SDLK_F2: mo^=2; goto redraw; case SDLK_SPACE: title: sqlite3_reset(st); @@ -857,14 +880,11 @@ rescroll=1; goto redraw; case SDLK_HOME: case SDLK_KP7: sel=scroll=0; rescroll=1; goto redraw; case SDLK_END: sel=level_nindex-1; rescroll=1; goto redraw; - case SDLK_RETURN: case SDLK_KP_ENTER: play: - sqlite3_finalize(st); - begin_level(~sel); - return 1; + case SDLK_RETURN: case SDLK_KP_ENTER: play: i=1; goto final; } break; case SDL_MOUSEBUTTONDOWN: if(ev.button.x>=16 && ev.button.y>=24) { if(mo&1) i=scroll+ev.button.y/8-3; @@ -877,11 +897,15 @@ break; case SDL_VIDEOEXPOSE: goto redraw; case SDL_QUIT: exit(0); break; } } - sqlite3_finalize(st); return -1; + i=-1; + final: + sqlite3_finalize(st); + if(i==1) begin_level(~sel); + return i; } static int game_command(int prev,int cmd,int number,int argc,sqlite3_stmt*args,void*aux) { switch(cmd) { case '\' ': // Play a move