void Joystick_Vbtn_Update(float scale) { int i; VBTN_POINTS *p; p = Joystick_get_btn_points(scale); for (i = 0; i < VBTN_MAX; i++) { vbtn_state[i] = VBTN_NOUSE; //p6logd("id: %d x: %f y: %f", i, p->x, p->y); SET_VBTN(i, p->x, p->y, scale); p++; } }
void Joystick_Vbtn_Update(float scale) { int i; VBTN_POINTS *p; p = Joystick_get_btn_points(scale); for (i = 0; i < VBTN_MAX; i++) { vbtn_state[i] = VBTN_NOUSE; //__android_log_print(ANDROID_LOG_DEBUG,"Tag","id: %d x: %f y: %f", i, p->x, p->y); SET_VBTN(i, p->x, p->y, scale); p++; } }
void Joystick_Init(void) { joy[0] = 1; // とりあえず一つ目だけ有効 joy[1] = 0; JoyKeyState = 0; JoyKeyState0 = 0; JoyKeyState1 = 0; JoyState0[0] = 0xff; JoyState0[1] = 0xff; JoyState1[0] = 0xff; JoyState1[1] = 0xff; JoyPortData[0] = 0; JoyPortData[1] = 0; #ifdef ANDROID float density; int i; JNIEnv *env = (JNIEnv *)SDL_AndroidGetJNIEnv(); // DisplayMetrics jclass dispmetrics_class = (*env)->FindClass(env, "android/util/DisplayMetrics"); // new DisplayMetrics() jmethodID dispmetrics_init = (*env)->GetMethodID(env, dispmetrics_class, "<init>", "()V"); jobject *obj0; jobject *obj1; // SDLActivity.getContext obj0 = (jobject *)SDL_AndroidGetActivity(); // SDLActivity.getContext.getWindowManager obj1 = (*env)->CallObjectMethod( env, obj0, (*env)->GetMethodID(env, (*env)->GetObjectClass(env, obj0), "getWindowManager", "()Landroid/view/WindowManager;")); // SDLActivity.getContext.getWindowManager().getDefaultDisplay() obj0 = (*env)->CallObjectMethod( env, obj1, (*env)->GetMethodID(env, (*env)->GetObjectClass(env, obj1), "getDefaultDisplay", "()Landroid/view/Display;")); // obj1 = new DisplayMetrics(); obj1 = (*env)->NewObject(env, dispmetrics_class, dispmetrics_init); // SDLActivity.getContext.getWindowManager().getDefaultDisplay().getMetrics(obj1); (*env)->CallObjectMethod( env, obj0, (*env)->GetMethodID(env, (*env)->GetObjectClass(env, obj0), "getMetrics", "(Landroid/util/DisplayMetrics;)V"), obj1); // density(C) = obj1.density density = (float)((*env)->GetFloatField( env, obj1, (*env)->GetFieldID(env, dispmetrics_class, "density", "F"))); for (i = 0; i < VBTN_MAX; i++) { vbtn_state[i] = VBTN_NOUSE; } // 一辺64dpの正方形 vbtn_width = vbtn_height = (int)(64 * density / realdisp_w * 800); // 左右上下 (上上下下左右左右BAではない) SET_VBTN(0, 16, 120, VBTN_REF_DOWN + VBTN_REF_LEFT); SET_VBTN(1, 176, 120, VBTN_REF_DOWN + VBTN_REF_LEFT); SET_VBTN(2, 96, 160, VBTN_REF_DOWN + VBTN_REF_LEFT); SET_VBTN(3, 96, 80, VBTN_REF_DOWN + VBTN_REF_LEFT); // ボタン SET_VBTN(4, 160, 80, VBTN_REF_DOWN + VBTN_REF_RIGHT); SET_VBTN(5, 80, 160, VBTN_REF_DOWN + VBTN_REF_RIGHT); #endif }