Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "BM2KEY.h"
- int TTcheck(int contr[],int contnum,int Ccancel){
- //感度調整用
- int sensitive = 10;
- static int TTstat[2]={0,0};
- static DWORD befPX[2];
- static int downCount[2];
- //upCount[]を追加
- static int upCount[2];
- static bool firstrun = true;
- JOYINFOEX JoyInfoEx;
- JoyInfoEx.dwSize = sizeof(JOYINFOEX);
- JoyInfoEx.dwFlags = JOY_RETURNALL;
- if(firstrun){
- if(JOYERR_NOERROR == joyGetPosEx(contr[contnum], &JoyInfoEx)){
- befPX[contnum] = JoyInfoEx.dwXpos;
- }
- firstrun=false;
- }
- if(JOYERR_NOERROR == joyGetPosEx(contr[contnum], &JoyInfoEx)){
- DWORD dwXpos = JoyInfoEx.dwXpos;
- if(dwXpos!=befPX[contnum]){
- //変化した場合
- if(dwXpos > befPX[contnum]){
- //数値が増えた場合、UPと仮定する
- //ただし、差をとって0x7fffより大きかったら、0x0000→0xffffと通ったと判定
- if(0x7fff>(dwXpos - befPX[contnum])){
- //UP判定でupCountがマイナスだったら0クリアする
- if(upCount[contnum]<0){
- upCount[contnum]=0;
- }
- //DOWN判定のとき、upCountをプラスカウントする
- //sensitive変数に定義した数値より数字が大きくなってからDOWNにする
- if(upCount[contnum] < sensitive){
- upCount[contnum]++;
- }else{
- TTstat[contnum]=UP;
- }
- }else{
- //DOWN判定でupCountがプラスだったら0クリアする
- if(upCount[contnum]>0){
- upCount[contnum]=0;
- }
- //DOWN判定のとき、upCountをマイナスカウントする
- //sensitive変数に定義した数値より数字が大きくなってからDOWNにする
- if(-upCount[contnum] < sensitive){
- upCount[contnum]--;
- }else{
- TTstat[contnum]=DOWN;
- }
- }
- }else{
- if(0x7fff>(befPX[contnum] - dwXpos)){
- if(upCount[contnum]>0){
- upCount[contnum]=0;
- }
- if(-upCount[contnum] < sensitive){
- upCount[contnum]--;
- }else{
- TTstat[contnum]=DOWN;
- }
- }else{
- if(upCount[contnum]<0){
- upCount[contnum]=0;
- }
- if(upCount[contnum] < sensitive){
- upCount[contnum]++;
- }else{
- TTstat[contnum]=UP;
- }
- }
- }
- downCount[contnum]=0;
- }else{
- //変化しなかった場合
- if(downCount[contnum]>Ccancel){
- //皿が中立に戻るときにupCountをクリア
- upCount[contnum]=0;
- TTstat[contnum]=CENTER;
- }else{
- downCount[contnum]++;
- }
- }
- befPX[contnum] = JoyInfoEx.dwXpos;
- }else{
- printf("Error\n");
- }
- return TTstat[contnum];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement