Add ability to hide joystick controls overlay

This commit is contained in:
Aaron Culliney 2015-08-22 11:05:18 -07:00
parent 704c381ea8
commit 5df1e2400e
9 changed files with 79 additions and 13 deletions

View File

@ -204,12 +204,12 @@ public class Apple2JoystickSettingsMenu extends Apple2AbstractMenu {
JOYSTICK_ADVANCED {
@Override
public final String getTitle(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_advanced);
return activity.getResources().getString(R.string.settings_advanced);
}
@Override
public final String getSummary(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_advanced_summary);
return activity.getResources().getString(R.string.settings_advanced_joystick_summary);
}
@Override
@ -272,6 +272,30 @@ public class Apple2JoystickSettingsMenu extends Apple2AbstractMenu {
}
protected enum SETTINGS implements Apple2AbstractMenu.IMenuEnum {
JOYSTICK_VISIBILITY {
@Override
public final String getTitle(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_visible);
}
@Override
public final String getSummary(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_visible_summary);
}
@Override
public View getView(final Apple2Activity activity, View convertView) {
convertView = _basicView(activity, this, convertView);
CheckBox cb = _addCheckbox(activity, this, convertView, Apple2Preferences.JOYSTICK_VISIBILITY.booleanValue(activity));
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Apple2Preferences.JOYSTICK_VISIBILITY.saveBoolean(activity, isChecked);
}
});
return convertView;
}
},
JOYSTICK_AXIS_ON_LEFT {
@Override
public final String getTitle(Apple2Activity activity) {

View File

@ -133,12 +133,12 @@ public class Apple2KeypadSettingsMenu extends Apple2AbstractMenu {
KEYPAD_ADVANCED {
@Override
public final String getTitle(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_advanced);
return activity.getResources().getString(R.string.settings_advanced);
}
@Override
public final String getSummary(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_advanced_summary);
return activity.getResources().getString(R.string.settings_advanced_joystick_summary);
}
@Override
@ -263,12 +263,12 @@ public class Apple2KeypadSettingsMenu extends Apple2AbstractMenu {
JOYSTICK_ADVANCED {
@Override
public final String getTitle(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_advanced);
return activity.getResources().getString(R.string.settings_advanced_joystick);
}
@Override
public final String getSummary(Apple2Activity activity) {
return activity.getResources().getString(R.string.joystick_advanced_summary);
return activity.getResources().getString(R.string.settings_advanced_joystick_summary);
}
@Override

View File

@ -334,6 +334,17 @@ public enum Apple2Preferences {
return activity.getPreferences(Context.MODE_PRIVATE).getInt(toString(), JOYSTICK_DIVIDER_NUM_CHOICES >> 1);
}
},
JOYSTICK_VISIBILITY {
@Override
public void load(Apple2Activity activity) {
nativeSetTouchJoystickVisibility(booleanValue(activity));
}
@Override
public boolean booleanValue(Apple2Activity activity) {
return activity.getPreferences(Context.MODE_PRIVATE).getBoolean(toString(), true);
}
},
KEYPAD_KEYS {
@Override
public void load(Apple2Activity activity) {
@ -841,6 +852,8 @@ public enum Apple2Preferences {
private static native void nativeSetTouchJoystickButtonSwitchThreshold(int delta);
private static native void nativeSetTouchJoystickVisibility(boolean visibility);
public static native void nativeSetTouchMenuEnabled(boolean enabled);
private static native void nativeSetTouchMenuVisibility(float alpha);

View File

@ -33,8 +33,6 @@
<string name="input_first_keyboard">Touch keyboard</string>
<string name="joystick">Joystick</string>
<string name="joystickA">Touch Joystick</string>
<string name="joystick_advanced">Advanced tuning…</string>
<string name="joystick_advanced_summary">Various joystick/keypad configuration parameters</string>
<string name="joystick_axis_sensitivity_summary">Tune joystick axis sensitivity (decelerate or accelerate)</string>
<string name="joystick_button_axis_enable">Enable button axis</string>
<string name="joystick_button_axis_enable_summary">Enable button axis</string>
@ -53,11 +51,13 @@
<string name="joystick_calibrate">Calibrate…</string>
<string name="joystick_calibrate_summary">Configure and test current settings</string>
<string name="joystick_configure">Configure joystick…</string>
<string name="joystick_configure_summary">Axis touch/tilt, buttons, etc</string>
<string name="joystick_configure_summary">Axis touch, buttons, etc</string>
<string name="joystick_current">Current joystick flavor</string>
<string name="joystick_current_summary">Emulated physical joystick or keypad</string>
<string name="joystick_axisleft">Joystick/keypad axis on left</string>
<string name="joystick_axisleft_summary">Joystick/keypad axis on left (buttons on right)</string>
<string name="joystick_visible">Joystick/keypad visibility</string>
<string name="joystick_visible_summary">Show controls overlay when engaged</string>
<string name="key_closed_apple">[ClosedApple]</string>
<string name="key_ctrl">[Ctrl]</string>
<string name="key_down">&#8595;</string>
@ -69,6 +69,9 @@
<string name="key_right">&#8594;</string>
<string name="key_space">[Space]</string>
<string name="key_up">&#8593;</string>
<string name="keyboard">Keyboard</string>
<string name="keyboard_configure">Configure keyboard…</string>
<string name="keyboard_configure_summary">Transparency, fading, custom keys</string>
<string name="keyboard_visibility">Keyboard visibility</string>
<string name="keyboard_visibility_summary">Keyboard visibility when inactive</string>
<string name="keypad">Keypad Joystick</string>
@ -84,7 +87,7 @@
<string name="keypad_choose_current">Choose XXX Key: </string>
<string name="keypad_chosen_keys">I,J,K,M [Space]</string>
<string name="keypad_configure">Configure keypad joystick…</string>
<string name="keypad_configure_summary">Axis touch/tilt, buttons, etc</string>
<string name="keypad_configure_summary">@string/joystick_configure_summary</string>
<string name="keypad_key_axis_c">Center</string>
<string name="keypad_key_axis_dn">Down</string>
<string name="keypad_key_axis_dl">Down and Left</string>
@ -106,9 +109,6 @@
<string name="keypad_preset_left_right_space">&#8592;,&#8594;, tap spacebar</string>
<string name="keypad_preset_wadx_space">W,A,D,X, tap spacebar</string>
<string name="keypad_repeat_summary">Key repeat threshold in secs</string>
<string name="keyboard">Keyboard</string>
<string name="keyboard_configure">Configure keyboard…</string>
<string name="keyboard_configure_summary">Transparency, fading, custom keys</string>
<string name="max">Max</string>
<string name="menu_disks">Load disk image…</string>
<string name="menu_disks_summary">Insert a Disk ][ image file</string>
@ -147,6 +147,8 @@
<string name="settings_audio">Apple2ix audio settings</string>
<string name="settings_advanced">Advanced settings</string>
<string name="settings_advanced_summary">Warning: these settings may potentially degrade emulation performance</string>
<string name="settings_advanced_joystick">Advanced joystick/keypad settings</string>
<string name="settings_advanced_joystick_summary">Advanced settings and performance tuning</string>
<string name="tab_general">General</string>
<string name="tab_joystick">Joystick</string>
<string name="title_activity_second">SecondActivity</string>

View File

@ -97,6 +97,11 @@ void Java_org_deadc0de_apple2ix_Apple2Preferences_nativeSetCurrentTouchDevice(JN
}
}
void Java_org_deadc0de_apple2ix_Apple2Preferences_nativeSetTouchJoystickVisibility(JNIEnv *env, jclass cls, jboolean visibility) {
LOG("visibility: %d", visibility);
joydriver_setShowControls(visibility);
}
jint Java_org_deadc0de_apple2ix_Apple2Preferences_nativeGetCurrentTouchDevice(JNIEnv *env, jclass cls) {
LOG("%s", "");
if (joydriver_ownsScreen()) {

View File

@ -276,6 +276,7 @@ void (*joydriver_setAxisOnLeft)(bool axisIsOnLeft) = NULL;
void (*joydriver_beginCalibration)(void) = NULL;
void (*joydriver_endCalibration)(void) = NULL;
bool (*joydriver_isCalibrating)(void) = NULL;
void (*joydriver_setShowControls)(bool showControls) = NULL;
void (*joydriver_setKeyRepeatThreshold)(float repeatThresholdSecs) = NULL;
#endif

View File

@ -122,6 +122,9 @@ extern void (*joydriver_endCalibration)(void);
// end calibration mode
extern bool (*joydriver_isCalibrating)(void);
// set controls visibility
extern void (*joydriver_setShowControls)(bool showControls);
// set key repeat threshold (keypad joystick)
extern void (*joydriver_setKeyRepeatThreshold)(float repeatThresholdSecs);

View File

@ -108,6 +108,10 @@ static void _setup_axis_object(GLModel *parent) {
return;
}
if (!joyglobals.showControls) {
return;
}
GLModelHUDElement *hudElement = (GLModelHUDElement *)parent->custom;
if (hudElement->tpl == NULL) {
@ -156,6 +160,10 @@ static void _setup_button_object(GLModel *parent) {
return;
}
if (!joyglobals.showControls) {
return;
}
GLModelHUDElement *hudElement = (GLModelHUDElement *)parent->custom;
if (hudElement->tpl == NULL) {
@ -345,6 +353,9 @@ static void gltouchjoy_render(void) {
if (!joyglobals.ownsScreen) {
return;
}
if (!joyglobals.showControls) {
return;
}
glViewport(0, 0, touchport.width, touchport.height); // NOTE : show these HUD elements beyond the A2 framebuffer dimensions
@ -663,6 +674,10 @@ static bool gltouchjoy_ownsScreen(void) {
return joyglobals.ownsScreen;
}
static void gltouchjoy_setShowControls(bool showControls) {
joyglobals.showControls = showControls;
}
static void _animation_showTouchJoystick(void) {
if (!joyglobals.isAvailable) {
return;
@ -845,6 +860,7 @@ static void _init_gltouchjoy(void) {
joyglobals.isEnabled = true;
joyglobals.ownsScreen = true;
joyglobals.showControls = true;
joyglobals.screenDivider = 0.5f;
joyglobals.axisIsOnLeft = true;
joyglobals.switchThreshold = BUTTON_SWITCH_THRESHOLD_DEFAULT;
@ -856,6 +872,7 @@ static void _init_gltouchjoy(void) {
joydriver_setTouchJoystickEnabled = &gltouchjoy_setTouchJoystickEnabled;
joydriver_setTouchJoystickOwnsScreen = &gltouchjoy_setTouchJoystickOwnsScreen;
joydriver_ownsScreen = &gltouchjoy_ownsScreen;
joydriver_setShowControls = &gltouchjoy_setShowControls;
joydriver_setTouchButtonTypes = &gltouchjoy_setTouchButtonTypes;
joydriver_setTapDelay = &gltouchjoy_setTapDelay;
joydriver_setTouchAxisSensitivity = &gltouchjoy_setTouchAxisSensitivity;

View File

@ -26,6 +26,7 @@ typedef struct GLTouchJoyGlobals {
bool isCalibrating; // Are we running in calibration mode?
bool isEnabled; // Does player want touchjoy enabled?
bool ownsScreen; // Does the touchjoy currently own the screen?
bool showControls; // Are controls visible
float minAlphaWhenOwnsScreen;
float minAlpha;
float screenDivider;