2 Commits
Author SHA1 Message Date
Waterdish 821dd700ff Fix free look not working with controllers 2024-11-23 22:58:07 -08:00
Waterdish ef7780ffaa Better c-button fix 2024-11-23 20:07:55 -08:00
3 changed files with 35 additions and 26 deletions
@@ -149,25 +149,6 @@ public class MainActivity extends SDLActivity{
} }
} }
File configFile = new File(getExternalFilesDir(null), "2ship2harkinian.json");
if (!configFile.exists()) {
try {
InputStream in = getAssets().open("2ship2harkinian.json");
OutputStream out = new FileOutputStream(configFile);
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
private native void nativeHandleSelectedFile(String filePath); private native void nativeHandleSelectedFile(String filePath);
@@ -219,6 +200,7 @@ public class MainActivity extends SDLActivity{
public native void attachController(); public native void attachController();
public native void detachController();
// Native method for setting button state // Native method for setting button state
public native void setButton(int button, boolean value); public native void setButton(int button, boolean value);
public native void setCameraState(int axis, float value); public native void setCameraState(int axis, float value);
@@ -284,10 +266,10 @@ public class MainActivity extends SDLActivity{
addTouchListener(buttonX, ControllerButtons.BUTTON_X); // SDL Button 2 (X) addTouchListener(buttonX, ControllerButtons.BUTTON_X); // SDL Button 2 (X)
addTouchListener(buttonY, ControllerButtons.BUTTON_Y); // SDL Button 3 (Y) addTouchListener(buttonY, ControllerButtons.BUTTON_Y); // SDL Button 3 (Y)
addTouchListener(buttonDpadUp, ControllerButtons.BUTTON_DPAD_UP); // SDL Button 10 (D-Pad Up) setupCButtons(buttonDpadUp, ControllerButtons.AXIS_RY, 1); // SDL Button 10 (D-Pad Up)
addTouchListener(buttonDpadDown, ControllerButtons.BUTTON_DPAD_DOWN); // SDL Button 11 (D-Pad Down) setupCButtons(buttonDpadDown, ControllerButtons.AXIS_RY , -1); // SDL Button 11 (D-Pad Down)
addTouchListener(buttonDpadLeft, ControllerButtons.BUTTON_DPAD_LEFT); // SDL Button 12 (D-Pad Left) setupCButtons(buttonDpadLeft, ControllerButtons.AXIS_RX, 1); // SDL Button 12 (D-Pad Left)
addTouchListener(buttonDpadRight, ControllerButtons.BUTTON_DPAD_RIGHT); // SDL Button 13 (D-Pad Right) setupCButtons(buttonDpadRight, ControllerButtons.AXIS_RX, -1); // SDL Button 13 (D-Pad Right)
addTouchListener(buttonLB, ControllerButtons.BUTTON_LB); // SDL Button 4 (LB) addTouchListener(buttonLB, ControllerButtons.BUTTON_LB); // SDL Button 4 (LB)
addTouchListener(buttonRB, ControllerButtons.BUTTON_RB); // SDL Button 5 (RB) addTouchListener(buttonRB, ControllerButtons.BUTTON_RB); // SDL Button 5 (RB)
@@ -309,14 +291,19 @@ public class MainActivity extends SDLActivity{
private void setupToggleButton(Button button, ViewGroup uiGroup){ private void setupToggleButton(Button button, ViewGroup uiGroup){
boolean isHidden = preferences.getBoolean("controlsVisible", false); // Default to 'false' (visible) boolean isHidden = preferences.getBoolean("controlsVisible", false); // Default to 'false' (visible)
uiGroup.setVisibility(isHidden ? View.INVISIBLE : View.VISIBLE); // Set the initial visibility based on the saved state uiGroup.setVisibility(isHidden ? View.INVISIBLE : View.VISIBLE); // Set the initial visibility based on the saved state
/*if(isHidden){
detachController();
}*/
button.setOnClickListener(new View.OnClickListener() { button.setOnClickListener(new View.OnClickListener() {
boolean isHidden = false; boolean isHidden = false;
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (isHidden) { if (isHidden) {
uiGroup.setVisibility(View.VISIBLE); // Show UI elements uiGroup.setVisibility(View.VISIBLE); // Show UI elements
//attachController();
} else { } else {
uiGroup.setVisibility(View.INVISIBLE); // Hide UI elements uiGroup.setVisibility(View.INVISIBLE); // Hide UI elements
//detachController();
} }
preferences.edit().putBoolean("controlsVisible", !isHidden).apply(); preferences.edit().putBoolean("controlsVisible", !isHidden).apply();
isHidden = !isHidden; // Toggle state isHidden = !isHidden; // Toggle state
@@ -347,6 +334,28 @@ public class MainActivity extends SDLActivity{
}); });
} }
private void setupCButtons(Button button, int buttonNum, int direction) {
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
setAxis(buttonNum, direction<0 ? Short.MAX_VALUE : Short.MIN_VALUE);
button.setPressed(true);
return true;
case MotionEvent.ACTION_UP:
setAxis(buttonNum, (short) 0);
button.setPressed(false);
return true;
case MotionEvent.ACTION_CANCEL:
setAxis(buttonNum, (short) 0);
return true;
}
return false;
}
});
}
boolean TouchAreaEnabled = true; boolean TouchAreaEnabled = true;
void DisableTouchArea(){ void DisableTouchArea(){
+2 -2
View File
@@ -101,8 +101,8 @@ bool Camera_FreeLook(Camera* camera) {
#ifdef __ANDROID__ #ifdef __ANDROID__
if(Ship::Mobile::IsUsingTouchscreenControls()) { if(Ship::Mobile::IsUsingTouchscreenControls()) {
yawDiff = -Ship::Mobile::GetCameraYaw()*10.0f; yawDiff += -Ship::Mobile::GetCameraYaw()*10.0f;
pitchDiff = Ship::Mobile::GetCameraPitch()*10.0f; pitchDiff += Ship::Mobile::GetCameraPitch()*10.0f;
} }
#endif #endif