Ejemplo n.º 1
0
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();
  }
Ejemplo n.º 2
0
GUI::~GUI() {
  RestoreScreen();

  if (SavedScreen) free(SavedScreen);

  ::ConDone();
  gui = 0;
}
Ejemplo n.º 3
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;
}
Ejemplo n.º 4
0
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();
  }
Ejemplo n.º 5
0
Archivo: Get.c Proyecto: aosm/ncftp
/* 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 */
Ejemplo n.º 6
0
  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 */
  }
Ejemplo n.º 7
0
int GUI::ConSuspend(void) {
  RestoreScreen();
  return ::ConSuspend();
}
Ejemplo n.º 8
0
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 );
}
Ejemplo n.º 9
0
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 );
}
Ejemplo n.º 10
0
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 );
}
Ejemplo n.º 11
0
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 );
}
Ejemplo n.º 12
0
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 );
}
Ejemplo n.º 13
0
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 );
}
Ejemplo n.º 14
0
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 );
}
Ejemplo n.º 15
0
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
				}
		 }
	}
}
Ejemplo n.º 16
0
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();
  }