Advertisement
Guest User

TTcheck.cpp

a guest
Jan 12th, 2022
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. #include "BM2KEY.h"
  2.  
  3.  
  4. int TTcheck(int contr[],int contnum,int Ccancel){
  5.  
  6. //感度調整用
  7. int sensitive = 10;
  8.  
  9. static int TTstat[2]={0,0};
  10. static DWORD befPX[2];
  11. static int downCount[2];
  12.  
  13. //upCount[]を追加
  14. static int upCount[2];
  15.  
  16. static bool firstrun = true;
  17. JOYINFOEX JoyInfoEx;
  18. JoyInfoEx.dwSize = sizeof(JOYINFOEX);
  19. JoyInfoEx.dwFlags = JOY_RETURNALL;
  20.  
  21. if(firstrun){
  22. if(JOYERR_NOERROR == joyGetPosEx(contr[contnum], &JoyInfoEx)){
  23. befPX[contnum] = JoyInfoEx.dwXpos;
  24. }
  25. firstrun=false;
  26. }
  27.  
  28. if(JOYERR_NOERROR == joyGetPosEx(contr[contnum], &JoyInfoEx)){
  29. DWORD dwXpos = JoyInfoEx.dwXpos;
  30. if(dwXpos!=befPX[contnum]){
  31. //変化した場合
  32. if(dwXpos > befPX[contnum]){
  33. //数値が増えた場合、UPと仮定する
  34. //ただし、差をとって0x7fffより大きかったら、0x0000→0xffffと通ったと判定
  35. if(0x7fff>(dwXpos - befPX[contnum])){
  36.  
  37. //UP判定でupCountがマイナスだったら0クリアする
  38. if(upCount[contnum]<0){
  39. upCount[contnum]=0;
  40. }
  41.  
  42. //DOWN判定のとき、upCountをプラスカウントする
  43. //sensitive変数に定義した数値より数字が大きくなってからDOWNにする
  44. if(upCount[contnum] < sensitive){
  45. upCount[contnum]++;
  46. }else{
  47. TTstat[contnum]=UP;
  48. }
  49. }else{
  50. //DOWN判定でupCountがプラスだったら0クリアする
  51. if(upCount[contnum]>0){
  52. upCount[contnum]=0;
  53. }
  54.  
  55. //DOWN判定のとき、upCountをマイナスカウントする
  56. //sensitive変数に定義した数値より数字が大きくなってからDOWNにする
  57. if(-upCount[contnum] < sensitive){
  58. upCount[contnum]--;
  59. }else{
  60. TTstat[contnum]=DOWN;
  61. }
  62. }
  63. }else{
  64. if(0x7fff>(befPX[contnum] - dwXpos)){
  65. if(upCount[contnum]>0){
  66. upCount[contnum]=0;
  67. }
  68. if(-upCount[contnum] < sensitive){
  69. upCount[contnum]--;
  70. }else{
  71. TTstat[contnum]=DOWN;
  72. }
  73. }else{
  74. if(upCount[contnum]<0){
  75. upCount[contnum]=0;
  76. }
  77. if(upCount[contnum] < sensitive){
  78. upCount[contnum]++;
  79. }else{
  80. TTstat[contnum]=UP;
  81. }
  82. }
  83. }
  84. downCount[contnum]=0;
  85. }else{
  86. //変化しなかった場合
  87. if(downCount[contnum]>Ccancel){
  88. //皿が中立に戻るときにupCountをクリア
  89. upCount[contnum]=0;
  90. TTstat[contnum]=CENTER;
  91. }else{
  92. downCount[contnum]++;
  93. }
  94. }
  95. befPX[contnum] = JoyInfoEx.dwXpos;
  96. }else{
  97. printf("Error\n");
  98. }
  99.  
  100. return TTstat[contnum];
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement