X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_in.c;h=2fa528996eb2388320fda8994f406132bdd6b21c;hb=482dcb216b9068878dbfcf8265d9b7fd2cdc82a2;hp=b19702d088ccabb92f92e633b89ea6c3a3102f59;hpb=96a1197c2071ccb64faa19b149a22b86ce3b3d5e;p=16.git diff --git a/src/lib/16_in.c b/src/lib/16_in.c old mode 100644 new mode 100755 index b19702d0..2fa52899 --- a/src/lib/16_in.c +++ b/src/lib/16_in.c @@ -38,6 +38,8 @@ #include "src/lib/16_in.h" +word testkeyin=1,testcontrolnoisy=0; + /* ============================================================================= @@ -151,10 +153,13 @@ static Direction DirTable[] = // Quick lookup for total direction { //dir_Nortinest, dir_North, + dir_West, + dir_None, + dir_East, + dir_South //dir_NorthEast, - dir_West, dir_None, dir_East, //dir_Soutinest, - dir_South//,dir_SouthEast + //,dir_SouthEast }; #ifdef __cplusplus } @@ -231,9 +236,9 @@ static boolean special; if (INL_KeyHook && !special) INL_KeyHook(); - #ifdef TESTKEYIN - printf("%c %x %u\n", c, k, inpu.Keyboard[k]); - #endif +//#ifdef TESTKEYIN + if(testkeyin > 0) printf("%c %x %u\n", c, k, inpu.Keyboard[k]); +//endif outp(0x20,0x20); } @@ -367,10 +372,10 @@ static void INL_GetJoyDelta(word joy,int *dx,int *dy,boolean adaptive) { word x,y; - dword time; - dword TimeCount = *clockdw; + word time; + word TimeCount = *clockw; JoystickDef *def; -static dword lasttime; +static word lasttime; IN_GetJoyAbs(joy,&x,&y); def = inpu.JoyDefs + joy; @@ -462,8 +467,8 @@ register word result; word IN_GetJoyButtonsDB(word joy) { - dword TimeCount = *clockdw; - dword lasttime; + word TimeCount = *clockw; + word lasttime; word result1,result2; do @@ -674,7 +679,7 @@ IN_Default(boolean gotit,player_t *player,ControlType nt) || ((nt == ctrl_Joypad2) && !inpu.JoyPadPresent[1]) ) nt = ctrl_Keyboard1; - inpu.KbdDefs[0].button0 = 0x1d; + inpu.KbdDefs[0].button0 = 0x1c; inpu.KbdDefs[0].button1 = 0x38; //in.KbdDefs[0].upleft = 0x47; inpu.KbdDefs[0].up = 0x48; @@ -794,7 +799,7 @@ IN_ReadCursor(CursorInfo *info) // player and fills in the control info struct // /////////////////////////////////////////////////////////////////////////// -void +void near IN_ReadControl(int playnum,player_t *player) { boolean realdelta; @@ -803,6 +808,7 @@ IN_ReadControl(int playnum,player_t *player) int dx,dy; Motion mx,my; ControlType type; + sword conpee; register KeyboardDef *def; dx = dy = 0; @@ -845,19 +851,18 @@ register KeyboardDef *def; mx = motion_Left,my = motion_Down; else if (Keyboard[def->downright]) mx = motion_Right,my = motion_Down;*/ - if(!inpu.Keyboard[def->left] && !inpu.Keyboard[def->right]){ - if (inpu.Keyboard[def->up]) + if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down] && player[playnum].d == 2))// || player[playnum].info.dir == 0) my = motion_Up; - else if (inpu.Keyboard[def->down]) + if((inpu.Keyboard[def->down] && !inpu.Keyboard[def->up] && player[playnum].d == 2))// || player[playnum].info.dir == 4) my = motion_Down; - }else if(!inpu.Keyboard[def->up] && !inpu.Keyboard[def->down]){ - if (inpu.Keyboard[def->left]) + if((inpu.Keyboard[def->left] && !inpu.Keyboard[def->right] && player[playnum].d == 2))// || player[playnum].info.dir == 1) mx = motion_Left; - else if (inpu.Keyboard[def->right]) + if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left] && player[playnum].d == 2))// || player[playnum].info.dir == 3) mx = motion_Right; } + //input from player if (inpu.Keyboard[def->button0]) buttons += 1 << 0; if (inpu.Keyboard[def->button1]) @@ -891,8 +896,8 @@ register KeyboardDef *def; } else { - dx = mx * 127; - dy = my * 127; + dx = mx;// * 127; + dy = my;// * 127; } player[playnum].info.x = dx; @@ -903,7 +908,14 @@ register KeyboardDef *def; player[playnum].info.button1 = buttons & (1 << 1); player[playnum].info.button2 = buttons & (1 << 2); player[playnum].info.button3 = buttons & (1 << 3); - player[playnum].info.dir = DirTable[((my + 1) * 3) + (mx + 1)]; +// player[playnum].info.dir = DirTable[((my + 1) * 3) + (mx + 1)]; + conpee=(((my + 1) * 2) + (mx + 1)); + if(conpee) conpee--; + player[playnum].info.dir = DirTable[conpee]; + if(player[playnum].q==1 && (mx!=motion_None || my!=motion_None)) + { + player[playnum].d = player[playnum].info.dir; + } #if DEMO0 if (DemoMode == demo_Record) @@ -930,9 +942,15 @@ register KeyboardDef *def; } } #endif -#ifdef TESTCONTROLNOISY -printf("dir=%d\n", player[playnum].info.dir); -#endif +//#ifdef TESTCONTROLNOISY +if(testcontrolnoisy > 0) +if((inpu.Keyboard[def->up] || inpu.Keyboard[def->down] || inpu.Keyboard[def->left] || inpu.Keyboard[def->right])&& player[playnum].info.dir!=2) +{ + printf("(mx)=%d ", mx); + printf("(my)=%d ", my); + printf("dir=%d\n", player[playnum].info.dir); +} +//#endif } /////////////////////////////////////////////////////////////////////////// @@ -1166,8 +1184,8 @@ IN_IsUserInput() boolean IN_UserInput(dword delay,boolean clear) { - dword TimeCount = *clockdw; - dword lasttime; + word TimeCount = *clockw; + word lasttime; lasttime = TimeCount; do @@ -1196,7 +1214,9 @@ void IN_ClearKey(byte code) boolean IN_qb(byte kee) { - printf("%u\n", inpu.Keyboard[kee]); +//#ifdef TESTKEYIN +// if(testkeyin > 0) printf("%u\n", inpu.Keyboard[kee]); +//#endif if(inpu.Keyboard[kee]==true) return 1; else return 0; }