diff --git a/JavaApp/src/main/java/com/oracle/dalvik/VMLauncher.java b/JavaApp/src/main/java/com/oracle/dalvik/VMLauncher.java deleted file mode 100644 index 36c2160e..00000000 --- a/JavaApp/src/main/java/com/oracle/dalvik/VMLauncher.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.oracle.dalvik; - -import android.util.*; - -import java.util.*; - -public final class VMLauncher { - private VMLauncher() { - } - public static int launchJVM(boolean useJli, List args) { - System.out.print("Launch method: "); - if (useJli) { - System.out.println("JLI_Launch"); - return launchJVM(args.toArray(new String[0])); - } else { - System.out.println("JNI_JavaVM"); - args.remove(0); - int cpPath = args.indexOf("-cp"); - // int jarPath = Arrays.asList(args).indexOf("-jar"); - if (cpPath != -1) { - String classpath = args.remove(cpPath + 1); - args.set(cpPath, "-Djava.class.path=" + classpath); - - List vmArgs = new ArrayList<>(); - List mainArgs = new ArrayList<>(); - String mainClass = null; - int mainClassIndex; - for (String arg : args) { - if (!arg.startsWith("-") && mainClass == null) { - mainClass = arg; - continue; - } - - if (mainClass == null) { - vmArgs.add(arg); - } else { - mainArgs.add(arg); - } - } - - return createLaunchMainJVM(vmArgs.toArray(new String[0]), mainClass, mainArgs.toArray(new String[0])); - } else { - throw new RuntimeException("Invalid or unsupported classpath type"); - } - } - } - private static native int launchJVM(String[] args); - private static native int createLaunchMainJVM(String[] vmArgs, String mainClass, String[] mainArgs); -} diff --git a/JavaApp/src/main/java/jdpi/awt/BorderLayout.java b/JavaApp/src/main/java/jdpi/awt/BorderLayout.java deleted file mode 100644 index 05d0ef89..00000000 --- a/JavaApp/src/main/java/jdpi/awt/BorderLayout.java +++ /dev/null @@ -1,4 +0,0 @@ -package jdpi.awt; - -public class BorderLayout extends LayoutManager { -} diff --git a/JavaApp/src/main/java/jdpi/awt/Canvas.java b/JavaApp/src/main/java/jdpi/awt/Canvas.java deleted file mode 100644 index 6f331986..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Canvas.java +++ /dev/null @@ -1,21 +0,0 @@ -package jdpi.awt; - -import org.lwjgl.glfw.GLFW; - -public class Canvas extends Component { - - public void setPreferredSize(Dimension dim) { - } - - public Graphics getGraphics() { - return null; - } - - public int getWidth() { - return GLFW.mGLFWWindowWidth; - } - - public int getHeight() { - return GLFW.mGLFWWindowHeight; - } -} \ No newline at end of file diff --git a/JavaApp/src/main/java/jdpi/awt/Color.java b/JavaApp/src/main/java/jdpi/awt/Color.java deleted file mode 100644 index 9205f118..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Color.java +++ /dev/null @@ -1,27 +0,0 @@ -package jdpi.awt; - -public class Color extends java.awt.Color { - public Color(int r, int g, int b) { - super(r, g, b); - } - - public Color(int r, int g, int b, int a) { - super(r, g, b, a); - } - - public Color(int rgb) { - super(rgb); - } - - public Color(int rgba, boolean hasalpha) { - super(rgba, hasalpha); - } - - public Color(float r, float g, float b) { - super(r, g, b); - } - - public Color(float r, float g, float b, float a) { - super(r, g, b, a); - } -} \ No newline at end of file diff --git a/JavaApp/src/main/java/jdpi/awt/Component.java b/JavaApp/src/main/java/jdpi/awt/Component.java deleted file mode 100644 index 99f308b7..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Component.java +++ /dev/null @@ -1,18 +0,0 @@ -package jdpi.awt; - -import org.lwjgl.glfw.GLFW; - -public class Component { - //setPreferredSize - - public int getWidth() { - return GLFW.mGLFWWindowWidth; - } - - public int getHeight() { - return GLFW.mGLFWWindowHeight; - } - - public void setVisible(boolean visible) { - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/Container.java b/JavaApp/src/main/java/jdpi/awt/Container.java deleted file mode 100644 index 1e58ba53..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Container.java +++ /dev/null @@ -1,9 +0,0 @@ -package jdpi.awt; - -public class Container extends Component { - public void add(Component component, Object something) { - } - - public void setLayout(LayoutManager mgr) { - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/Dimension.java b/JavaApp/src/main/java/jdpi/awt/Dimension.java deleted file mode 100644 index 82f82d64..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Dimension.java +++ /dev/null @@ -1,15 +0,0 @@ -package jdpi.awt; - -public class Dimension extends java.awt.Dimension { - public Dimension() { - this(0, 0); - } - - public Dimension(Dimension d) { - this(d.width, d.height); - } - - public Dimension(int width, int height) { - super(width, height); - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/Frame.java b/JavaApp/src/main/java/jdpi/awt/Frame.java deleted file mode 100644 index ab5f0d57..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Frame.java +++ /dev/null @@ -1,7 +0,0 @@ -package jdpi.awt; - -public class Frame extends Window { - public Frame(String title) { - super(title); - } -} \ No newline at end of file diff --git a/JavaApp/src/main/java/jdpi/awt/Graphics.java b/JavaApp/src/main/java/jdpi/awt/Graphics.java deleted file mode 100644 index 2b24b2eb..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Graphics.java +++ /dev/null @@ -1,32 +0,0 @@ -package jdpi.awt; - -import jdpi.awt.image.*; - -public class Graphics { - protected java.awt.Graphics2D g2d; - - public Graphics(java.awt.Graphics2D g2d) { - this.g2d = g2d; - } - - public void setColor(Color color) { - g2d.setColor(color); - } - - public void fillRect(int x, int y, int width, int height) { - g2d.fillRect(x, y, width, height); - } - - public void drawString(String s, int x, int y) { - g2d.drawString(s, x, y); - } - - public void dispose() { - g2d.dispose(); - } - - public boolean drawImage(Image image, int x, int y, ImageObserver observer) { - if (!(image instanceof BufferedImage)) return true; - return g2d.drawImage(((BufferedImage) image).getBaseImage(), x, y, ImageObserverWrapper.wrap(observer)); - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/Graphics2D.java b/JavaApp/src/main/java/jdpi/awt/Graphics2D.java deleted file mode 100644 index 59ae7b51..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Graphics2D.java +++ /dev/null @@ -1,7 +0,0 @@ -package jdpi.awt; - -public class Graphics2D extends Graphics { - public Graphics2D(java.awt.Graphics2D g2d) { - super(g2d); - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/GraphicsEnvironment.java b/JavaApp/src/main/java/jdpi/awt/GraphicsEnvironment.java deleted file mode 100644 index 0b892918..00000000 --- a/JavaApp/src/main/java/jdpi/awt/GraphicsEnvironment.java +++ /dev/null @@ -1,6 +0,0 @@ -package jdpi.awt; -public class GraphicsEnvironment { - public static boolean isHeadless() { - return true; - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/Image.java b/JavaApp/src/main/java/jdpi/awt/Image.java deleted file mode 100644 index dc53a14f..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Image.java +++ /dev/null @@ -1,5 +0,0 @@ -package jdpi.awt; - -public abstract class Image { - -} diff --git a/JavaApp/src/main/java/jdpi/awt/LayoutManager.java b/JavaApp/src/main/java/jdpi/awt/LayoutManager.java deleted file mode 100644 index c91554e8..00000000 --- a/JavaApp/src/main/java/jdpi/awt/LayoutManager.java +++ /dev/null @@ -1,4 +0,0 @@ -package jdpi.awt; - -public class LayoutManager { -} diff --git a/JavaApp/src/main/java/jdpi/awt/Window.java b/JavaApp/src/main/java/jdpi/awt/Window.java deleted file mode 100644 index 498b8d80..00000000 --- a/JavaApp/src/main/java/jdpi/awt/Window.java +++ /dev/null @@ -1,17 +0,0 @@ -package jdpi.awt; - -import jdpi.awt.event.*; - -public class Window extends Container { - public Window(String title) { - } - - public void addWindowListener(WindowListener listener) { - } - - public void pack() { - } - - public void setLocationRelativeTo(Component comp) { - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/event/WindowAdapter.java b/JavaApp/src/main/java/jdpi/awt/event/WindowAdapter.java deleted file mode 100644 index bcbbf05f..00000000 --- a/JavaApp/src/main/java/jdpi/awt/event/WindowAdapter.java +++ /dev/null @@ -1,4 +0,0 @@ -package jdpi.awt.event; - -public class WindowAdapter implements WindowListener { -} \ No newline at end of file diff --git a/JavaApp/src/main/java/jdpi/awt/event/WindowListener.java b/JavaApp/src/main/java/jdpi/awt/event/WindowListener.java deleted file mode 100644 index cc8801e2..00000000 --- a/JavaApp/src/main/java/jdpi/awt/event/WindowListener.java +++ /dev/null @@ -1,4 +0,0 @@ -package jdpi.awt.event; - -public interface WindowListener { -} \ No newline at end of file diff --git a/JavaApp/src/main/java/jdpi/awt/image/BufferedImage.java b/JavaApp/src/main/java/jdpi/awt/image/BufferedImage.java deleted file mode 100644 index c84f706a..00000000 --- a/JavaApp/src/main/java/jdpi/awt/image/BufferedImage.java +++ /dev/null @@ -1,47 +0,0 @@ -package jdpi.awt.image; - -import jdpi.awt.*; -import jdpi.awt.Image; - -public class BufferedImage extends Image { - private java.awt.image.BufferedImage mImg; - public BufferedImage(int width, int height, int imageType) { - this(new java.awt.image.BufferedImage(width, height, imageType)); - } - - public BufferedImage(java.awt.image.BufferedImage img) { - mImg = img; - } - - public Graphics getGraphics() { - return new Graphics2D((java.awt.Graphics2D) mImg.getGraphics()); - } - - public Graphics2D createGraphics() { - return new Graphics2D(mImg.createGraphics()); - } - - public int getWidth() { - return mImg.getWidth(); - } - - public int getHeight() { - return mImg.getHeight(); - } - - public int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) { - return mImg.getRGB(startX, startY, w, h, rgbArray, offset, scansize); - } - - public void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) { - mImg.setRGB(startX, startY, w, h, rgbArray, offset, scansize); - } - - public WritableRaster getRaster() { - return new WritableRaster(this); - } - - public java.awt.image.BufferedImage getBaseImage() { - return mImg; - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/image/DataBuffer.java b/JavaApp/src/main/java/jdpi/awt/image/DataBuffer.java deleted file mode 100644 index 84e5da56..00000000 --- a/JavaApp/src/main/java/jdpi/awt/image/DataBuffer.java +++ /dev/null @@ -1,5 +0,0 @@ -package jdpi.awt.image; - -public class DataBuffer { - -} diff --git a/JavaApp/src/main/java/jdpi/awt/image/DataBufferInt.java b/JavaApp/src/main/java/jdpi/awt/image/DataBufferInt.java deleted file mode 100644 index d96425ee..00000000 --- a/JavaApp/src/main/java/jdpi/awt/image/DataBufferInt.java +++ /dev/null @@ -1,11 +0,0 @@ -package jdpi.awt.image; - -public class DataBufferInt extends DataBuffer { - private int[] array; - public DataBufferInt(int[] array, int size) { - this.array = array; - } - public int[] getData() { - return array; - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/image/ImageObserver.java b/JavaApp/src/main/java/jdpi/awt/image/ImageObserver.java deleted file mode 100644 index 85aae7d4..00000000 --- a/JavaApp/src/main/java/jdpi/awt/image/ImageObserver.java +++ /dev/null @@ -1,7 +0,0 @@ -package jdpi.awt.image; - -import jdpi.awt.Image; - -public interface ImageObserver extends java.awt.image.ImageObserver { - public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height); -} \ No newline at end of file diff --git a/JavaApp/src/main/java/jdpi/awt/image/ImageObserverWrapper.java b/JavaApp/src/main/java/jdpi/awt/image/ImageObserverWrapper.java deleted file mode 100644 index df8e9591..00000000 --- a/JavaApp/src/main/java/jdpi/awt/image/ImageObserverWrapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package jdpi.awt.image; - -import jdpi.awt.Image; - -public class ImageObserverWrapper { - public static java.awt.image.ImageObserver wrap(final ImageObserver observer) { - return new java.awt.image.ImageObserver() { - @Override - public boolean imageUpdate(java.awt.Image img, int infoflags, int x, int y, int width, int height) { - if (img instanceof java.awt.image.BufferedImage) { - return observer.imageUpdate(new BufferedImage((java.awt.image.BufferedImage) img), infoflags, x, y, width, height); - } - - return false; - } - }; - } -} diff --git a/JavaApp/src/main/java/jdpi/awt/image/RenderedImage.java b/JavaApp/src/main/java/jdpi/awt/image/RenderedImage.java deleted file mode 100644 index 6ac97528..00000000 --- a/JavaApp/src/main/java/jdpi/awt/image/RenderedImage.java +++ /dev/null @@ -1,4 +0,0 @@ -package jdpi.awt.image; - -public interface RenderedImage { -} \ No newline at end of file diff --git a/JavaApp/src/main/java/jdpi/awt/image/WritableRaster.java b/JavaApp/src/main/java/jdpi/awt/image/WritableRaster.java deleted file mode 100644 index 756ce896..00000000 --- a/JavaApp/src/main/java/jdpi/awt/image/WritableRaster.java +++ /dev/null @@ -1,13 +0,0 @@ -package jdpi.awt.image; - -public class WritableRaster { - private BufferedImage image; - public WritableRaster(BufferedImage image) { - this.image = image; - } - public DataBuffer getDataBuffer() { - int[] theBuf = new int[image.getWidth() * image.getHeight()]; - image.getRGB(0, 0, image.getWidth(), image.getHeight(), theBuf, 0, image.getWidth()); - return new DataBufferInt(theBuf, theBuf.length); - } -} diff --git a/JavaApp/src/main/java/jdpi/imageio/ImageIO.java b/JavaApp/src/main/java/jdpi/imageio/ImageIO.java deleted file mode 100644 index d164beb2..00000000 --- a/JavaApp/src/main/java/jdpi/imageio/ImageIO.java +++ /dev/null @@ -1,32 +0,0 @@ -package jdpi.imageio; - -import java.io.*; -import java.net.URL; - -import jdpi.awt.*; -import jdpi.awt.image.*; - -public class ImageIO { - public static void setUseCache(boolean set) { - } - - public static BufferedImage read(InputStream is) throws IOException { - return new BufferedImage(javax.imageio.ImageIO.read(is)); - } - - public static BufferedImage read(File input) throws IOException { - return read(new FileInputStream(input)); - } - - public static BufferedImage read(URL input) throws IOException { - InputStream is = input.openStream(); - BufferedImage img = read(is); - is.close(); - return img; - } - - public static boolean write(RenderedImage im, String formatName, File output) { - System.out.println("ImageIO.write stub " + output); - return true; - } -} diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java index 40b0ce25..2c8e6e98 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java @@ -126,6 +126,8 @@ public class PLaunchApp { for (final DependentLibrary libItem : mVersion.libraries) { if ( + // Support for text2speech is not planned, so skip it for now. + libItem.name.startsWith("com.mojang.text2speech") || libItem.name.startsWith("net.java.jinput") || libItem.name.startsWith("org.lwjgl") ) { // Black list @@ -159,9 +161,9 @@ public class PLaunchApp { } currProgress++; - UIKit.updateProgressSafe(currProgress / maxProgress, "Downloading " + mcver + ".jar"); File minecraftMainFile = new File(minecraftMainJar); if (!minecraftMainFile.exists() || minecraftMainFile.length() == 0l) { + UIKit.updateProgressSafe(currProgress / maxProgress, "Downloading " + mcver + ".jar"); Tools.downloadFile(mVersion.downloads.values().toArray(new MinecraftClientInfo[0])[0].url, minecraftMainJar); } @@ -194,11 +196,10 @@ public class PLaunchApp { File objectsDir = new File(outputDir, "objects"); for (JAssetInfo asset : assetsObjects.values()) { executor.execute(() -> { - mIsAssetsProcessing &= !UIKit.updateProgressSafe(currProgress / maxProgress, "Downloading " + assetsObjects.keySet().toArray(new String[0])[downloaded]); - try { - if(!assets.map_to_resources) downloadAsset(asset, objectsDir); - else downloadAssetMapped(asset,(assetsObjects.keySet().toArray(new String[0])[downloaded]),outputDir); + String assetName = assetsObjects.keySet().toArray(new String[0])[downloaded]; + if(!assets.map_to_resources) downloadAsset(assetName, asset, objectsDir); + else downloadAssetMapped(assetName, asset, outputDir); } catch (IOException e) { e.printStackTrace(); mIsAssetsProcessing = false; @@ -233,17 +234,19 @@ public class PLaunchApp { return Tools.GLOBAL_GSON.fromJson(Tools.read(output.getAbsolutePath()), JAssets.class); } - public static void downloadAsset(JAssetInfo asset, File objectsDir) throws IOException { + public static void downloadAsset(String assetName, JAssetInfo asset, File objectsDir) throws IOException { String assetPath = asset.hash.substring(0, 2) + "/" + asset.hash; File outFile = new File(objectsDir, assetPath); if (!outFile.exists()) { + UIKit.updateProgressSafe(currProgress / maxProgress, "Downloading " + assetName); DownloadUtils.downloadFile(MINECRAFT_RES + assetPath, outFile); } } - public static void downloadAssetMapped(JAssetInfo asset, String assetName, File resDir) throws IOException { + public static void downloadAssetMapped(String assetName, JAssetInfo asset, File resDir) throws IOException { String assetPath = asset.hash.substring(0, 2) + "/" + asset.hash; File outFile = new File(resDir,"/"+assetName); if (!outFile.exists()) { + UIKit.updateProgressSafe(currProgress / maxProgress, "Downloading " + assetName); DownloadUtils.downloadFile(MINECRAFT_RES + assetPath, outFile); } } diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java index 93b8265e..dd96a958 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java @@ -145,9 +145,9 @@ public class UIKit { updateMCGuiScale(guiScale); } - public static boolean updateProgressSafe(final float progress, final String message) { + public static void updateProgressSafe(final float progress, final String message) { System.out.println(message); - return updateProgress(progress, ((int) (progress * 100)) + "% - " + message); + updateProgress(progress, ((int) (progress * 100)) + "% - " + message); } static { @@ -164,7 +164,7 @@ public class UIKit { private static native void updateMCGuiScale(int scale); // Update progress - public static native boolean updateProgress(float progress, String message); + public static native void updateProgress(float progress, String message); // Start SurfaceViewController public static native void launchMinecraftSurface(boolean isUseStackQueueBool); diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index 2ef5a7e4..ea61eaae 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -2,8 +2,6 @@ package net.kdt.pojavlaunch.utils; import android.util.*; -import com.oracle.dalvik.*; - import java.io.*; import java.util.*; diff --git a/Natives/SurfaceViewController.h b/Natives/SurfaceViewController.h index d223a31b..69673225 100644 --- a/Natives/SurfaceViewController.h +++ b/Natives/SurfaceViewController.h @@ -1,6 +1,9 @@ #import #import "MGLKit.h" +@interface GameSurfaceView : UIView +@end + @interface SurfaceViewController : UIViewController // MGLKViewController // UIViewController diff --git a/Natives/SurfaceViewController.m b/Natives/SurfaceViewController.m index abb79c1c..12e8c473 100644 --- a/Natives/SurfaceViewController.m +++ b/Natives/SurfaceViewController.m @@ -45,15 +45,22 @@ int inputTextLength; BOOL shouldTriggerClick = NO; int notchOffset; -float resolutionScale; - // TODO: key modifiers impl +@implementation GameSurfaceView +- (id)initWithFrame:(CGRect)frame { + return self = [super initWithFrame:frame]; +} + ++ (Class)layerClass { + return MGLLayer.class; +} +@end + @interface SurfaceViewController () { } -@property(nonatomic, strong) MGLKView* surfaceView; -@property(nonatomic, strong) MGLContext *context; +@property(nonatomic, strong) UIView* surfaceView; @property(nonatomic, strong) NSMutableDictionary* cc_dictionary; - (void)setupGL; @@ -83,15 +90,11 @@ float resolutionScale; savedWidth = roundf(width * screenScale); savedHeight = roundf(height * screenScale); - CGRect surfaceRect = CGRectMake((width - width * resolutionScale) / 2, (height - height * resolutionScale) / 2, width * resolutionScale, height * resolutionScale); - NSLog(@"Debug: surfaceRect=%@", NSStringFromCGRect(surfaceRect)); - self.surfaceView = [[MGLKView alloc] init]; + NSLog(@"Debug: Creating surfaceView"); + self.surfaceView = [[GameSurfaceView alloc] initWithFrame:self.view.frame]; NSLog(@"Debug: surfaceView=%@", self.surfaceView); - self.surfaceView.frame = surfaceRect; - NSLog(@"Debug: set frame"); + self.surfaceView.layer.contentsScale = screenScale * resolutionScale; [self.view addSubview:self.surfaceView]; - self.surfaceView.enableSetNeedsDisplay = NO; - self.surfaceView.transform = CGAffineTransformMakeScale(1.0 / resolutionScale, 1.0 / resolutionScale); // Enable support for desktop GLSL if ([getPreference(@"disable_gl4es_shaderconv") boolValue]) { @@ -209,21 +212,17 @@ float resolutionScale; [self executebtn_special_togglebtn:0]; - self.surfaceView.drawableDepthFormat = MGLDrawableDepthFormat24; - self.surfaceView.enableSetNeedsDisplay = YES; + ((MGLLayer *)self.surfaceView.layer).drawableDepthFormat = MGLDrawableDepthFormat24; // [self setPreferredFramesPerSecond:1000]; // Init GLES sharegroup = [[MGLSharegroup alloc] init]; - self.context = [[MGLContext alloc] initWithAPI:kMGLRenderingAPIOpenGLES3 sharegroup:sharegroup]; - - if (!self.context) { + firstContext = [[MGLContext alloc] initWithAPI:kMGLRenderingAPIOpenGLES3 sharegroup:sharegroup]; + if (!firstContext) { NSLog(@"Failed to create ES context"); } - self.surfaceView.context = self.context; - - [MGLContext setCurrentContext:self.context]; + [MGLContext setCurrentContext:firstContext forLayer:(MGLLayer *)self.surfaceView.layer]; [self setupGL]; } @@ -240,50 +239,23 @@ float resolutionScale; - (void)dealloc { - if ([MGLContext currentContext] == self.context) { - [MGLContext setCurrentContext:nil]; - } + [MGLContext setCurrentContext:nil]; } - (void)setupGL { - [MGLContext setCurrentContext:self.context]; - [self.surfaceView display]; callback_SurfaceViewController_launchMinecraft(savedWidth * resolutionScale, savedHeight * resolutionScale); } -/* -BOOL isNotifRemoved; -- (void)mglkView:(MGLKView *)view drawInRect:(CGRect)rect -{ - // glClearColor(0.6f, 0.6f, 0.6f, 1.0f); - // glClear(GL_COLOR_BUFFER_BIT); - // [self setNeedsDisplay] - // NSLog(@"swapbuffer"); - - // Hack: Remove notifications, so rendering will be manually controlled! - if (isNotifRemoved == NO) { - isNotifRemoved = YES; - [[NSNotificationCenter defaultCenter] removeObserver:self - name:MGLKApplicationWillResignActiveNotification - object:nil]; - [[NSNotificationCenter defaultCenter] removeObserver:self - name:MGLKApplicationDidBecomeActiveNotification - object:nil]; - } - - [super pause]; - - // Java_org_lwjgl_glfw_CallbackBridge_nativeSendCursorPos(NULL, NULL, location.x * screenScale, location.y * screenScale); -} -*/ - #pragma mark - Input: send touch utilities - (void)sendTouchPoint:(CGPoint)location withEvent:(int)event { CGFloat screenScale = [[UIScreen mainScreen] scale]; callback_SurfaceViewController_touchHotbar(location.x * screenScale, location.y * screenScale); + if (!isGrabbing) { + screenScale *= resolutionScale; + } callback_SurfaceViewController_onTouch(event, location.x * screenScale, location.y * screenScale); } @@ -383,7 +355,7 @@ BOOL isNotifRemoved; { CGFloat screenScale = [[UIScreen mainScreen] scale]; CGPoint location = [sender locationInView:[sender.view superview]]; - int hotbarItem = callback_SurfaceViewController_touchHotbar(location.x * screenScale, location.y * screenScale); + int hotbarItem = callback_SurfaceViewController_touchHotbar(location.x * screenScale * resolutionScale, location.y * screenScale * resolutionScale); if (sender.state == UIGestureRecognizerStateBegan) { if (hotbarItem == -1) { inputView.text = INPUT_SPACE_CHAR; diff --git a/Natives/egl_bridge.m b/Natives/egl_bridge.m index bb5f7725..f9d6c1a8 100644 --- a/Natives/egl_bridge.m +++ b/Natives/egl_bridge.m @@ -102,7 +102,7 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglMakeCurrent(JNIEnv* if ((jlong)localContext != window) { debug("EGLBridge ERROR: Context mismatch! local=%p, input=%p", localContext, (void *)window); } - success = [MGLContext setCurrentContext:localContext] == YES; + success = [MGLContext setCurrentContext:localContext forLayer:(MGLLayer *)viewController.view.subviews[0].layer] == YES; } if (success == EGL_FALSE) { @@ -114,9 +114,6 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglMakeCurrent(JNIEnv* RegalMakeCurrent(potatoBridge.eglContext); } - debug("EGLBridge: Trigger an initial swapBuffers"); - [viewController.view.subviews[0] display]; - // Test #ifdef GLES_TEST glClearColor(0.4f, 0.4f, 0.4f, 1.0f); @@ -153,10 +150,10 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglCreateContext(JNIEnv * localContext = [[MGLContext alloc] initWithAPI:kMGLRenderingAPIOpenGLES3 sharegroup:sharegroup]; debug("EGLBridge: Created CTX pointer=%p, shareCTX=%p, thread=%d", localContext, (void *)contextSrc, (int)tid); } else { - localContext = ((MGLKView *)viewController.view.subviews[0]).context; + localContext = firstContext; + debug("EGLBridge: Using CTX pointer=%p, shareCTX=%p, thread=%d", localContext, (void *)contextSrc, (int)tid); } [[NSThread currentThread] threadDictionary][@"gl_context"] = localContext; - debug("EGLBridge: Created CTX pointer=%p, shareCTX=%p, thread=%d", localContext, (void *)contextSrc, (int)tid); return (jlong)localContext; } diff --git a/Natives/input_bridge_v3.m b/Natives/input_bridge_v3.m index d8e273f7..fac10f19 100644 --- a/Natives/input_bridge_v3.m +++ b/Natives/input_bridge_v3.m @@ -199,15 +199,15 @@ const int hotbarKeys[9] = { GLFW_KEY_4, GLFW_KEY_5, GLFW_KEY_6, GLFW_KEY_7, GLFW_KEY_8, GLFW_KEY_9 }; -int guiScale = 1, scaleFactor = 1; +int guiScale = 1; int mcscale(int input) { - return (int)((guiScale * input)/scaleFactor); + return (int)((guiScale * input)/resolutionScale); } int callback_SurfaceViewController_touchHotbar(int x, int y) { if (isGrabbing == JNI_FALSE) { return -1; } - + int barHeight = mcscale(20); int barWidth = mcscale(180); int barX = (savedWidth / 2) - (barWidth / 2); @@ -222,15 +222,10 @@ JNIEXPORT void JNICALL Java_net_kdt_pojavlaunch_uikit_UIKit_updateMCGuiScale(JNI guiScale = scale; } -JNIEXPORT void JNICALL Java_net_kdt_pojavlaunch_uikit_UIKit_setButtonSkippable(JNIEnv* env, jclass clazz) { - UIKit_setButtonSkippable(); -} - -JNIEXPORT jboolean JNICALL Java_net_kdt_pojavlaunch_uikit_UIKit_updateProgress(JNIEnv* env, jclass clazz, jfloat progress, jstring message) { +JNIEXPORT void JNICALL Java_net_kdt_pojavlaunch_uikit_UIKit_updateProgress(JNIEnv* env, jclass clazz, jfloat progress, jstring message) { const char *message_c = (*env)->GetStringUTFChars(env, message, 0); - jboolean skipDownloadAssets = UIKit_updateProgress(progress, message_c); + UIKit_updateProgress(progress, message_c); (*env)->ReleaseStringUTFChars(env, message, message_c); - return skipDownloadAssets; } JNIEXPORT void JNICALL Java_net_kdt_pojavlaunch_uikit_UIKit_launchMinecraftSurface(JNIEnv* env, jclass clazz, jboolean isUseStackQueueBool) { diff --git a/Natives/ios_uikit_bridge.h b/Natives/ios_uikit_bridge.h index c1f9d422..953dc7d0 100644 --- a/Natives/ios_uikit_bridge.h +++ b/Natives/ios_uikit_bridge.h @@ -4,7 +4,6 @@ void showDialog(UIViewController *viewController, NSString* title, NSString* message); jstring UIKit_accessClipboard(JNIEnv* env, jint action, jstring copySrc); -jboolean UIKit_updateProgress(float progress, const char* message); +void UIKit_updateProgress(float progress, const char* message); void UIKit_launchJarFile(const char* filepath); void UIKit_launchMinecraftSurfaceVC(); -void UIKit_setButtonSkippable(); diff --git a/Natives/ios_uikit_bridge.m b/Natives/ios_uikit_bridge.m index 21165616..be016b47 100644 --- a/Natives/ios_uikit_bridge.m +++ b/Natives/ios_uikit_bridge.m @@ -11,8 +11,6 @@ #define CLIPBOARD_PASTE 2001 // Maybe CLIPBOARD_OPENURL then? -jboolean skipDownloadAssets; - jclass class_CTCScreen; jmethodID method_GetRGB; @@ -103,28 +101,12 @@ jstring UIKit_accessClipboard(JNIEnv* env, jint action, jstring copySrc) { } } -jboolean UIKit_updateProgress(float progress, const char* message) { +void UIKit_updateProgress(float progress, const char* message) { dispatch_async(dispatch_get_main_queue(), ^{ install_progress_bar.progress = progress; install_progress_text.text = [[NSString alloc] initWithUTF8String:message]; // @(message); }); - return skipDownloadAssets; -} - -void UIKit_skipDownloadAssets() { - [install_button setEnabled:NO]; - skipDownloadAssets = JNI_TRUE; -} - -void UIKit_setButtonSkippable() { - dispatch_async(dispatch_get_main_queue(), ^{ - [install_button setEnabled:YES]; - [install_button setTitle:@"Skip" forState:UIControlStateNormal]; - [install_button addTarget:install_button action:@selector(UIKit_skipDownloadAssets) forControlEvents:UIControlEventTouchUpInside]; - }); - - skipDownloadAssets = JNI_FALSE; } void UIKit_launchJarFile(const char* filepath) { diff --git a/Natives/utils.h b/Natives/utils.h index 8196be92..cb3133f5 100644 --- a/Natives/utils.h +++ b/Natives/utils.h @@ -32,8 +32,11 @@ #define SPECIALBTN_SCROLLUP -7 #define SPECIALBTN_SCROLLDOWN -8 +static float resolutionScale = 1.0; + UIViewController *viewController; +MGLContext *firstContext; MGLSharegroup* sharegroup; void* GL4ES_HANDLE;