Esempio n. 1
0
void Character::Homing( float x, float y, float z ){
	if(KeyGet(KEY_INPUT_N) % 15 == 1 ){
		for(int i = 0; i < SNUM; i++){
			if(shot[i].flag == 0){
				shot[i].flag = 2;
				shot[i].x = this->x;
				shot[i].y = this->y;
				shot[i].z = this->z;
				shot[i].speed = 4.0f;

				float sbx = this->x - x;
				float sby = this->y - y;
				float sbz = this->z - z;
				float sb = sqrt( sbx * sbx + sbz * sbz ) ;
				shot[i].rx = sbx / sb * shot[i].speed;
				shot[i].rz = sbz / sb * shot[i].speed;
				shot[i].ry =sby / sqrt(sb * sb + y * y) * shot[i].speed;
				break;
				
			}
			
		}

	}	
}
Esempio n. 2
0
int main( int argc, char **argv )
{
    char key;

#ifndef __WATCOMC__
    _argc = argc;
    _argv = argv;
#endif

    Initialize();
    OpeningStatement();
    for( ;; ) {
        Output( TRP_MSG_press_q );
        Output( "\r\n" );
        for( ;; ) {
            if( RemoteConnect() ) break;
            NothingToDo();
            if( KeyPress() ) {
                key = KeyGet();
                if( key == 'q' || key == 'Q' ) {
                    KillTrap();
                    RemoteUnLink();
                    SayGNiteGracey( 0 );
                }
            }
        }
        Output( TRP_MSG_session_started );
        Output( "\r\n\r\n" );
        Session();
#ifndef NETWARE
        /* flush keyboard input */
        while( KeyPress() )
            KeyGet();
#endif
        Output( "\r\n\r\n" );
        Output( TRP_MSG_session_ended );
        Output( "\r\n\r\n" );
        RemoteDisco();
        if( OneShot ) {
            KillTrap();
            RemoteUnLink();
            SayGNiteGracey( 0 );
        }
    }
    return( 0 );
}
Esempio n. 3
0
File: help.c Progetto: ralienpp/deco
void runhelp (char *name)
{
	register r, c, w, h;
	BOX *box;
	register struct helptab *p;
	struct help *hp;

	hp = findhelp (name);
	if (! hp)
		return;
	p = hp->htab;
	if (! p->str)
		inithelp (hp);
	w = 72;
	h = 21;
	r = 2;
	c = 4;

	box = VGetBox (r, c-1, h, w+2);                 /* save box */
	VStandOut ();
	VSetDim ();
	VFillBox (r, c-1, h, w+2, ' ');                 /* clear */
	VDrawBox (r, c, h, w);                          /* draw margins */
	VMPutString (r, c + (w-6) / 2, " Help ");       /* head */

	for (; p->row; ++p) {
		if (p->row >= h)
			continue;
		if (p->bold) {
			VSetBold ();
			VStandEnd ();
		}
		if (! p->col)
			VMPutString (r+p->row, c + (w-strlen(p->str))/2, p->str);
		else
			VMPutString (r+p->row, c + p->col, p->str);
		if (p->bold) {
			VSetDim ();
			VStandOut ();
		}
	}
	VStandEnd ();
	VSetNormal ();
	for (;;) {
		hidecursor ();
		VSync ();
		switch (KeyGet ()) {
		default:
			break;
		case cntrl (']'):       /* redraw screen */
			VRedraw ();
			continue;
		}
		break;
	}
	VUngetBox (box);
	VFreeBox (box);
}
Esempio n. 4
0
int quote(void) {
	register c, i;

	c = KeyGet ();
	if (c<'0' || c>'3')
		return (c);
	i = c & 3;
	c = KeyGet ();
	if (c<'0' || c>'7') {
		KeyUnget (c);
		return (i);
	}
	i = i << 3 | c & 7;
	c = KeyGet ();
	if (c<'0' || c>'7') {
		KeyUnget (c);
		return (i);
	}
	return (i << 3 | c & 7);
}
Esempio n. 5
0
File: menu.c Progetto: stqism/DEMOS
getmenu ()
{
	if (! menu[0].len)
		initmenu ();

	getboxes ();
	VMPutString (LINES-1, 0, "\0011\16      \17 2\16      \17 3\16      \17 4\16      \17 5\16      \17 6\16      \17 7\16      \17 8\16      \17 9\16      \01710\16Quit \17\2");
	for (;;) {
		drawhead (nmenu);
		for (;;) {
			drawmenu (&menu[nmenu]);
			hidecursor ();
			VSync ();
			switch (KeyGet ()) {
			default:
				VBeep ();
				continue;
			case cntrl (']'):          /* redraw screen */
				VRedraw ();
				continue;
			case cntrl ('M'):
				clrmenu (&menu[nmenu]);
				return (1);
			case cntrl ('J'):
				clrmenu (&menu[nmenu]);
				return (2);
			case cntrl ('C'):
			case cntrl ('['):
			case meta ('J'):        /* f0 */
				clrmenu (&menu[nmenu]);
				return (0);
			case meta ('r'):        /* right */
				clrmenu (&menu[nmenu]);
				if (! menu[++nmenu].mname)
					nmenu = 0;
				break;
			case meta ('l'):        /* left */
				clrmenu (&menu[nmenu]);
				if (--nmenu < 0) {
					for (nmenu=0; menu[nmenu].mname; ++nmenu);
					--nmenu;
				}
				break;
			case meta ('u'):        /* up */
				upmenu (&menu[nmenu]);
				continue;
			case meta ('d'):        /* down */
				downmenu (&menu[nmenu]);
				continue;
			}
			break;
		}
	}
}
Esempio n. 6
0
void Character::Death(){
	if(KeyGet(KEY_INPUT_L)) life = 0;
	float x = 0.3f, y = 0.3f, z =0.3f;
	if(life <= 0 ){
		DeathTimer --;
		RotateY --;
		RotateX --;
		MV1SetScale(graph, VGet( x, y , z));
		if(DeathTimer == 0) gamestate = 2;
	}
	if( life == 0){
		graph = MV1LoadModel("Graph/消せる爆発/爆発消x1.pmd");
		life --;
	}
}
Esempio n. 7
0
/******************Ö÷³ÌÐò********************************/
void main(void)
{
   Pin_Init();
   T0_Init();
   Uart1_Init();
   Uart2_Init();
   Uart1_AppInit();
   Uart2_AppInit();
   MdTcbInit1();
   MdTcbInit2();
   Global_EI();
   while (1)
   {
      TimeDeal(&Ahu1);
      MdPoll01();
      MdPoll02();
      if (Ahu1.Times.Solo._1msFlag)
      {
         UartTimeOut(&UartAppData1);
         UartTimeOut(&UartAppData2);
	 KeyScanDeal(KeyGet());
	 KeyAllStateDeal(&Ahu1);
	 NumberDisplayScan(&Ahu1);
      }
      DisplayNumber(flag);
      if (Ahu1.Times.Solo._5msFlag)
      {
	 LedOutputScan(&Ahu1);
	 RhDisplayScan(&Ahu1);    
	 TmepDisplayScan(&Ahu1);  
      }
      if (Ahu1.Times.Solo._10msFlag)
      {


      }
      if (Ahu1.Times.Solo._1000msFlag)
      {
	 flag++;
      }
//      Ahu1.Humidity.Solo.SEG_B = 1;
//      Ahu1.Temperature.Solo.SEG_C = 1;
      Ahu1.Times.All[0] = 0;
   }
}
Esempio n. 8
0
static int menuchoice ()
{
    int ch = 0;

    for (;;) {
        drawchoice (ch);
        hidecursor ();
        VSync ();
        switch (KeyGet ()) {
        default:
            VBeep ();
            continue;
        case cntrl (']'):       /* redraw screen */
            VRedraw ();
            continue;
        case cntrl ('['):
        case cntrl ('C'):
        case meta ('J'):        /* f0 */
            return (-1);
        case cntrl ('M'):
        case cntrl ('J'):
            return (ch);
        case ' ':
        case cntrl ('I'):
        case meta ('r'):        /* right */
            if (++ch >= cnum)
                ch = 0;
            continue;
        case meta ('b'):        /* backspace */
        case meta ('l'):        /* left */
            if (--ch < 0)
                ch = cnum-1;
            continue;
        }
    }
}
Esempio n. 9
0
void Character::Move(){
	input = GetJoypadInputState(DX_INPUT_KEY_PAD1);
	GetJoypadAnalogInput(&input_x, &input_y, DX_INPUT_KEY_PAD1);


	if (input & PAD_INPUT_LEFT) {
		x -= 0.3;
		if (RotateZ < 30.0f){
			RotateZ += 1.0f;
		}
	}
	if (RotateZ > 0 && RotateZ <= 180.0f && input & PAD_INPUT_LEFT == 0) RotateZ -= 0.5f;

	if (input & PAD_INPUT_RIGHT) {
		x += 0.3;
		if (RotateZ > -30.0f){
			RotateZ -= 1.0f;
		}
	}
		
		if (RotateZ < 0 && RotateZ >= -180.0f && input & PAD_INPUT_RIGHT == 0) RotateZ += 0.5f;

		if (input & PAD_INPUT_UP) {
			y += 0.3;
			if (RotateX < 45.0f){
				RotateX += 1.0f;
			}
		}
		if (RotateX >0 && RotateX <= 180.0f && input & PAD_INPUT_UP == 0) RotateX -= 0.5f;

		if (input & PAD_INPUT_DOWN) {
			y -= 0.3;
			if (RotateX > -45.0f){
				RotateX -= 1.0f;
			}
		}
		if (RotateX < 0 && RotateX >= -180.0f && input & PAD_INPUT_DOWN == 0) RotateX += 0.5f;
		/*if (input & PAD_INPUT_2){
			RotateZ2 += 36;
		}
		if (input & PAD_INPUT_2  && input & PAD_INPUT_3 ){
			RotateZ2 = 0;
		}
		if (input & PAD_INPUT_3){
			if (RotateZ2 < 360){
				RotateZ2 -= 36;
			}
			muteki = 1;
		}
		else{
			muteki = 0;
		}
		if (input & PAD_INPUT_2 || input & PAD_INPUT_3){
			muteki = 1;
		}*/
	
	
	if(KeyGet(KEY_INPUT_LEFT)) {
		x-=0.3;
		if(RotateZ < 30.0f){
			RotateZ += 1.0f;
		}
	}
	if(RotateZ > 0 && RotateZ <= 180.0f && KeyGet(KEY_INPUT_LEFT) == 0) RotateZ -= 0.5f;

	if(KeyGet(KEY_INPUT_RIGHT)) {
		x+=0.3;
		if(RotateZ > -30.0f){
			RotateZ -= 1.0f;
		}
	}
	if(RotateZ < 0 && RotateZ >= -180.0f && KeyGet(KEY_INPUT_RIGHT) == 0) RotateZ += 0.5f;

	if(KeyGet(KEY_INPUT_UP)) {
		y+=0.3;
		if(RotateX < 45.0f){
			RotateX += 1.0f;
		}
	}
	if(RotateX >0 && RotateX <= 180.0f && KeyGet(KEY_INPUT_UP) == 0 ) RotateX -= 0.5f;

	if(KeyGet(KEY_INPUT_DOWN)) {
		y-=0.3;
		if(RotateX > -45.0f){
			RotateX -= 1.0f;
		}
	}
	if(RotateX < 0 && RotateX >= -180.0f && KeyGet(KEY_INPUT_DOWN) == 0) RotateX += 0.5f;
	static unsigned int pad = 0;
	if (input & PAD_INPUT_3) {
		pad |= 1;
	}
	else{
		pad &= ~1;
	}
	if (input & PAD_INPUT_2) {
		pad |= 2;
	}
	else{
		pad &= ~2;
	}
	if (KeyGet(KEY_INPUT_Z) || pad == 1){
			RotateZ2 += 36;
	}
	if ((KeyGet(KEY_INPUT_Z) == 0 && KeyGet(KEY_INPUT_X) == 0) && pad == 0){
		RotateZ2 = 0;
	}
	if(KeyGet(KEY_INPUT_X) || pad == 2){
		if(RotateZ2 < 360){
			RotateZ2 -= 36;
		}
		muteki = 1;
	}
	else{
		muteki = 0;
	}
	if (KeyGet(KEY_INPUT_Z) || KeyGet(KEY_INPUT_X) || pad){
		muteki = 1;
	}
	else{
		muteki = 0;
	}
	if(damaged_flag == true){
		damaged_timer++;
	}
	if (damaged_timer > 60){
		damaged_flag = false;
		damaged_timer = 0;

	}
}
Esempio n. 10
0
void Character::Shot(){
	static unsigned int pad_timer = 0;
	if(KeyGet(KEY_INPUT_U)) power = 2;
	if (input & PAD_INPUT_1) {
		pad_timer++;
	}
	else{
		pad_timer = 0;
	}
	if (KeyGet(KEY_INPUT_SPACE) % 5 == 1 || pad_timer % 5 == 1  && muteki == 0){
		PlaySoundMem( shotsound , DX_PLAYTYPE_BACK ) ;

		for(int i = 0; i < SNUM; i++){
			if(shot[i].flag == 0){
				shot[i].flag = 1;
				shot[i].x = x;
				shot[i].y = y;
				shot[i].z = z;
				shot[i].angleX = RotateX;
				shot[i].angleY = RotateY;
				shot[i].angleZ = RotateZ;
				shot[i].playtime =0.0f;
				float sbx =  1 * tan((RotateZ * PI/ 180));
				float sb =  ((sbx * sbx) + 1 * 1);
				float sby = sb * tan((RotateX * PI/ 180));
				shot[i].rx = sbx / sb * 10.0f;
				shot[i].rz = 1 / sb * 10.0f;
				shot[i].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i].graph, VGet(( shot[i].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				break;
				
			}
			
		}

	}
	if(KeyGet(KEY_INPUT_SPACE) % 5 == 1 && power == 1 ){
		PlaySoundMem( shotsound , DX_PLAYTYPE_BACK ) ;
		for(int i = 0; i < SNUM; i++){
			if(shot[i].flag == 0){
				shot[i].flag = 1;
				shot[i].x = x - 2;
				shot[i].y = y;
				shot[i].z = z;
				shot[i + 1].flag = 1;
				shot[i + 1].x = x + 2;
				shot[i + 1].y = y;
				shot[i + 1].z = z;
				shot[i].angleX = RotateX;
				shot[i].angleY = RotateY;
				shot[i].angleZ = RotateZ;
				shot[i].playtime =0.0f;
				shot[i + 1].angleX = RotateX;
				shot[i + 1].angleY = RotateY;
				shot[i + 1].angleZ = RotateZ;
				shot[i + 1].playtime =0.0f;
				float sbx =  1 * tan((RotateZ * PI/ 180));
				float sb =  ((sbx * sbx) + 1 * 1);
				float sby = sb * tan((RotateX * PI/ 180));
				shot[i].rx = sbx / sb * 10.0f;
				shot[i].rz = 1 / sb * 10.0f;
				shot[i].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i].graph, VGet(( shot[i].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				shot[i + 1].rx = sbx / sb * 10.0f;
				shot[i + 1].rz = 1 / sb * 10.0f;
				shot[i + 1].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i + 1].graph, VGet(( shot[i + 1].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i + 1].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				break;
				
			}
			
		}

	}
	if(KeyGet(KEY_INPUT_SPACE) % 5 == 1 && power >= 2 ){
		PlaySoundMem( shotsound , DX_PLAYTYPE_BACK ) ;
		for(int i = 0; i < SNUM; i++){
			if(shot[i].flag == 0){
				shot[i].flag = 1;
				shot[i].x = x;
				shot[i].y = y;
				shot[i].z = z;
				shot[i].angleX = RotateX;
				shot[i].angleY = RotateY;
				shot[i].angleZ = RotateZ;
				shot[i].playtime =0.0f;

				shot[i + 1].flag = 1;
				shot[i + 1].x = x + 4;
				shot[i + 1].y = y;
				shot[i + 1].z = z;
				shot[i + 1].angleX = RotateX;
				shot[i + 1].angleY = RotateY;
				shot[i + 1].angleZ = RotateZ;
				shot[i + 1].playtime =0.0f;

				shot[i + 2].flag = 1;
				shot[i + 2].x = x - 4;
				shot[i + 2].y = y;
				shot[i + 2].z = z;
				shot[i + 2].angleX = RotateX;
				shot[i + 2].angleY = RotateY;
				shot[i + 2].angleZ = RotateZ;
				shot[i + 2].playtime =0.0f;

				float sbx =  1 * tan((RotateZ * PI/ 180));
				float sb =  ((sbx * sbx) + 1 * 1);
				float sby = sb * tan((RotateX * PI/ 180));
				shot[i].rx = sbx / sb * 10.0f;
				shot[i].rz = 1 / sb * 10.0f;
				shot[i].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i].graph, VGet(( shot[i].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));

				shot[i + 1].rx = sbx / sb * 10.0f;
				shot[i + 1].rz = 1 / sb * 10.0f;
				shot[i + 1].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i + 1].graph, VGet(( shot[i + 1].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i + 1].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));

				shot[i + 2].rx = sbx / sb * 10.0f;
				shot[i + 2].rz = 1 / sb * 10.0f;
				shot[i + 2].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i + 2].graph, VGet(( shot[i + 2].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i + 2].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				break;
				
			}
			
		}

	}

	for(int i = 0; i < SNUM; i++){
		if(shot[i].flag == 1){
			shot[i].z += shot[i].rz;
			shot[i].x -= shot[i].rx;
			shot[i].y += shot[i].ry;
			MV1SetPosition( shot[i].graph, VGet(shot[i].x, shot[i].y, shot[i].z) );
			MV1DrawModel( shot[i].graph );
			
			MV1SetAttachAnimTime( shot[i].graph, shot[i].attach, shot[i].playtime ) ;
			
			shot[i].playtime += 2.0f;
			
			if(shot[i].playtime >= shot[i].shottime ) shot[i].playtime = 0;
			
			if(shot[i].z > z + 300.0f){
				shot[i].flag = 0;
				shot[i].playtime = 0.0f;
			}
		}
		if(shot[i].flag == 2){
			shot[i].x -= shot[i].rx;
			shot[i].y -= shot[i].ry;
			shot[i].z -= shot[i].rz;
			
			MV1SetScale(shot[i].graph, VGet(0.05f, 0.05f, 0.005f));
			MV1SetPosition( shot[i].graph, VGet(shot[i].x, shot[i].y, shot[i].z) );
			MV1DrawModel( shot[i].graph );
			
			if(shot[i].z > 100){
				shot[i].flag = 0;
			}
		}
	}

}
Esempio n. 11
0
File: ex.c Progetto: shodanium/deco
static char *runudm (char *scale)
{
	/* user defined menu */
	register key, cm;
	BOX *box, *curbox;

	box = VGetBox (menurow-2, menucol-4, nm+4, menuwid+8);
	VSetDim ();
	VStandOut ();
	VFillBox (menurow-2, menucol-4, nm+4, menuwid+8, ' ');
	VDrawBox (menurow-1, menucol-1, nm+2, menuwid+2);
	mvcaddstr (menurow-1, 40, " User Menu ");
	printudm ();
	VSetNormal ();
	VStandEnd ();
	cm = 0;
	for (;;) {
		curbox = VGetBox (menurow+cm, menucol, 1, menuwid);
		VPrintBox (curbox);
		hidecursor ();
		VSync ();
		key = KeyGet ();
		VUngetBox (curbox);
		VFreeBox (curbox);
		switch (key) {
		default:
findmenu:
			if (key>0 && key<0200 && scale [key] < MENUSZ) {
				cm = scale [key];
				break;
			}
			VBeep ();
			continue;
		case meta ('A'):        key = 1;        goto findmenu;
		case meta ('B'):        key = 2;        goto findmenu;
		case meta ('C'):        key = 3;        goto findmenu;
		case meta ('D'):        key = 4;        goto findmenu;
		case meta ('E'):        key = 5;        goto findmenu;
		case meta ('F'):        key = 6;        goto findmenu;
		case meta ('G'):        key = 7;        goto findmenu;
		case meta ('H'):        key = 8;        goto findmenu;
		case meta ('I'):        key = 9;        goto findmenu;
		case cntrl (']'):          /* redraw screen */
			VRedraw ();
			continue;
		case cntrl ('M'):
		case cntrl ('J'):
			break;
		case cntrl ('C'):
		case cntrl ('['):
		case meta ('J'):           /* f0 */
			cm = -1;
			break;
		case meta ('u'):          /* up */
			if (--cm < 0)
				cm = nm-1;
			continue;
		case meta ('d'):          /* down */
			if (++cm >= nm)
				cm = 0;
			continue;
		}
		break;
	}
	VUngetBox (box);
	VFreeBox (box);
	if (cm >= 0 && um[cm].cex) {
		if (um[cm].menu)
			return (um[cm].cex);
		/* execute command from menu */
		expand (command, um[cm].cex, cur->cat[cur->curfile].name);
		cpos = strlen (command);
		if (command [0])
			execmd (um[cm].wait, um[cm].hist);
	}
	return ((char *) 0);
}
Esempio n. 12
0
main (int argc, char **argv, char **envp) {
	register c;

	if (argc > 2) {
		outerr("Usage: deco [dirname]\n",0);
		exit (1);
	}
	outerr("Demos Commander, Copyright (C) 1989-1994 Serge Vakulenko\n",0);
	palette = dflt_palette;
	EnvInit (envp);
	uid = getuid ();
	gid = getgid ();
# ifdef GROUPS
	gidnum = getgroups (sizeof(gidlist)/sizeof(gidlist[0]), (unsigned int *)gidlist);
# endif
	ppid = getppid ();
	user = username (uid);
	group = groupname (gid);
	tty = ttyname (0);
	machine = getmachine ();
#if 0
	sigign();
#else
	signal(SIGTERM, SIG_IGN);
	signal(SIGQUIT, SIG_IGN);
	signal(SIGINT, SIG_IGN);
# ifdef SIGTSTP
	signal(SIGTSTP, SIG_IGN);
# endif
#endif
	init ();
//	inithome ();
	VClear ();
/* init class dir */
	if (argc > 1)
//		chdir (argv [1]);
		left = new dir(argv [1]);
	else
		left = new dir;
	right = new dir;
	left->d.basecol = 0;
	right->d.basecol = 40;
/*-----------*/
	initfile.read();
	if (uid == 0)
		palette.dimfg = 6;
	v.VSetPalette (palette.fg, palette.bg, palette.revfg, palette.revbg,
		palette.boldfg, palette.boldbg, palette.boldrevfg, palette.boldrevbg,
		palette.dimfg, palette.dimbg, palette.dimrevfg, palette.dimrevbg);
	setdir (left, ".");
	setdir (right, ".");
	left->chdir(left->d.cwd);
	cur = left;
	draw.draw(cur, left, right);
	for (;;) {
		if (! cmdreg)
			draw.drawcursor(cur);
//		cmd.drawcmd(cur, &left, &right);
		VSync ();
		c = KeyGet ();
		if (! cmdreg)
			draw.undrawcursor(cur);
		switch (c) {
		case '+':               /* select */
		case '-':               /* unselect */
			if (! cpos && ! cmdreg && ! cur->d.status) {
				if (c == '+')
					tagall ();
				else
					untagall ();
				draw.draw(cur, left, right);
				continue;
			}
		default:
//			if (c>=' ' && c<='~' || c>=0300 && c<=0376) {
//				if (cpos || c!=' ')
//					cmd.inscmd(c);
//				continue;
//			}
			VBeep ();
			continue;
//		case cntrl ('V'):       /* quote next char */
//			cmd.inscmd(quote ());
//			continue;
//		case cntrl ('J'):       /* insert file name */
//			if (! cmdreg && ! cur->status)
//				cmd.namecmd(cur);
//			continue;
//		case cntrl ('G'):
//			cmd.delcmd();
//			continue;
//		case meta ('b'):        /* backspace */
//			if (cpos) {
//				cmd.leftcmd();
//				cmd.delcmd();
//			}
//			continue;
		case cntrl ('O'):       /* set/unset command mode */
		case cntrl ('P'):       /* set/unset command mode */
			switchcmdreg ();
			if (! cmdreg)
				visualwin = 1;
			draw.draw(cur, left, right);
			continue;
		case cntrl ('M'):         /* return */
//			if (command [0]) {
//				cmd.exec(cur, &left, &right, 1, 1);
//				draw.draw(cur, &left, &right);
//				continue;
//			}
			if (cmdreg) {
				cmdreg = 0;
				if (! visualwin) {
					visualwin = 1;
					setdir (cur==left ? right : left, NULL);
					setdir (cur, NULL);
				}
				draw.draw(cur, left, right);
				continue;
			}
			execute ();
			continue;
		case cntrl (']'):       /* redraw screen */
			VRedraw ();
			continue;
//		case cntrl ('B'):        /* history */
//			if (! visualwin)
//				VClearBox (1, 0, LINES-2, 80);
//			cmd.histmenu(cur, &left, &right);
//			draw.draw(cur, &left, &right);
//			continue;
		case meta ('A'):        /* f1 */
			genhelp ();
			draw.draw(cur, left, right);
			continue;
		case meta ('B'):          /* f2 */
			udm.menu();
			draw.draw(cur, left, right);
			continue;
		case meta ('I'):        /* f9 */
			mymenu.runmenu (cur==left ? 'l' : 'r');
			draw.draw(cur, left, right);
			continue;
		case meta ('J'):        /* f0 */
		case cntrl ('C'):       /* quit */
			quit ();
			continue;
		case cntrl ('U'):       /* swap panels */
			swappanels ();
			draw.draw(cur, left, right);
			continue;
		case cntrl ('F'):       /* full screen */
			fullscreen ();
			draw.draw(cur, left, right);
			continue;
		case cntrl ('^'):       /* cd / */
			directory (0, 'r');
			if (! cur->d.status)
				draw.drawdir(cur, 1, left, right);
			continue;
		case cntrl ('\\'):      /* cd $HOME */
			directory (0, 'o');
			if (! cur->d.status)
				draw.drawdir(cur, 1, left, right);
			continue;
//		case cntrl ('Y'):       /* clear line */
//			command [cpos = 0] = 0;
//			continue;
//		case cntrl ('X'):       /* next history */
//			cmd.nextcmd();
//			continue;
//		case cntrl ('E'):       /* prev history */
//			cmd.prevcmd();
//			continue;
//		case cntrl ('S'):       /* char left */
//		case cntrl ('A'):       /* char left */
//			cmd.leftcmd();
//			continue;
//		case cntrl ('D'):       /* char right */
//			cmd.rightcmd();
//			continue;
		case cntrl ('I'):       /* tab */
			if (cmdreg) {}
//				if (command [cpos])
//					cmd.endcmd();
//				else
//					cmd.homecmd();
			else {
				switchpanels ();
				if (fullwin) {
					draw.drawbanners();
					draw.drawdir(cur, 0, left, right);
					break;
				}
			}
			continue;
		case cntrl ('W'):       /* double width */
			if (! cmdreg) {
				setdwid ();
				draw.draw(cur, left, right);
			}
			continue;
//		case meta ('G'):        /* f7 */
//			makedir ();
//			draw.draw(cur, &left, &right);
//			continue;
		case meta ('h'):        /* home */
		case meta ('e'):        /* end */
		case meta ('u'):        /* up */
		case meta ('d'):        /* down */
		case meta ('l'):        /* left */
		case meta ('r'):        /* right */
		case meta ('n'):        /* next page */
		case meta ('p'):        /* prev page */
		case cntrl ('K'):       /* find file */
		case cntrl ('R'):       /* reread catalog */
		case cntrl ('T'):       /* tag file */
		case meta ('C'):        /* f3 */
		case meta ('D'):        /* f4 */
		case meta ('E'):        /* f5 */
		case meta ('F'):        /* f6 */
		case meta ('H'):        /* f8 */
		case cntrl ('L'):       /* status */
			if (cmdreg || cur->d.status) {}
//				docmdreg (c);
			else
				doscrreg (c);
			continue;
		}
	}
}
Esempio n. 13
0
int getchoice (int bold, char *head, char *msg, char *mesg2,
               char *c1, char *c2, char *c3)
{
    int len, ch;
    int isattr;
    register r, c, w, h;
    BOX *box;
    char mesg[67];

    strncpy(mesg, msg, sizeof (mesg));
    mesg[sizeof(mesg)-1] = 0;
    w = strlen (mesg);
    if (mesg2) {
        len = strlen (mesg2);
        if (len > w)
            w = len;
    }
    len = strlen (head);
    if (len > w)
        w = len;
    len = 0;
    if (c1)
        len += strlen (c1);
    if (c2)
        len += strlen (c2);
    if (c3)
        len += strlen (c3);
    if (len > w)
        w = len;
    h = 6;
    w += 10;
    if (bold)
        r = LINES/2;
    else
        r = LINES/4;
    c = (80 - w) / 2;

    box = VGetBox (r-1, c-2, h+2, w+4);             /* save box */
    isattr = VStandOut ();
    if (bold)
        VSetBold ();
    else
        VSetDim ();
    VFillBox (r-1, c-2, h+2, w+4, ' ');             /* clear */
    VDrawBox (r, c, h, w);                          /* draw margins */
    VMPutString (r, c + (w-strlen(head)) / 2, head); /* head */
    if (mesg2) {
        VMPutString (r+1, c + (w-strlen(mesg)) / 2, mesg);
        VMPutString (r+2, c + (w-strlen(mesg2)) / 2, mesg2);
    } else
        VMPutString (r+2, c + (w-strlen(mesg)) / 2, mesg);

    if (c1) {
        if (isattr) {
            attron = VStandEnd;
            attroff = VStandOut;
        } else {
            attron = 0;
            attroff = 0;
        }
        initchoice (r+4, c+w/2, c1, c2, c3);

        ch = menuchoice ();
        VStandEnd ();
        VSetNormal ();
        VUngetBox (box);
        VFreeBox (box);
        return (ch);
    } else {
        /* message */
        VStandEnd ();
        VSetNormal ();
        mbox = box;
        hidecursor ();
        VSync ();
#ifdef DOC
        KeyGet ();
#endif
        return (0);
    }
}
Esempio n. 14
0
static char *editstring (int r, int c, int w, char *str, int cp)
{
    register key, k;
    int firstkey = 1;

    if (cp) {
        for (cp=0; str[cp]; ++cp);
        firstkey = 0;
    }
    for (; ; firstkey=0) {
        VClearBox (r, c, 1, w);
        VMPutString (r, c, str);
        VMove (r, c+cp);
        VSync ();
        switch (key = KeyGet ()) {
        default:
            if (key<' ' || (key>'~' && key<0300) || key>0377) {
                VBeep ();
                continue;
            }
            if (firstkey) {
                str[0] = key;
                str[1] = 0;
                cp = 1;
                continue;
            }
            for (k=cp; str[k]; ++k)
                SWAP (key, str[k]);
            str [k] = key;
            str [w] = str [k+1] = 0;
        /* fall through */
        case meta ('r'):        /* right */
            if (str [cp]) {
                ++cp;
                if (cp >= w)
                    cp = w-1;
            }
            continue;
        case meta ('l'):        /* left */
            if (--cp < 0)
                cp = 0;
            continue;
        case cntrl (']'):       /* redraw screen */
            VRedraw ();
            continue;
        case cntrl ('C'):
        case cntrl ('['):
        case meta ('J'):        /* f0 */
            return (0);
        case cntrl ('M'):
        case cntrl ('J'):
            return (str);
        case cntrl ('I'):
            if (str [cp])
                while (str [++cp]);
            else
                cp = 0;
            continue;
        case meta ('h'):        /* home */
            cp = 0;
            continue;
        case meta ('e'):        /* end */
            while (str [cp])
                ++cp;
            continue;
        case meta ('b'):        /* back space */
            if (cp) {
                for (k=cp--; str[k]; ++k)
                    str[k-1] = str[k];
                str [k-1] = 0;
            }
            continue;
        case cntrl ('G'):       /* delete */
            if (! str [cp])
                continue;
            for (k=cp+1; str[k]; ++k)
                str[k-1] = str[k];
            str [k-1] = 0;
            continue;
        case cntrl ('Y'):       /* clear line */
            str [cp = 0] = 0;
            continue;
        }
    }
}