378
379
380
381
382
383
384
385
386
387
388
389
390
391
|
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
|
+
|
SDL_Rect r;
int clscroll=0;
int imgscroll=0;
int clcount=0;
int imgcount=0;
int cl=0;
int img=0;
char re=0;
Uint16 cllist[0x4000];
Uint8 imglist[256];
char name[256];
int namei=0;
char buf[4];
int i,j;
sqlite3_stmt*st;
|
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
|
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
|
-
+
+
+
+
+
+
+
+
+
|
scrollbar(&clscroll,screen->h/8,clcount,0,&r);
r.x+=15;
r.h=8;
SDL_LockSurface(screen);
for(i=0;i<screen->h/8;i++) {
if(i+clscroll>=clcount) break;
j=cllist[i+clscroll];
if(j==cl) SDL_FillRect(screen,&r,0xF3);
if(j==cl) SDL_FillRect(screen,&r,0xF3),re=0;
draw_text(r.x,r.y,classes[j]->name,j==cl?0xF3:0xF1,classes[j]->cflags&CF_PLAYER?0xFE:0xFF);
if(j==cl && namei) {
memcpy(name,classes[j]->name,namei);
name[namei]=0;
draw_text(r.x,r.y,name,0xF4,classes[j]->cflags&CF_PLAYER?0xFE:0xFF);
}
r.y+=8;
}
SDL_UnlockSurface(screen);
if(re && cl) {
for(i=0;i<clcount;i++) if(cllist[i]==cl) {
clscroll=i+(clscroll>i?0:1-screen->h/8);
break;
}
re=0;
goto redraw;
}
scrollbar(&imgscroll,screen->h/picture_size,imgcount,0,0);
r.x=14;
r.y=0;
r.w=r.h=picture_size;
for(i=0;i<screen->h/picture_size;i++) {
if(i+imgscroll>=imgcount) break;
j=imglist[i+imgscroll];
|
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
|
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
|
+
+
+
|
if(i<0 || i>=clcount) break;
namei=0;
cl=cllist[i];
setclass:
imgscroll=imgcount=0;
for(i=0;i<classes[cl]->nimages;i++) if(classes[cl]->images[i]&0x8000) imglist[imgcount++]=i;
img=*imglist;
re=1;
} else {
i=imgscroll+ev.button.y/picture_size;
if(i<0 || i>=imgcount) break;
img=imglist[i];
}
if(ev.button.button==3 || ev.button.button==2) add_mru(cl,img);
if(ev.button.button==2) return;
goto redraw;
case SDL_KEYDOWN:
switch(ev.key.keysym.sym) {
case SDLK_HOME: case SDLK_KP7: clscroll=0; goto redraw;
case SDLK_END: case SDLK_KP1: clscroll=clcount-screen->h/8; goto redraw;
case SDLK_PAGEDOWN: case SDLK_KP3: clscroll+=screen->h/8; goto redraw;
case SDLK_PAGEUP: case SDLK_KP9: clscroll-=screen->h/8; goto redraw;
case SDLK_KP_PLUS: clscroll++; goto redraw;
case SDLK_KP_MINUS: clscroll--; goto redraw;
case SDLK_ESCAPE: return;
case SDLK_CLEAR: case SDLK_DELETE: case SDLK_KP_PERIOD: namei=0; goto redraw;
case SDLK_BACKSPACE: if(namei) --namei; goto redraw;
case SDLK_TAB:
if(!cl) break;
strncpy(name,classes[cl]->name,254);
for(j=0;j<clcount;j++) if(cl==cllist[j]) break;
|
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
|
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
|
+
+
|
}
++namei;
}
goto redraw;
case SDLK_LEFT: case SDLK_KP4:
for(i=0;i<imgcount-1;i++) if(img==imglist[i+1]) {
img=imglist[i];
if(imgscroll>i) imgscroll=i;
goto redraw;
}
break;
case SDLK_RIGHT: case SDLK_KP6:
for(i=0;i<imgcount-1;i++) if(img==imglist[i]) {
img=imglist[i+1];
if(imgscroll<i+2-screen->h/picture_size) imgscroll=i+2-screen->h/picture_size;
goto redraw;
}
break;
case SDLK_UP: case SDLK_KP8:
namei=0;
for(i=1;i<clcount;i++) if(cl==cllist[i]) {
cl=cllist[i-1];
|