mtg-forge-ios/forge-gui-ios/src/forge/ios/Main.java

98 lines
2.9 KiB
Java
Raw Normal View History

package forge.ios;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.iosrobovm.IOSApplication;
import com.badlogic.gdx.backends.iosrobovm.IOSApplicationConfiguration;
import com.badlogic.gdx.backends.iosrobovm.IOSFiles;
import forge.Forge;
import forge.assets.AssetsDownloader;
import forge.interfaces.IDeviceAdapter;
import forge.util.FileUtil;
import org.robovm.apple.foundation.NSAutoreleasePool;
import org.robovm.apple.uikit.UIApplication;
import org.robovm.apple.uikit.UIPasteboard;
public class Main extends IOSApplication.Delegate {
@Override
protected IOSApplication createApplication() {
final String assetsDir = new IOSFiles().getLocalStoragePath() + "/../../forge.ios.Main.app/";
if (!AssetsDownloader.SHARE_DESKTOP_ASSETS) {
FileUtil.ensureDirectoryExists(assetsDir);
}
final IOSApplicationConfiguration config = new IOSApplicationConfiguration();
config.useAccelerometer = false;
config.useCompass = false;
final ApplicationListener app = Forge.getApp(new IOSClipboard(), new IOSAdapter(), assetsDir);
final IOSApplication iosApp = new IOSApplication(app, config);
return iosApp;
}
public static void main(String[] args) {
final NSAutoreleasePool pool = new NSAutoreleasePool();
UIApplication.main(args, null, Main.class);
pool.close();
}
//special clipboard that works on iOS
private static final class IOSClipboard implements com.badlogic.gdx.utils.Clipboard {
@Override
public String getContents() {
return UIPasteboard.getGeneralPasteboard().getString();
}
@Override
public void setContents(final String contents0) {
UIPasteboard.getGeneralPasteboard().setString(contents0);
}
}
private static final class IOSAdapter implements IDeviceAdapter {
@Override
public boolean isConnectedToInternet() {
return true;
}
@Override
public boolean isConnectedToWifi() {
return true;
}
@Override
public String getDownloadsDir() {
return new IOSFiles().getExternalStoragePath();
}
@Override
public boolean openFile(final String filename) {
return new IOSFiles().local(filename).exists();
}
@Override
public void setLandscapeMode(final boolean landscapeMode) {
// TODO implement this
}
@Override
public void preventSystemSleep(boolean preventSleep) {
// TODO implement this
}
@Override
public boolean isTablet() {
return Gdx.graphics.getWidth() > Gdx.graphics.getHeight();
}
@Override
public void restart() {
// Not possible on iOS
}
@Override
public void exit() {
// Not possible on iOS
}
}
}