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; } } } }
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 ); }
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); }
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); }
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; } } }
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 --; } }
/******************Ö÷³ÌÐò********************************/ 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; } }
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; } } }
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; } }
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; } } } }
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); }
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; } } }
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); } }
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; } } }