This commit is contained in:
ShirosakiMio 2022-12-12 20:27:36 +08:00
parent fd8b7ea718
commit cd19f86a97
4 changed files with 33 additions and 6 deletions

View File

@ -6,6 +6,7 @@ import android.os.Bundle;
import android.util.Log;
import android.view.Surface;
import android.view.TextureView;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
@ -33,8 +34,8 @@ public class JVMActivity extends FCLActivity implements TextureView.SurfaceTextu
private static FCLBridge fclBridge;
//only for test version
private MioMouseKeyboard mioMouseKeyboard;
private ImageView mouse;
public MioMouseKeyboard mioMouseKeyboard;
public ImageView mouse;
private EditText input;
public static void setFClBridge(FCLBridge fclBridge, ControllerType controllerType) {
@ -53,7 +54,7 @@ public class JVMActivity extends FCLActivity implements TextureView.SurfaceTextu
}
controller = controllerType == ControllerType.GAME ? new GameController() : new JavaGuiController();
controller.setup(this);
textureView = findViewById(R.id.texture_view);
textureView.setSurfaceTextureListener(this);
mouse=findViewById(R.id.mouse);
@ -88,6 +89,15 @@ public class JVMActivity extends FCLActivity implements TextureView.SurfaceTextu
public void onBackPressed() {
if(getResources().getConfiguration().keyboard!= Configuration.KEYBOARD_NOKEYS) {
mioMouseKeyboard.catchPointer();
MioMouseKeyboard.baseX=0;
MioMouseKeyboard.baseY=0;
// if (FCLBridge.cursorMode==FCLBridge.CursorEnabled) {
// mouse.setVisibility(View.INVISIBLE);
// mioMouseKeyboard.releasePointer();
// } else {
// mouse.setVisibility(View.VISIBLE);
// mioMouseKeyboard.catchPointer();
// }
}
}
}

View File

@ -2,16 +2,19 @@ package com.tungsten.fcl.control;
import android.content.Intent;
import android.view.View;
import android.widget.ImageView;
import com.tungsten.fcl.activity.JVMActivity;
import com.tungsten.fcl.activity.JVMCrashActivity;
import com.tungsten.fclauncher.FCLPath;
import com.tungsten.fclauncher.bridge.FCLBridge;
import com.tungsten.fclauncher.bridge.FCLBridgeCallback;
import com.tungsten.fclcore.util.Logging;
import java.util.logging.Level;
public class GameController implements Controller {
private JVMActivity activity;
@Override
public View getLayout() {
@ -20,19 +23,30 @@ public class GameController implements Controller {
@Override
public void setup(JVMActivity activity) {
this.activity=activity;
}
@Override
public FCLBridgeCallback getCallbackBridge() {
return new FCLProcessListener();
return new FCLProcessListener(activity);
}
static class FCLProcessListener implements FCLBridgeCallback {
private JVMActivity activity;
FCLProcessListener(JVMActivity activity){
this.activity=activity;
}
@Override
public void onCursorModeChange(int mode) {
// TODO: Handle mouse event
activity.mouse.post(()->{
if (mode== FCLBridge.CursorEnabled) {
activity.mouse.setVisibility(View.VISIBLE);
} else {
activity.mouse.setVisibility(View.INVISIBLE);
}
});
}
@Override

View File

@ -29,7 +29,7 @@ public class MioMouseKeyboard {
private FCLBridge fclBridge;
private int baseX,baseY;
public static int baseX,baseY;
public MioMouseKeyboard(JVMActivity context, View mouse, View focusView){
this.context=context;
this.mouseCursor=mouse;

View File

@ -59,6 +59,8 @@ public class FCLBridge implements Serializable {
private boolean isLogPipeReady=false;
private WeakReference<LogReceiver> logReceiver;
public static int cursorMode=CursorEnabled;
public FCLBridge(FCLBridgeCallback callback) {
this.callback = callback;
}
@ -138,6 +140,7 @@ public class FCLBridge implements Serializable {
// FCLBridge callbacks
public void setCursorMode(int mode) {
cursorMode=mode;
if (callback != null) {
callback.onCursorModeChange(mode);
}