void bott_disp_text_proc(void **pp,long *ss) { char *p,*text; int y = 20; int xx,yy; text = alloca(strlen(bott_text)+2); set_font(H_FBOLD,NOSHADOW(0)); zalamovani(bott_text,text,390,&xx,&yy); RedirectScreen(bott_clear()); if (battle && cur_mode == MD_INBATTLE) put_picture(0,0,ablock(H_BATTLE_BAR)); else put_picture(0,0,ablock(H_DESK)); create_frame(70,20,400,50,1); p = text; do { position(70,y); outtext(p); y += text_height(p); p = strchr(p,0)+1; } while (p[0]); *pp = GetScreenAdr(); *ss = _msize(*pp); RestoreScreen(); }
GUI::~GUI() { RestoreScreen(); if (SavedScreen) free(SavedScreen); ::ConDone(); gui = 0; }
int GUI::ShowEntryScreen() { TEvent E; ConHideMouse(); RestoreScreen(); do { gui->ConGetEvent(evKeyDown, &E, -1, 1, 0); } while (E.What != evKeyDown); ConShowMouse(); if (frames) frames->Repaint(); return 1; }
static void bott_fletna_normal(void **pp,long *s) { word *bott_scr; int i,x; bott_scr = bott_clear(); RedirectScreen(bott_scr); put_picture(0,0,ablock(H_FLETNA_BAR)); set_font(H_FTINY,RGB555(31,31,0)); set_aligned_position(103,52,1,1,texty[174]);outtext(texty[174]); for(i = 0,x = 156;i<12;i++,x += 22) { set_aligned_position(x,32,1,1,texty[180+i]);outtext(texty[180+i]); } *pp = GetScreenAdr(); *s = _msize(*pp); RestoreScreen(); }
/* View a remote file through your pager. */ int DoPage(char *remoteName) { FILE *fp; int result; longstring pageCmd; int binaryPage; XferSpecPtr xp; binaryPage = MakePageCmdLine(pageCmd, sizeof(pageCmd), remoteName); DebugMsg("%s page: %s\n", binaryPage ? "Binary" : "Ascii", pageCmd ); fp = POpen(pageCmd, "w", 1); if (fp == NULL) { Error(kDoPerror, "Could not run %s.\n", pageCmd); return -1; } xp = InitXferSpec(); xp->netMode = kNetReading; xp->outStream = fileno(fp); /* This group is needed for the progress reporting and logging stuff. * Otherwise, it isn't that important. */ xp->doReports = kNoReports; xp->localFileName = kLocalFileIsStdout; xp->remoteFileName = remoteName; if (!binaryPage) { /* Try to use text mode for paging, so newlines get converted. */ result = AsciiGet(xp); } else { /* Must use binary, or else zcat will complain about corrupted * input files, since we'd be converting carriage-returns. */ result = BinaryGet(xp); } DoneWithXferSpec(xp); (void) PClose(fp); RestoreScreen(1); return (result); } /* DoPage */
int main( int argc, char** argv ) { int i, total, mode, base, rendered_glyphs; char filename[128 + 4]; char alt_filename[128 + 4]; char* execname; long t, t0, tz0; execname = argv[0]; gray_render = 0; visual = 0; while ( argc > 1 && argv[1][0] == '-' ) { switch ( argv[1][1] ) { case 'g': gray_render = 1; break; case 'v': visual = 1; break; default: Panic( "Unknown argument '%s'!\n", argv[1] ); } argc--; argv++; } if ( argc != 2 ) { fprintf( stderr, "fttimer: simple performance timer -- part of the FreeType project\n" ); fprintf( stderr,"-----------------------------------------------------------------\n\n" ); fprintf( stderr,"Usage: %s [-g] [-v] fontname[.ttf|.ttc]\n\n", execname ); fprintf( stderr," where '-g' asks for gray-levels rendering\n" ); fprintf( stderr," '-v' displays while rendering (slower)\n" ); exit( EXIT_FAILURE ); } i = strlen( argv[1] ); while ( i > 0 && argv[1][i] != '\\' ) { if ( argv[1][i] == '.' ) i = 0; i--; } filename[128] = '\0'; alt_filename[128] = '\0'; strncpy( filename, argv[1], 128 ); strncpy( alt_filename, argv[1], 128 ); if ( i >= 0 ) { strncpy( filename + strlen( filename ), ".ttf", 4 ); strncpy( alt_filename + strlen( alt_filename ), ".ttc", 4 ); } /* Initialize engine */ if ( (error = TT_Init_FreeType( &engine )) ) Panic( "Error while initializing engine, code = 0x%x.\n", error ); /* Load face */ error = TT_Open_Face( engine, filename, &face ); if ( error == TT_Err_Could_Not_Open_File ) { strcpy( filename, alt_filename ); error = TT_Open_Face( engine, alt_filename, &face ); } if ( error == TT_Err_Could_Not_Open_File ) Panic( "Could not find/open %s.\n", filename ); else if ( error ) Panic( "Error while opening %s, error code = 0x%x.\n", filename, error ); /* get face properties and allocate preload arrays */ TT_Get_Face_Properties( face, &properties ); num_glyphs = properties.num_Glyphs; tab_glyphs = MAX_GLYPHS; if ( tab_glyphs > num_glyphs ) tab_glyphs = num_glyphs; /* create glyph */ error = TT_New_Glyph( face, &glyph ); if ( error ) Panic( "Could not create glyph container.\n" ); /* create instance */ error = TT_New_Instance( face, &instance ); if ( error ) Panic( "Could not create instance for %s.\n", filename ); error = TT_Set_Instance_CharSize( instance, 400*64 ); if ( error ) Panic( "Could not reset instance for %s.\n", filename ); if ( gray_render ) mode = Graphics_Mode_Gray; else mode = Graphics_Mode_Mono; if ( visual ) { if ( !SetGraphScreen( mode ) ) Panic( "Could not set graphics mode.\n" ); TT_Set_Raster_Gray_Palette( engine, gray_palette ); } else { /* This is the default bitmap size used */ vio_Width = 640; vio_Height = 450; } Init_Engine(); Num = 0; Fail = 0; total = num_glyphs; base = 0; rendered_glyphs = 0; t0 = 0; /* Initial time */ tz0 = Get_Time(); while ( total > 0 ) { /* First, preload 'tab_glyphs' in memory */ cur_glyph = 0; cur_point = 0; cur_contour = 0; printf( "loading %d glyphs", tab_glyphs ); for ( Num = 0; Num < tab_glyphs; Num++ ) { error = LoadTrueTypeChar( base + Num ); if ( error ) Fail++; total--; } base += tab_glyphs; if ( tab_glyphs > total ) tab_glyphs = total; printf( ", rendering... " ); /* Now, render the loaded glyphs */ t = Get_Time(); for ( Num = 0; Num < cur_glyph; Num++ ) { if ( (error = ConvertRaster( Num )) ) Fail++; else { rendered_glyphs ++; if ( visual ) { sprintf( Header, "Glyph: %5d", Num ); Display_Bitmap_On_Screen( Bit.bitmap, Bit.rows, Bit.cols ); Clear_Buffer(); } } } t = Get_Time() - t; if ( t < 0 ) t += 100L * 60 * 60; printf( " = %f s\n", (double)t / 1000 ); t0 += t; /* Now free all loaded outlines */ for ( Num = 0; Num < cur_glyph; Num++ ) TT_Done_Outline( &outlines[Num] ); } tz0 = Get_Time() - tz0; if ( visual ) RestoreScreen(); TT_Close_Face( face ); printf( "\n" ); printf( "rendered glyphs = %d\n", rendered_glyphs ); printf( "render time = %f s\n", (double)t0 / 1000 ); printf( "fails = %d\n", Fail ); printf( "average glyphs/s = %f\n", (double)rendered_glyphs / t0 * 1000 ); printf( "total timing = %f s\n", (double)tz0 / 1000 ); printf( "Fails = %d\n", Fail ); TT_Done_FreeType( engine ); exit( EXIT_SUCCESS ); /* for safety reasons */ return 0; /* never reached */ }
int GUI::ConSuspend(void) { RestoreScreen(); return ::ConSuspend(); }
int SerialConfig(void) { short key; short field; int rval = 0; char *args[MAXARGS]; int argcount; char string[MAXARGS*2][12]; int i; int level; sinfo = serialinfo; // save copy of modeminfo SaveScreen(); DrawPup(&cserial); // // Set defaults // sinfo.skillLevel = 3; DrawRadios(&sskillg); sinfo.episode = 1; #ifndef DOOM2 DrawRadios(&sepig); #endif sinfo.deathMatch = 1; DrawRadios(&sdeathg); sinfo.comport = comport; DrawRadios(&scomg); while(1) { SetupMenu(&cserialmenu); field = GetMenuInput(); key = menukey; switch ( key ) { case KEY_ESC: rval = -1; goto func_exit; // // Secret WARP code: F5+warp // case KEY_F1: { level = WarpTime(); if (!level) continue; serialinfo = sinfo; M_SaveDefaults(); RestoreScreen(); argcount = 1; args[0] = "sersetup.exe "; if (cdrom) args[argcount++] = "-cdrom"; args[argcount++] = "-skill"; sprintf(string[argcount],"%d",serialinfo.skillLevel); args[argcount] = string[argcount]; argcount++; if (!level) { #ifndef DOOM2 args[argcount++] = "-episode"; sprintf(string[argcount],"%d",serialinfo.episode); args[argcount] = string[argcount]; argcount++; #endif } else { args[argcount++] = "-warp"; #ifdef DOOM2 sprintf(string[argcount],"%d",level); args[argcount] = string[argcount]; #else sprintf(string[argcount],"%d",level>>8); args[argcount] = string[argcount]; argcount++; sprintf(string[argcount],"%d",level&0x0f); args[argcount] = string[argcount]; #endif argcount++; } if (serialinfo.deathMatch) args[argcount++] = "-deathmatch"; if (nomonsters) args[argcount++] = "-nomonsters"; if (respawn) args[argcount++] = "-respawn"; if (deathmatch2 && serialinfo.deathMatch) args[argcount++] = "-altdeath"; sprintf(string[argcount],"-com%d",serialinfo.comport); args[argcount] = string[argcount]; argcount++; for (i = 1;i < myargc; i++) args[argcount++] = myargv[i]; args[argcount] = NULL; textbackground(0); textcolor(7); clrscr(); execv("sersetup.exe",args); // // ERROR EXECing! // printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); exit(1); } break; exitandsave: case KEY_F10: serialinfo = sinfo; M_SaveDefaults(); RestoreScreen(); argcount = 1; args[0] = "sersetup.exe "; if (cdrom) args[argcount++] = "-cdrom"; args[argcount++] = "-skill"; sprintf(string[argcount],"%d",serialinfo.skillLevel); args[argcount] = string[argcount]; argcount++; if (serialinfo.deathMatch) args[argcount++] = "-deathmatch"; #ifndef DOOM2 args[argcount++] = "-episode"; sprintf(string[argcount],"%d",serialinfo.episode); args[argcount] = string[argcount]; argcount++; #endif sprintf(string[argcount],"-com%d",serialinfo.comport); args[argcount] = string[argcount]; argcount++; for (i = 1;i < myargc; i++) args[argcount++] = myargv[i]; args[argcount] = NULL; textbackground(0); textcolor(7); clrscr(); execv("sersetup.exe",args); // // ERROR EXECing! // printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); exit(1); case KEY_ENTER: case 32: switch ( field ) { #ifndef DOOM2 // // Episode // case SER_EPISODE0: case SER_EPISODE1: case SER_EPISODE2: sinfo.episode = field - SER_EPISODE0 + 1; DrawRadios(&sepig); break; #endif // // Skill level // case SER_SKILL1: case SER_SKILL2: case SER_SKILL3: case SER_SKILL4: sinfo.skillLevel = field - SER_SKILL1 + 2; break; // // Deathmatch // case SER_DEATHNO: case SER_DEATHYES: sinfo.deathMatch = field - SER_DEATHNO; break; // // COM port // case SER_COM1: case SER_COM2: case SER_COM3: case SER_COM4: comport = sinfo.comport = field - SER_COM1 + 1; break; default: break; } DrawRadios(&sskillg); DrawRadios(&sdeathg); DrawRadios(&scomg); break; } } func_exit: RestoreScreen(); return ( rval ); }
int ChooseController (void) { short key; short field; int rval = 0; SaveScreen(); DrawPup(&control); // DEFAULT FIELD ======================================== if (newc.control == C_MOUSE) field = CON_MOUSE; else if (newc.control == C_JOYSTICK) field = CON_JOY; else field = CON_KEY; controlmenu.startitem = field; while(1) { SetupMenu(&controlmenu); field = GetMenuInput(); key = menukey; switch ( key ) { case KEY_ESC: rval = -1; goto func_exit; case KEY_ENTER: case KEY_F10: switch ( field ) { case CON_KEY: newc.control = C_KEY; usemouse = 0; usejoystick = 0; goto func_exit; case CON_MOUSE: newc.control = C_MOUSE; usemouse = 1; usejoystick = 0; goto func_exit; case CON_JOY: newc.control = C_JOYSTICK; usemouse = 0; usejoystick = 1; goto func_exit; default: break; } break; } } func_exit: RestoreScreen(); DrawCurrentConfig(); return ( rval ); }
int RestoreSerial(void) { short field; short key; int rval = 0; char *args[MAXARGS]; int argcount; char string[MAXARGS*2][16]; int i; int numplayers[6]; int saveslot; int handle; char name[32]; char p1,p2,p3,p4; sinfo = serialinfo; // save copy of netinfo SaveScreen(); DrawPup(&sersave); saveslot = -1; memset(savenames,0,6*24); // // Read in savegame strings // textbackground(1); textcolor(15); for (i = 0;i < 6;i++) { sprintf(name,SAVENAME,i); handle = open (name, O_BINARY | O_RDONLY); if (handle == -1) continue; read(handle,savenames[i],24); lseek(handle,27+16,SEEK_SET); read(handle,&p1,1); read(handle,&p2,1); read(handle,&p3,1); read(handle,&p4,1); numplayers[i] = p1+p2+p3+p4; close(handle); Clear(&sersaveitems[i]); Pos(&sersaveitems[i]); cprintf("%s",savenames[i]); } // // Set defaults // sinfo.comport = comport; DrawRadios(&serscomg); sinfo.deathMatch = 0; DrawRadios(&sersdeathg); gotoxy(1,25); while(1) { SetupMenu(&sersavemenu); field = GetMenuInput(); key = menukey; switch ( key ) { case KEY_ESC: rval = -1; goto func_exit; exitandsave: case KEY_F10: if (saveslot < 0) { ErrorWindow(&netserr); break; } serialinfo = sinfo; M_SaveDefaults(); RestoreScreen(); argcount = 1; args[0] = "sersetup.exe "; if (cdrom) args[argcount++] = "-cdrom"; args[argcount++] = "-nodes"; sprintf(string[argcount],"%d",numplayers[saveslot]); args[argcount] = string[argcount]; argcount++; if (modeminfo.deathMatch) args[argcount++] = "-deathmatch"; sprintf(string[argcount],"-com%d",serialinfo.comport); args[argcount] = string[argcount]; argcount++; args[argcount++] = "-loadgame"; sprintf(string[argcount],"%d",saveslot); args[argcount] = string[argcount]; argcount++; for (i = 1;i < myargc; i++) args[argcount++] = myargv[i]; args[argcount] = NULL; textbackground(0); textcolor(7); clrscr(); execv("sersetup.exe",args); // // ERROR EXECing! // printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!"); exit(0); case KEY_ENTER: switch ( field ) { case SERS_COM1: case SERS_COM2: case SERS_COM3: case SERS_COM4: sinfo.comport = field - SERS_COM1 + 1; DrawRadios(&serscomg); break; case SERS_0: case SERS_1: case SERS_2: case SERS_3: case SERS_4: case SERS_5: if (!savenames[field - SERS_0][0]) { Sound(1000,12); break; } saveslot = field - SERS_0; DrawRadios(&serslotsg); break; // // Deathmatch // case SERS_DEATHNO: case SERS_DEATHYES: sinfo.deathMatch = field - SERS_DEATHNO; DrawRadios(&sersdeathg); default: break; } break; } } func_exit: RestoreScreen(); return ( rval ); }
int ChooseFxCard (void) { short field; short key; int rval = 0; switch ( newc.d.card ) { default: case M_NONE: field = DCARD_NONE; break; #ifndef HERETIC case M_PC: field = DCARD_PC; break; #endif case M_GUS: field = DCARD_GUS; break; case M_SB: field = DCARD_SB; break; case M_PAS: field = DCARD_PAS; break; case M_WAVE: field = DCARD_SB; break; } SaveScreen(); DrawPup(&idcard); idcardmenu.startitem = field; while(1) { SetupMenu(&idcardmenu); field = GetMenuInput(); key = menukey; switch ( key ) { case KEY_ESC: rval = -1; goto func_exit; case KEY_ENTER: case KEY_F10: switch ( field ) { case DCARD_PAS: newc.d.card = M_PAS; goto func_exit; case DCARD_SB: newc.d.card = M_SB; goto func_exit; case DCARD_GUS: newc.d.card = M_GUS; newc.d.midiport = -1; goto func_exit; #ifndef HERETIC case DCARD_PC: newc.d.card = M_PC; newc.d.port = -1; newc.d.midiport = -1; newc.d.irq = -1; newc.d.dma = -1; goto func_exit; #endif case DCARD_NONE: newc.d.card = M_NONE; newc.d.port = -1; newc.d.midiport = -1; newc.d.irq = -1; newc.d.dma = -1; goto func_exit; default: break; } break; } } func_exit: RestoreScreen(); return ( rval ); }
int ChooseNumDig (void) { short key; short field; int rval = 0; SaveScreen(); DrawPup(&numdig); // DEFAULT FIELD ======================================== switch ( newc.numdig ) { default: field = DIG_4; break; case 1: field = DIG_1; break; case 2: field = DIG_2; break; case 3: field = DIG_3; break; case 4: field = DIG_4; break; case 5: field = DIG_5; break; case 6: field = DIG_6; break; case 7: field = DIG_7; break; case 8: field = DIG_8; break; } numdigmenu.startitem = field; while(1) { SetupMenu(&numdigmenu); field = GetMenuInput(); key = menukey; switch ( key ) { case KEY_ESC: rval = -1; goto func_exit; case KEY_ENTER: case KEY_F10: switch ( field ) { case DIG_1: newc.numdig = 1; goto func_exit; case DIG_2: newc.numdig = 2; goto func_exit; case DIG_3: newc.numdig = 3; goto func_exit; case DIG_4: newc.numdig = 4; goto func_exit; case DIG_5: newc.numdig = 5; goto func_exit; case DIG_6: newc.numdig = 6; goto func_exit; case DIG_7: newc.numdig = 7; goto func_exit; case DIG_8: newc.numdig = 8; goto func_exit; default: break; } break; } } func_exit: RestoreScreen(); return ( rval ); }
int ChooseSbIrq (DMXCARD * card) { short field; short key; int rval = 0; if ( card->irq > 8 ) ErrorWindow(&irqerr); switch ( card->irq ) { case 2: field = SB_IRQ_2; break; default: case 5: field = SB_IRQ_5; break; case 7: field = SB_IRQ_7; break; } SaveScreen(); DrawPup(&sbirq); sbirqmenu.startitem = field; while(1) { SetupMenu(&sbirqmenu); field = GetMenuInput(); key = menukey; switch ( key ) { case KEY_ESC: rval = -1; goto func_exit; case KEY_ENTER: case KEY_F10: switch ( field ) { case SB_IRQ_2: card->irq = 2; goto func_exit; case SB_IRQ_5: card->irq = 5; goto func_exit; case SB_IRQ_7: card->irq = 7; goto func_exit; default: break; } break; } } func_exit: RestoreScreen(); return ( rval ); }
int ChooseSbDma (DMXCARD * card) { short key; short field; int rval = 0; switch ( card->dma ) { case 0: field = SB_DMA_0; break; default: case 1: field = SB_DMA_1; break; case 3: field = SB_DMA_3; break; case 5: field = SB_DMA_5; break; case 6: field = SB_DMA_6; break; case 7: field = SB_DMA_7; break; } SaveScreen(); DrawPup(&sbdma); sbdmamenu.startitem = field; while(1) { SetupMenu(&sbdmamenu); field = GetMenuInput(); key = menukey; switch ( key ) { case KEY_ESC: rval = -1; goto func_exit; case KEY_ENTER: case KEY_F10: switch ( field ) { case SB_DMA_0: card->dma = 0; goto func_exit; case SB_DMA_1: card->dma = 1; goto func_exit; case SB_DMA_3: card->dma = 3; goto func_exit; case SB_DMA_5: card->dma = 5; goto func_exit; case SB_DMA_6: card->dma = 6; goto func_exit; case SB_DMA_7: card->dma = 7; goto func_exit; default: break; } break; } } func_exit: RestoreScreen(); return ( rval ); }
unsigned WarpTime(void) { int e; int l; short key; short field; int exit; SaveScreen(); DrawPup(&cwarp); SetMark(&cwarpitems[W_RESPAWN],respawn); SetMark(&cwarpitems[W_NOMON],nomonsters); #ifndef HERETIC SetMark(&cwarpitems[W_DM2],deathmatch2); #endif exit = 0; while(1) { SetupMenu(&cwarpmenu); field = GetMenuInput(); key = menukey; switch(key) { case KEY_ESC: RestoreScreen(); return 0; case KEY_F10: case KEY_ENTER: switch(field) { case E1M1: e=1;l=1; exit=1; break; case E1M2: e=1;l=2; exit=1; break; case E1M3: e=1;l=3; exit=1; break; case E1M4: e=1;l=4; exit=1; break; case E1M5: e=1;l=5; exit=1; break; case E1M6: e=1;l=6; exit=1; break; case E1M7: e=1;l=7; exit=1; break; case E1M8: e=1;l=8; exit=1; break; case E1M9: e=1;l=9; exit=1; break; #ifdef DOOM2 case E1M10: e=1;l=10; exit=1; break; #endif case E2M1: e=2;l=1; exit=1; break; case E2M2: e=2;l=2; exit=1; break; case E2M3: e=2;l=3; exit=1; break; case E2M4: e=2;l=4; exit=1; break; case E2M5: e=2;l=5; exit=1; break; case E2M6: e=2;l=6; exit=1; break; case E2M7: e=2;l=7; exit=1; break; case E2M8: e=2;l=8; exit=1; break; case E2M9: e=2;l=9; exit=1; break; #ifdef DOOM2 case E2M10: e=2;l=10; exit=1; break; #endif case E3M1: e=3;l=1; exit=1; break; case E3M2: e=3;l=2; exit=1; break; case E3M3: e=3;l=3; exit=1; break; case E3M4: e=3;l=4; exit=1; break; case E3M5: e=3;l=5; exit=1; break; case E3M6: e=3;l=6; exit=1; break; case E3M7: e=3;l=7; exit=1; break; case E3M8: e=3;l=8; exit=1; break; case E3M9: e=3;l=9; exit=1; break; #ifdef DOOM2 case E3M10: e=3;l=10; exit=1; break; #endif case W_RESPAWN: respawn ^= 1; SetMark(&cwarpitems[W_RESPAWN],respawn); break; case W_NOMON: nomonsters ^= 1; SetMark(&cwarpitems[W_NOMON],nomonsters); break; #ifndef HERETIC case W_DM2: deathmatch2 ^= 1; SetMark(&cwarpitems[W_DM2],deathmatch2); break; #endif } if (exit) { RestoreScreen(); #ifdef DOOM2 return ((e-1)*10+l); #else return (e<<8)+l; #endif } } } }
static void bott_draw_normal(void **pp,long *s) { int i,j;int x,xs = 0,y; word *bott_scr; THUMAN *p; bott_scr = bott_clear(); RedirectScreen(bott_scr); if (battle && cur_mode == MD_INBATTLE) put_picture(0,0,ablock(H_BATTLE_BAR)); else put_picture(0,0,ablock(H_DESK)); memcpy(&xs,ablock(H_OKNO),2); x = 54; for(j = 0;j<POCET_POSTAV;j++) if ((p =&postavy[i = group_sort[j]])->used) if (cur_mode != MD_PRESUN || i == moving_player) { char c[] =" ";int z,lv,llv; put_picture(x,0,ablock(H_OKNO));lv = p->lives;llv = p->vlastnosti[VLS_MAXHIT]; if (lv || p->used & 0x80) { z = 3-((lv-1)*4/llv);if (lv == llv) z = 0; z*= 75; if (p->xicht>= 0)put_8bit_clipped(ablock(H_XICHTY+i),bott_scr+PIC_X+x+PIC_Y*scr_linelen2,z,54,75); if (p->bonus) draw_small_icone(0,PIC_X+x+1,PIC_Y+1); if (p->spell) draw_small_icone(1,PIC_X+x+1,PIC_Y+1); if (!p->voda) draw_small_icone(2,PIC_X+x+1,PIC_Y+1); if (!p->jidlo) draw_small_icone(3,PIC_X+x+1,PIC_Y+1); } else put_picture(PIC_X+x,PIC_Y,ablock(H_LEBKA)); curcolor = 0; y = BARS_YS-p->lives*BARS_YS/p->vlastnosti[VLS_MAXHIT]; if (y) bar(x+ZIVOTY_S,BARS_S,x+ZIVOTY_E,BARS_S+y); y = BARS_YS-p->kondice*BARS_YS/p->vlastnosti[VLS_KONDIC]; if (y) bar(x+KONDIC_S,BARS_S,x+KONDIC_E,BARS_S+y); if (p->vlastnosti[VLS_MAXMANA]) y = BARS_YS-p->mana*BARS_YS/p->vlastnosti[VLS_MAXMANA];else y = BARS_YS; if (y<0) y = 0; if (y) bar(x+MANA_S,BARS_S,x+MANA_E,BARS_S+y); if (p->sektor != viewsector) trans_bar25(x,0,74,102); set_font(H_FLITT,p->groupnum == cur_group && !battle?SEL_COLOR:barvy_skupin[p->groupnum]); set_aligned_position(x+36,92,1,0,p->jmeno);outtext(p->jmeno); c[0] = p->groupnum+48;set_aligned_position(x+5,86,0,2,c);outtext(c); if (cur_mode == MD_INBATTLE) { char s[20]; signed char dir; set_font(H_FBOLD,RGB555(31,31,0)); sprintf(s,texty[40],p->actions); set_aligned_position(x+56,86,2,2,s);outtext(s); dir = viewdir-p->direction; if (abs(dir) == 2) c[0] = 2; else if (dir == -1 || dir == 3) c[0] = 1; else if (dir == -3 || dir == 1) c[0] = 3; if (dir) { set_font(H_FSYMB,p->groupnum == cur_group && !battle?SEL_COLOR:barvy_skupin[p->groupnum]); c[0]+= 4;set_aligned_position(x+10,86,0,2,c);outtext(c); } } if (i == select_player) rectangle(x+3,12,x+3+54,12+75,SEL_COLOR); if (p->dostal) { char s[20]; put_picture(x+ZASAHB_X,ZASAHB_Y,ablock(H_PZASAH)); set_font(H_FBOLD,RGB555(31,31,0)); sprintf(s,"%d",p->dostal); set_aligned_position(x+ZASAHT_X,ZASAHT_Y,1,1,s);outtext(s); } x += xs; } if (cur_mode == MD_PRESUN || cur_mode == MD_UTEK) { char s[40]; set_font(H_FBOLD,RGB555(31,31,16)); position(150,20);outtext(texty[cur_mode == MD_PRESUN?42:44]); sprintf(s,texty[60+cislovka(postavy[moving_player].actions)],postavy[moving_player].actions); position(150,35);outtext(s); position(150,50);outtext(texty[63]); } /* if (mob_dostal) { word *w; char s[40]; w = ablock(H_MZASAH1+mob_dostal-1); put_picture(580-(w[0]>>1),55-(w[1]>>1),w); itoa(mob_dostal_pocet,s,10); set_font(H_FLITT5,0xffff); set_aligned_position(580,55,1,1,s); outtext(s); } */ *pp = GetScreenAdr(); *s = _msize(*pp); RestoreScreen(); }