diff --git a/app_2009scape/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java b/app_2009scape/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java
index 23969a42d..7eb0e36d7 100644
--- a/app_2009scape/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java
+++ b/app_2009scape/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java
@@ -17,6 +17,7 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex
public int offsetY = 0;
private float[] stretchOffsets;
private float[] stretchScales;
+ private boolean streched = false;
private int mWidth, mHeight;
private boolean mIsDestroyed = false;
@@ -56,8 +57,7 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex
void initScaleFactors(float forcedScale){
//Could be optimized
if(forcedScale < 1) { //Auto scale
- int minDimension = Math.min(CallbackBridge.physicalHeight, CallbackBridge.physicalWidth);
- mScaleFactor = 2;
+ mScaleFactor = 2.166F;
}else{
mScaleFactor = forcedScale;
}
@@ -72,31 +72,6 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex
mScales = scales;
}
-
- void initStretchedModes(){
-
- float[] offsets = new float[2];
- float[] scales = new float[4];
- // Full screen stretched
- offsets[0] -= mScales[0]*1.33F;
- offsets[1] -= mScales[1]*1.02F;
-
- // 16:9 Stretched
-
-
-
- // Fullscreen stretched
- scales[0] = (CallbackBridge.physicalWidth/2)/765;
- scales[1] = (CallbackBridge.physicalHeight/2)/503;
-
- // 16:9 stretched
- scales[2] = (CallbackBridge.physicalWidth/2)/894.22F;
- scales[3] = (CallbackBridge.physicalHeight/2)/503;
-
- stretchScales = scales;
- stretchOffsets = offsets;
-
- }
public AWTCanvasView(Context ctx) {
this(ctx, null);
@@ -112,14 +87,12 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex
setSurfaceTextureListener(this);
initScaleFactors();
- initStretchedModes();
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture texture, int w, int h) {
mWidth = w;
mHeight = h;
-
mIsDestroyed = false;
new Thread(this, "AndroidAWTRenderer").start();
}
@@ -158,19 +131,16 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex
int[] rgbArray = JREUtils.renderAWTScreenFrame(/* canvas, mWidth, mHeight */);
mDrawing = rgbArray != null;
if (rgbArray != null) {
-
-
canvas.save();
- // 16:9~ Scaled
- //System.out.println("Factor: "+mScaleFactor);
- //canvas.scale(mScaleFactor*1.17F, mScaleFactor);
- //canvas.translate(-mScales[0]*1.17F,-mScales[1]);
- //
- canvas.scale(mScaleFactor, mScaleFactor);
- canvas.translate(-mScales[0],-mScales[1]);
+ if(streched){
+ canvas.scale(mScaleFactor*1.17F, mScaleFactor);
+ canvas.translate(-mScales[0]*1.115F,-mScales[1]);
+ } else {
+ canvas.scale(mScaleFactor, mScaleFactor);
+ canvas.translate(-mScales[0],-mScales[1]);
+ }
canvas.drawBitmap(rgbArray, 0, CallbackBridge.physicalWidth, offsetX, offsetY, CallbackBridge.physicalWidth, CallbackBridge.physicalHeight, true, null);
canvas.restore();
-
}
}
canvas.drawText("FPS: " + (Math.round(fps() * 10) / 10) + ", attached=" + attached + ", drawing=" + mDrawing, 50, 50, fpsPaint);
diff --git a/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java b/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java
index 32f480e0b..6cfe4fed0 100644
--- a/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java
+++ b/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java
@@ -51,7 +51,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
private boolean isVirtualMouseEnabled;
- private int scaleFactor;
+ private float scaleFactor;
public float[] scaleFactors = initScaleFactors();
private final int fingerStillThreshold = 8;
@@ -415,8 +415,17 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
}
void sendScaledMousePosition(float x, float y){
- AWTInputBridge.sendMousePos((int) map(x,0,CallbackBridge.physicalWidth, scaleFactors[0], scaleFactors[2]),
- (int) map(y,0,CallbackBridge.physicalHeight, scaleFactors[1], scaleFactors[3]));
+ AWTInputBridge.sendMousePos(
+ (int) map(x,0,CallbackBridge.physicalWidth, scaleFactors[0], scaleFactors[2]),
+ (int) map(y,0,CallbackBridge.physicalHeight, scaleFactors[1], scaleFactors[3])
+ );
+ }
+
+ void sendScaledMousePositionStretch(float x, float y){
+ AWTInputBridge.sendMousePos(
+ (int) map(x,0,CallbackBridge.physicalWidth, scaleFactors[0]*1.17F, scaleFactors[2]*1.17F),
+ (int) map(y,0,CallbackBridge.physicalHeight, scaleFactors[1], scaleFactors[3])
+ );
}
public void toggleVirtualMouse(View v) {
@@ -491,8 +500,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
//Could be optimized
if(autoScale) { //Auto scale
- int minDimension = Math.min(CallbackBridge.physicalHeight, CallbackBridge.physicalWidth);
- scaleFactor = Math.max(((3 * minDimension) / 1080) - 1, 1);
+ scaleFactor = 2.166F;
}
float[] scales = new float[4]; //Left, Top, Right, Bottom
@@ -513,14 +521,14 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
}
public void scaleDown(View view) {
- scaleFactor = Math.max(scaleFactor - 1, 1);
+ scaleFactor = Math.max(scaleFactor - .2F, 1);
scaleFactors = initScaleFactors(false);
mTextureView.initScaleFactors(scaleFactor);
sendScaledMousePosition(mousePointer.getX(),mousePointer.getY());
}
public void scaleUp(View view) {
- scaleFactor = Math.min(scaleFactor + 1, 6);
+ scaleFactor = Math.min(scaleFactor + .2F, 6);
scaleFactors = initScaleFactors(false);
mTextureView.initScaleFactors(scaleFactor);
sendScaledMousePosition(mousePointer.getX(),mousePointer.getY());
diff --git a/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java b/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
index b5790655b..95d070fac 100644
--- a/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
+++ b/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
@@ -204,32 +204,12 @@ public class PojavLoginActivity extends BaseActivity {
}
}
private void initMain() throws Throwable {
- // Copy config.json to writable storage
- // https://stackoverflow.com/questions/38590996/copy-xml-from-raw-folder-to-internal-storage-and-use-it-in-android
- File file = new File(getFilesDir(), "config.json");
- try {
- Context context = getApplicationContext();
- InputStream inputStream = context.getResources().openRawResource(R.raw.config);
- FileOutputStream fileOutputStream = new FileOutputStream(file);
- byte buf[]=new byte[1024];
- int len;
- while((len=inputStream.read(buf))>0) {
- fileOutputStream.write(buf,0,len);
- }
- fileOutputStream.close();
- inputStream.close();
- System.out.println("Write to Local");
- } catch (IOException e1) {}
-
mkdirs(Tools.DIR_ACCOUNT_NEW);
mkdirs(Tools.DIR_GAME_HOME);
mkdirs(Tools.DIR_GAME_HOME + "/lwjgl3");
mkdirs(Tools.DIR_GAME_HOME + "/config");
mkdirs(Tools.CTRLMAP_PATH);
-
-
try {
-
Tools.copyAssetFile(this, "components/security/pro-grade.jar", Tools.DIR_DATA, true);
Tools.copyAssetFile(this, "components/security/java_sandbox.policy", Tools.DIR_DATA, true);
Tools.copyAssetFile(this, "options.txt", Tools.DIR_GAME_NEW, false);
@@ -267,6 +247,23 @@ public class PojavLoginActivity extends BaseActivity {
MultiRTUtils.installRuntimeNamedBinpack(am.open("components/jre/universal.tar.xz"), am.open("components/jre/bin-" + archAsString(Tools.DEVICE_ARCHITECTURE) + ".tar.xz"), "Internal", rt_version,
(resid, vararg) -> runOnUiThread(()->{if(startupTextView!=null)startupTextView.setText(getString(resid,vararg));}));
MultiRTUtils.postPrepare(PojavLoginActivity.this,"Internal");
+
+ // Copy config.json to writable storage
+ // https://stackoverflow.com/questions/38590996/copy-xml-from-raw-folder-to-internal-storage-and-use-it-in-android
+ File file = new File(getFilesDir(), "config.json");
+ try {
+ Context context = getApplicationContext();
+ InputStream inputStream = context.getResources().openRawResource(R.raw.config);
+ FileOutputStream fileOutputStream = new FileOutputStream(file);
+ byte buf[]=new byte[1024];
+ int len;
+ while((len=inputStream.read(buf))>0) {
+ fileOutputStream.write(buf,0,len);
+ }
+ fileOutputStream.close();
+ inputStream.close();
+ System.out.println("Write to Local");
+ } catch (IOException e1) {}
return true;
}catch (IOException e) {
Log.e("JREAuto", "Internal JRE unpack failed", e);
diff --git a/app_2009scape/src/main/java/net/kdt/pojavlaunch/SettingsMenu.java b/app_2009scape/src/main/java/net/kdt/pojavlaunch/SettingsMenu.java
index c920637f4..26f7d1afe 100644
--- a/app_2009scape/src/main/java/net/kdt/pojavlaunch/SettingsMenu.java
+++ b/app_2009scape/src/main/java/net/kdt/pojavlaunch/SettingsMenu.java
@@ -1,20 +1,85 @@
package net.kdt.pojavlaunch;
import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
+import android.net.Uri;
import android.os.Bundle;
+import android.os.FileUtils;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
+import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Switch;
+import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceManager;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
public class SettingsMenu extends Activity {
+
+ private static final int FILE_SELECT_CODE = 0;
+
+ private void showFileChooser() {
+ Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+ intent.setType("*/*");
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+ try {
+ startActivityForResult(
+ Intent.createChooser(intent, "Select a File to Upload"),
+ FILE_SELECT_CODE);
+ } catch (android.content.ActivityNotFoundException ex) {
+ // Potentially direct the user to the Market with a Dialog
+ Toast.makeText(this, "Please install a File Manager.",
+ Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ switch (requestCode) {
+ case FILE_SELECT_CODE:
+ if (resultCode == RESULT_OK) {
+ // Get the Uri of the selected file
+ Uri uri = data.getData();
+ Log.d("TAG", "File Uri: " + uri.toString());
+ // Get the path
+ Log.d("TAG", "File Path: " + uri.getPath());
+ // Get the file instance
+ File config = new File(getFilesDir(), "config.json");
+ try {
+ Log.d("TAG", "Starting copy: " + uri.getPath());
+ InputStream inputStream = getContentResolver().openInputStream(uri);
+ FileOutputStream fileOutputStream = new FileOutputStream(config);
+ byte buf[]=new byte[1024];
+ int len;
+ while((len=inputStream.read(buf))>0) {
+ fileOutputStream.write(buf,0,len);
+ }
+ fileOutputStream.close();
+ inputStream.close();
+ System.out.println("Wrote new config to Local");
+ } catch (IOException e1) {
+ Log.d("error", "Error with file " + e1);
+ }
+ }
+ break;
+ }
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -28,6 +93,23 @@ public class SettingsMenu extends Activity {
final EditText username = findViewById(R.id.username);
final EditText password = findViewById(R.id.password);
final Switch righthanded = findViewById(R.id.righthanded);
+ final Button loadConfig = findViewById(R.id.loadconfig);
+
+ loadConfig.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ switch(event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ Log.i("Pressed","Button");
+ showFileChooser();
+ return true; // if you want to handle the touch event
+ case MotionEvent.ACTION_UP:
+ // RELEASED
+ return true; // if you want to handle the touch event
+ }
+ return false;
+ }
+ });
//For storing string value in sharedPreference
diff --git a/app_2009scape/src/main/res/layout/settings_menu.xml b/app_2009scape/src/main/res/layout/settings_menu.xml
index cc6bedcac..ae1745769 100644
--- a/app_2009scape/src/main/res/layout/settings_menu.xml
+++ b/app_2009scape/src/main/res/layout/settings_menu.xml
@@ -1,50 +1,64 @@
-
-
-
-
-
+ android:orientation="vertical">
+
+
-
+
-
-
\ No newline at end of file
+
+
+
+
+
+
+
\ No newline at end of file