diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 690fea61d..a27073baa 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,13 +63,6 @@ android:name=".MainActivity" android:configChanges="keyboardHidden|orientation|screenSize|keyboard|navigation"/> - - perKey : androidToLwjglMap.entrySet()) { if (i == 1 && (keyEvent.getSource() == InputDevice.SOURCE_MOUSE)) { // Right mouse detection - mainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, true); - mainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, false); + BaseMainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown); + // BaseMainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, false); } else if (perKey.getKey() == i) { - mainActivity.sendKeyPress(perKey.getValue(), keyEvent.getModifiers(), isDown); + BaseMainActivity.sendKeyPress(perKey.getValue(), keyEvent.getModifiers(), isDown); } } @@ -196,14 +196,14 @@ public class AndroidLWJGLKeycode { try { if ((int) keyEvent.getDisplayLabel() != KeyEvent.KEYCODE_UNKNOWN && !CallbackBridge.isGrabbing()) { - mainActivity.sendKeyPress(androidToLwjglMap.get(keyEvent.getKeyCode()), (char) keyEvent.getUnicodeChar(), keyEvent.getScanCode(), mods, isDown); + BaseMainActivity.sendKeyPress(androidToLwjglMap.get(keyEvent.getKeyCode()), (char) keyEvent.getUnicodeChar(), keyEvent.getScanCode(), mods, isDown); } } catch (Throwable th) { th.printStackTrace(); } if (isBackspaceAfterChar && (int) keyEvent.getDisplayLabel() != KeyEvent.KEYCODE_UNKNOWN && !CallbackBridge.isGrabbing() && i != KeyEvent.KEYCODE_DEL) { - mainActivity.sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_BACKSPACE, 0, isDown); + BaseMainActivity.sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_BACKSPACE, 0, isDown); } } diff --git a/app/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java index 3ccc4565a..64c78ccfc 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java @@ -73,6 +73,8 @@ public class BaseMainActivity extends LoggableActivity { private DrawerLayout drawerLayout; private NavigationView navDrawer; + + private CapturedEditText mKeyHandlerView; private LinearLayout contentLog; private TextView textLog; @@ -196,6 +198,11 @@ public class BaseMainActivity extends LoggableActivity { // toggleGui(null); this.drawerLayout.closeDrawers(); + mKeyHandlerView = findViewById(R.id.main_key_handler); + mKeyHandlerView.setFocusable(true); + mKeyHandlerView.setFocusableInTouchMode(true); + mKeyHandlerView.requestFocus(); + AndroidLWJGLKeycode.isBackspaceAfterChar = true; // mVersionInfo.minimumLauncherVersion >= 18; placeMouseAt(CallbackBridge.windowWidth / 2, CallbackBridge.windowHeight / 2); @@ -712,50 +719,6 @@ public class BaseMainActivity extends LoggableActivity { e.printStackTrace(); Tools.showError(this, e, true); } - - // Mirror video of OpenGL view. - /* - new Thread(new Runnable(){ - - @Override - public void run() - { - try { - while (true) { - if (bit == null) continue; - runOnUiThread(new Runnable(){ - - @Override - public void run() - { - fillCanvasGL(); - mirrorView.setImageBitmap(bit); - } - }); - - // ~33fps render - Thread.sleep(30); - } - } catch (Throwable th) { - th.printStackTrace(); - } - } - }).start(); - */ - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) - { - AndroidLWJGLKeycode.execKey(this, event, keyCode, false); - return super.onKeyUp(keyCode, event); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - AndroidLWJGLKeycode.execKey(this, event, keyCode, true); - return super.onKeyDown(keyCode, event); } //private Dialog menuDial; @@ -1042,8 +1005,10 @@ public class BaseMainActivity extends LoggableActivity { public void onBackPressed() { // Prevent back // Catch back as Esc keycode at another place - } + // sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_ESCAPE); + } + public void hideKeyboard() { try { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); @@ -1086,8 +1051,8 @@ public class BaseMainActivity extends LoggableActivity { sendKeyPress(keyCode, 0, false); } - private boolean isLeftMouseDown, isRightMouseDown; - public void sendMouseButton(int button, boolean status) { + private static boolean isLeftMouseDown, isRightMouseDown; + public static void sendMouseButton(int button, boolean status) { // TODO implement this method!!! // CallbackBridge.setMouseButtonInGrabMode((byte) button, status ? (byte) 1 : (byte) 0); // or diff --git a/app/src/main/java/net/kdt/pojavlaunch/CapturedEditText.java b/app/src/main/java/net/kdt/pojavlaunch/CapturedEditText.java new file mode 100644 index 000000000..c7e84cec4 --- /dev/null +++ b/app/src/main/java/net/kdt/pojavlaunch/CapturedEditText.java @@ -0,0 +1,29 @@ +package net.kdt.pojavlaunch; + +import android.content.*; +import android.util.*; +import android.widget.*; +import android.view.*; + +public class CapturedEditText extends EditText +{ + public CapturedEditText(Context ctx) { + this(ctx, null); + } + + public CapturedEditText(Context ctx, AttributeSet attrs) { + super(ctx, attrs); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + AndroidLWJGLKeycode.execKey(event, keyCode, true); + return true; + } + + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + AndroidLWJGLKeycode.execKey(event, keyCode, false); + return true; + } +} diff --git a/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java deleted file mode 100644 index fb9d5fd11..000000000 --- a/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java +++ /dev/null @@ -1,113 +0,0 @@ -package net.kdt.pojavlaunch; - -import android.os.*; -import android.view.*; -import android.view.View.*; -import android.widget.*; -import net.kdt.pojavlaunch.customcontrols.*; -import net.kdt.pojavlaunch.prefs.*; -import org.lwjgl.glfw.*; -import java.io.*; -import com.google.gson.*; - -public class CustomCtrlMainActivity extends BaseMainActivity { - private ControlLayout mControlLayout; - - private View.OnClickListener mClickListener; - private View.OnTouchListener mTouchListener; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initLayout(R.layout.main_with_customctrl); - - mClickListener = new View.OnClickListener(){ - @Override - public void onClick(View view) { - if (view instanceof ControlButton) { - ControlButton button = (ControlButton) view; - switch (button.getProperties().keycode) { - case ControlData.SPECIALBTN_KEYBOARD: - showKeyboard(); - break; - - case ControlData.SPECIALBTN_TOGGLECTRL: - mControlLayout.toggleControlVisible(); - break; - - case ControlData.SPECIALBTN_VIRTUALMOUSE: - toggleMouse(button); - break; - } - } - } - }; - - mTouchListener = new View.OnTouchListener(){ - @Override - public boolean onTouch(View view, MotionEvent e) { - boolean isDown; - switch (e.getActionMasked()) { - case MotionEvent.ACTION_DOWN: // 0 - case MotionEvent.ACTION_POINTER_DOWN: // 5 - isDown = true; - break; - case MotionEvent.ACTION_UP: // 1 - case MotionEvent.ACTION_CANCEL: // 3 - case MotionEvent.ACTION_POINTER_UP: // 6 - isDown = false; - break; - default: - return false; - } - - if (view instanceof ControlButton) { - ControlButton button = (ControlButton) view; - switch (button.getProperties().keycode) { - case ControlData.SPECIALBTN_MOUSEPRI: - sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown); - break; - - case ControlData.SPECIALBTN_MOUSEMID: - sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_MIDDLE, isDown); - break; - - case ControlData.SPECIALBTN_MOUSESEC: - if (CallbackBridge.isGrabbing()) { - sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown); - } else { - CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown ? 1 : 0, CallbackBridge.mouseX, CallbackBridge.mouseY); - - setRightOverride(isDown); - } - break; - } - } - - return false; - } - }; - - ControlData[] specialButtons = ControlData.getSpecialButtons(); - specialButtons[0].specialButtonListener - = specialButtons[1].specialButtonListener - = specialButtons[4].specialButtonListener - = mClickListener; - - specialButtons[2].specialButtonListener - = specialButtons[3].specialButtonListener - = specialButtons[5].specialButtonListener - = mTouchListener; - - mControlLayout = findViewById(R.id.main_control_layout); - mControlLayout.setModifiable(false); - try { - mControlLayout.loadLayout(LauncherPreferences.PREF_DEFAULTCTRL_PATH); - } catch (Throwable th) { - Tools.showError(this, th); - } - - // toggleGui(null); - mControlLayout.toggleControlVisible(); - } -} diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 3134229c1..4a9a72045 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -7,131 +7,107 @@ import android.widget.*; import net.kdt.pojavlaunch.customcontrols.*; import net.kdt.pojavlaunch.prefs.*; import org.lwjgl.glfw.*; +import java.io.*; +import com.google.gson.*; -public class MainActivity extends BaseMainActivity implements OnClickListener, OnTouchListener { - private Button upButton, - downButton, leftButton, - rightButton, jumpButton, - primaryButton, secondaryButton, - debugButton, shiftButton, - keyboardButton, inventoryButton, - talkButton, thirdPersonButton, - zoomButton, listPlayersButton, - toggleControlButton; - - private Button[] controlButtons; - +public class MainActivity extends BaseMainActivity { + private ControlLayout mControlLayout; + + private View.OnClickListener mClickListener; + private View.OnTouchListener mTouchListener; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initLayout(R.layout.main); - - this.upButton = findButton(R.id.control_up); - this.downButton = findButton(R.id.control_down); - this.leftButton = findButton(R.id.control_left); - this.rightButton = findButton(R.id.control_right); - this.jumpButton = findButton(R.id.control_jump); - this.primaryButton = findButton(R.id.control_primary); - this.secondaryButton = findButton(R.id.control_secondary); - this.debugButton = findButton(R.id.control_debug); - this.shiftButton = findButton(R.id.control_shift); - this.keyboardButton = findButton(R.id.control_keyboard); - this.inventoryButton = findButton(R.id.control_inventory); - this.talkButton = findButton(R.id.control_talk); - this.thirdPersonButton = findButton(R.id.control_thirdperson); - this.zoomButton = findButton(R.id.control_zoom); - this.listPlayersButton = findButton(R.id.control_listplayers); - this.toggleControlButton = findButton(R.id.control_togglecontrol); - this.controlButtons = new Button[]{ - upButton, downButton, leftButton, rightButton, - jumpButton, primaryButton, secondaryButton, - debugButton, shiftButton, keyboardButton, - inventoryButton, talkButton, thirdPersonButton, - listPlayersButton + initLayout(R.layout.main_with_customctrl); + + mClickListener = new View.OnClickListener(){ + @Override + public void onClick(View view) { + if (view instanceof ControlButton) { + ControlButton button = (ControlButton) view; + switch (button.getProperties().keycode) { + case ControlData.SPECIALBTN_KEYBOARD: + showKeyboard(); + break; + + case ControlData.SPECIALBTN_TOGGLECTRL: + mControlLayout.toggleControlVisible(); + break; + + case ControlData.SPECIALBTN_VIRTUALMOUSE: + toggleMouse(button); + break; + } + } + } }; - this.toggleControlButton.setOnClickListener(this); - this.zoomButton.setVisibility(mVersionInfo.optifineLib == null ? View.GONE : View.VISIBLE); + + mTouchListener = new View.OnTouchListener(){ + @Override + public boolean onTouch(View view, MotionEvent e) { + boolean isDown; + switch (e.getActionMasked()) { + case MotionEvent.ACTION_DOWN: // 0 + case MotionEvent.ACTION_POINTER_DOWN: // 5 + isDown = true; + break; + case MotionEvent.ACTION_UP: // 1 + case MotionEvent.ACTION_CANCEL: // 3 + case MotionEvent.ACTION_POINTER_UP: // 6 + isDown = false; + break; + default: + return false; + } + + if (view instanceof ControlButton) { + ControlButton button = (ControlButton) view; + switch (button.getProperties().keycode) { + case ControlData.SPECIALBTN_MOUSEPRI: + sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown); + break; + + case ControlData.SPECIALBTN_MOUSEMID: + sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_MIDDLE, isDown); + break; + + case ControlData.SPECIALBTN_MOUSESEC: + if (CallbackBridge.isGrabbing()) { + sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown); + } else { + CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown ? 1 : 0, CallbackBridge.mouseX, CallbackBridge.mouseY); + + setRightOverride(isDown); + } + break; + } + } + + return false; + } + }; + + ControlData[] specialButtons = ControlData.getSpecialButtons(); + specialButtons[0].specialButtonListener + = specialButtons[1].specialButtonListener + = specialButtons[4].specialButtonListener + = mClickListener; + + specialButtons[2].specialButtonListener + = specialButtons[3].specialButtonListener + = specialButtons[5].specialButtonListener + = mTouchListener; + + mControlLayout = findViewById(R.id.main_control_layout); + mControlLayout.setModifiable(false); + try { + mControlLayout.loadLayout(LauncherPreferences.PREF_DEFAULTCTRL_PATH); + } catch (Throwable th) { + Tools.showError(this, th); + } // toggleGui(null); - onClick(toggleControlButton); - } - - @Override - public void onClick(View view) { - switch (view.getId()) { - case R.id.control_togglecontrol: { - /* - switch(overlayView.getVisibility()){ - case View.VISIBLE: overlayView.setVisibility(View.GONE); - break; - case View.GONE: overlayView.setVisibility(View.VISIBLE); - } - */ - - for (Button button : controlButtons) { - button.setVisibility(button.getVisibility() == View.GONE ? View.VISIBLE : View.GONE); - } - - zoomButton.setVisibility((zoomButton.getVisibility() == View.GONE && mVersionInfo.optifineLib != null) ? View.VISIBLE : View.GONE); - } - } - } - - public boolean onTouch(View v, MotionEvent e) { - boolean isDown; - switch (e.getActionMasked()) { - case MotionEvent.ACTION_DOWN: // 0 - case MotionEvent.ACTION_POINTER_DOWN: // 5 - isDown = true; - break; - case MotionEvent.ACTION_UP: // 1 - case MotionEvent.ACTION_CANCEL: // 3 - case MotionEvent.ACTION_POINTER_UP: // 6 - isDown = false; - break; - default: - return false; - } - - switch (v.getId()) { - case R.id.control_up: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_W, 0, isDown); break; - case R.id.control_left: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_A, 0, isDown); break; - case R.id.control_down: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_S, 0, isDown); break; - case R.id.control_right: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_D, 0, isDown); break; - case R.id.control_jump: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_SPACE, 0, isDown); break; - case R.id.control_primary: sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown); break; - case R.id.control_secondary: - if (CallbackBridge.isGrabbing()) { - sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown); - } else { - /* - if (!isDown) { - CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, CallbackBridge.mouseX, CallbackBridge.mouseY); - } - */ - - CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown ? 1 : 0, CallbackBridge.mouseX, CallbackBridge.mouseY); - - setRightOverride(isDown); - } break; - case R.id.control_debug: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_F3, 0, isDown); break; - case R.id.control_shift: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_LEFT_SHIFT, 0, isDown); break; - case R.id.control_inventory: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_E, 0, isDown); break; - case R.id.control_talk: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_T, 0, isDown); break; - case R.id.control_keyboard: showKeyboard(); break; - case R.id.control_thirdperson: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_F5, 0, isDown); break; - case R.id.control_zoom: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_C, 0, isDown); break; - case R.id.control_listplayers: sendKeyPress(LWJGLGLFWKeycode.GLFW_KEY_TAB, 0, isDown); break; - } - - return false; - } - - private Button findButton(int id) { - Button button = (Button) findViewById(id); - button.setOnTouchListener(this); - button.setFocusable(false); - button.setFocusableInTouchMode(false); - return button; + mControlLayout.toggleControlVisible(); } } diff --git a/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java b/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java index 62b10f0ee..d08cf191a 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java +++ b/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java @@ -229,7 +229,7 @@ public class MinecraftDownloaderTask extends AsyncTask - - - - - - - - - - - - - - - - - -