X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fmenu.c;h=bd225a4acace832a199389b15cec09d546973d9c;hb=4026d71c7c19a786b09ac0f41ea51bd3e1d1a784;hp=baada0153986310e393d5a96a4c311175e736abf;hpb=a2115940e7643dcb1b87286f3d19fe95f7b79bd3;p=flatwaifu.git diff --git a/src/menu.c b/src/menu.c index baada01..bd225a4 100644 --- a/src/menu.c +++ b/src/menu.c @@ -26,7 +26,6 @@ #include #include "files.h" #include "memory.h" -#include "vga.h" #include "error.h" #include "keyb.h" #include "sound.h" @@ -35,33 +34,32 @@ #include "switch.h" #include "menu.h" #include "misc.h" +#include "render.h" +#include "config.h" +#include "game.h" +#include "player.h" +#include "sound.h" +#include "music.h" -#include "SDL.h" -extern SDL_Surface *screen; +#include +#include #define QSND_NUM 14 enum{HIT100,ARMOR,JUMP,WPNS,IMMORTAL,SPEED,OPEN,EXIT}; -extern int PL_JUMP,PL_RUN; -extern byte _warp,cheat,p_fly; - -extern byte g_music[8]; - -extern byte savname[7][24],savok[7]; -void load_game(int); - -static byte panim[]= - "BBDDAACCDDAABBDDAACCDDAABBDDAACCDDAAEEEEEFEFEFEFEFEFEFEFEFEFEEEEE"; -static byte *panimp=panim; +static byte panim[] = "BBDDAACCDDAABBDDAACCDDAABBDDAACCDDAAEEEEEFEFEFEFEFEFEFEFEFEFEEEEE"; +byte *panimp = panim; +byte _warp; -#define PCOLORN 10 -byte pcolortab[PCOLORN]={ - 0x18,0x20,0x40,0x58,0x60,0x70,0x80,0xB0,0xC0,0xD0 +byte pcolortab[PCOLORN] = { + 0x18, 0x20, 0x40, 0x58, 0x60, 0x70, 0x80, 0xB0, 0xC0, 0xD0 }; -int p1color=5,p2color=4; +int p1color = 5; +int p2color = 4; -static byte ibuf[24],input=0; +char ibuf[24]; +byte input=0; static int icur; enum{MENU,MSG}; @@ -113,7 +111,7 @@ static byte main_typ[]={ SAVE,SAVE,SAVE,SAVE,SAVE,SAVE,SAVE }; -static menu_t main_mnu={ +menu_t main_mnu={ MENU,5,0,80,"MENU",main_txt,main_typ },opt_mnu={ MENU,5,0,75,"OPTIONS",opt_txt,opt_typ @@ -143,27 +141,25 @@ static menu_t main_mnu={ static menu_t *qmsg[3]={&quit1_msg,&quit2_msg,&quit3_msg}; -static menu_t *mnu=NULL; +menu_t *mnu=NULL; +byte gm_redraw=0; -static byte gm_redraw=0; -static int gm_tm=0; short lastkey=0; static void *csnd1,*csnd2,*msnd1,*msnd2,*msnd3,*msnd4,*msnd5,*msnd6; static int movsndt=0; -static vgaimg *msklh[2],*mbarl,*mbarm,*mbarr,*mbaro,*mslotl,*mslotm,*mslotr; static byte cbuf[32]; static snd_t *voc=NULL; static int voc_ch=0; -void GMV_stop(void) { +static void GMV_stop (void) { if(voc) { if(voc_ch) {S_stop(voc_ch);voc_ch=0;} free(voc);voc=NULL; } } -void GMV_say(char *nm) { +void GMV_say (char *nm) { int r,len; snd_t *p; byte *d; @@ -179,7 +175,17 @@ void GMV_say(char *nm) { voc_ch=S_play(voc,-1,1024,255); } -void G_code(void) { +static void GM_set (menu_t *m) { + mnu=m;gm_redraw=1; + if(g_st==GS_GAME) { + //V_setrect(0,SCRW,0,SCRH);V_clr(0,SCRW,0,SCRH,0);//V_setrect(0,320,0,200);V_clr(0,320,0,200,0); + //if(_2pl) {V_setrect(SCRW-120,120,0,SCRH);w_o=0;Z_clrst();w_o=SCRH/2;Z_clrst();}//if(_2pl) {V_setrect(200,120,0,200);w_o=0;Z_clrst();w_o=100;Z_clrst();} + //else {V_setrect(SCRW-120,120,0,SCRH);w_o=0;Z_clrst();}//else {V_setrect(200,120,50,100);w_o=50;Z_clrst();} + //pl1.drawst=pl2.drawst=0xFF;V_setrect(0,SCRW,0,SCRH);//V_setrect(0,320,0,200); + } +} + +void G_code (void) { void *s; s=csnd2; if(memcmp(cbuf+32-5,"IDDQD",5)==0) { @@ -221,25 +227,12 @@ void G_code(void) { Z_sound(s,128); } -void GM_set(menu_t *m) { - mnu=m;gm_redraw=1; - if(g_st==GS_GAME) { - //V_setrect(0,SCRW,0,SCRH);V_clr(0,SCRW,0,SCRH,0);//V_setrect(0,320,0,200);V_clr(0,320,0,200,0); - //if(_2pl) {V_setrect(SCRW-120,120,0,SCRH);w_o=0;Z_clrst();w_o=SCRH/2;Z_clrst();}//if(_2pl) {V_setrect(200,120,0,200);w_o=0;Z_clrst();w_o=100;Z_clrst();} - //else {V_setrect(SCRW-120,120,0,SCRH);w_o=0;Z_clrst();}//else {V_setrect(200,120,50,100);w_o=50;Z_clrst();} - //pl1.drawst=pl2.drawst=0xFF;V_setrect(0,SCRW,0,SCRH);//V_setrect(0,320,0,200); - } -} - -void setgamma(int); - -void GM_command(int c) { +static void GM_command (int c) { switch(c) { case CANCEL: GM_set(NULL);break; case INTERP: - fullscreen=!fullscreen; - V_toggle(); + R_toggle_fullscreen(); GM_set(mnu); break; case MUSIC: @@ -330,33 +323,15 @@ void GM_command(int c) { S_volumemusic(mus_vol-8);break; case MVOLP: S_volumemusic(mus_vol+8);break; - case GAMMAM: setgamma(gammaa-1);break; - case GAMMAP: setgamma(gammaa+1);break; + case GAMMAM: + R_setgamma(R_getgamma() - 1); + break; + case GAMMAP: + R_setgamma(R_getgamma() + 1); + break; } } -/* -byte keychar[2][128]={{ - 0,0,'1','2','3','4','5','6','7','8','9','0','-','=',0,0, - 'Q','W','E','R','T','Y','U','I','O','P','[',']','\r',0,'A','S', - 'D','F','G','H','J','K','L',';','\'',0,0,'\\','Z','X','C','V', - 'B','N','M',',','.','/',0,'*',0,' ',0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,'-',0,0,0,'+',0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -},{ - 0,0,'!','\"','#','$','%',':','&','*','(',')','_','+',0,0, - 'x','x','x','x','x','x','x','x','x','x','x','x','\r',0,'x','x', - 'x','x','x','x','x','x','x','x','x',0,0,0,'x','x','x','x', - 'x','x','x','x','x','?',0,'*',0,' ',0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,'-',0,0,0,'+',0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -}}; -*/ - struct { int keysym; byte ch; @@ -403,8 +378,7 @@ struct { {0} }; -byte get_keychar(int keysym) -{ +static byte get_keychar (int keysym) { int i = 0; while (keychar[i].keysym) { if (keychar[i].keysym == keysym) return keychar[i].ch; @@ -413,18 +387,25 @@ byte get_keychar(int keysym) return 0; } -extern vgapal main_pal,std_pal; -extern byte shot_vga; - -static void shot(void) { +static void shot (void) { +/* static int num=1; - char fn[13]; + char fn[100];//... +#ifndef WIN32 + char *e = getenv("HOME"); + strncpy(fn, e, 60); + sprintf(&fn[strlen(fn)],"/.doom2d-rembo",num); + mkdir(fn, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + sprintf(&fn[strlen(fn)],"/shot%04d.bmp",num); +#else sprintf(fn,"shot%04d.bmp",num); +#endif SDL_SaveBMP(screen, fn); ++num; +*/ } -int GM_act(void) { +int GM_act (void) { byte c; if(mnu==&plcolor_mnu) { @@ -531,7 +512,7 @@ int GM_act(void) { return((mnu)?1:0); } -void G_keyf(int k, int press) { +static void G_keyf (int k, int press) { int i; lastkey=k; @@ -541,7 +522,7 @@ void G_keyf(int k, int press) { } } -void GM_init(void) { +void GM_init (void) { #ifndef DEMO int i; static char nm[QSND_NUM][6]={ @@ -564,69 +545,5 @@ void GM_init(void) { msnd4=Z_getsnd("SWTCHX"); msnd5=Z_getsnd("SUDI"); msnd6=Z_getsnd("TUDI"); - msklh[0]=M_lock(F_getresid("M_SKULL1")); -// msklh[0]=load_vga("vga\\spr.vga","M_SKULL1"); - msklh[1]=M_lock(F_getresid("M_SKULL2")); - mbarl=M_lock(F_getresid("M_THERML")); - mbarm=M_lock(F_getresid("M_THERMM")); - mbarr=M_lock(F_getresid("M_THERMR")); - mbaro=M_lock(F_getresid("M_THERMO")); - mslotl=M_lock(F_getresid("M_LSLEFT")); - mslotm=M_lock(F_getresid("M_LSCNTR")); - mslotr=M_lock(F_getresid("M_LSRGHT")); K_setkeyproc(G_keyf); } - -int GM_draw(void) { - int i,j,k,y; - - ++gm_tm; - V_setrect(0,SCRW,0,SCRH);//V_setrect(0,320,0,200); - if(!mnu && !gm_redraw) return 0; - gm_redraw=0; - if(!mnu) return 1; - if(mnu->type==MENU) { - y=(200-mnu->n*16-20)/2; - Z_gotoxy(mnu->x,y-10);Z_printbf(mnu->ttl); - for(i=0;in;++i) { - if(mnu->t[i]==LOAD || mnu->t[i]==SAVE) { - V_spr(mnu->x,j=y+i*16+29,mslotl); - for(k=8;k<184;k+=8) - V_spr(mnu->x+k,j,mslotm); - V_spr(mnu->x+184,j,mslotr); - Z_gotoxy(mnu->x+4,j-8); - if(input && i==save_mnu.cur) Z_printsf("%s_",ibuf); - else Z_printsf("%s",savname[i]); - }else{ - Z_gotoxy(mnu->x+((mnu->t[i]>=SVOLM)?((mnu->t[i]>=PL1CM)?50:152):0),y+i*16+20); - Z_printbf(mnu->m[i]); - } - if(mnu->t[i]==MUSIC) { - Z_printbf(" '%.8s'",g_music); - }else if(mnu->t[i]==INTERP) { - Z_printbf("%s",fullscreen?"ON":"OFF"); - }else if(mnu->t[i]>=PL1CM) { - V_manspr(mnu->x+((mnu->t[i]==PL1CM)?15:35),y+i*16+20+14, - PL_getspr(*panimp,0), - pcolortab[(mnu->t[i]==PL1CM)?p1color:p2color] - ); - }else if(mnu->t[i]>=SVOLM) { - V_spr(mnu->x,j=y+i*16+20,mbarl); - for(k=8;k<144;k+=8) - V_spr(mnu->x+k,j,mbarm); - V_spr(mnu->x+144,j,mbarr); - switch(mnu->t[i]) { - case SVOLM: k=snd_vol;break; - case MVOLM: k=mus_vol;break; - case GAMMAM: k=gammaa<<5;break; - } - V_spr(mnu->x+8+k,j,mbaro); - } - } - V_spr(mnu->x-25,y+mnu->cur*16+20-8,msklh[(gm_tm/6)&1]); - }else{ - Z_gotoxy((320-strlen(mnu->ttl)*7)/2,90);Z_printsf(mnu->ttl); - Z_gotoxy(136,100);Z_printsf("(Y/N)"); - } - return 1; -}