Esempio n. 1
0
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++;
    }
}
Esempio n. 2
0
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++;
	}
}
Esempio n. 3
0
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
}