diff --git a/.gitattributes b/.gitattributes index c4993e897c2..b65d3040d50 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1151,6 +1151,18 @@ forge-gui-desktop/src/test/java/forge/gui/ListChooserTest.java -text forge-gui-desktop/src/test/java/forge/gui/game/CardDetailPanelTest.java -text forge-gui-desktop/src/test/java/forge/item/DeckHintsTest.java -text forge-gui-desktop/src/test/java/forge/model/FModelTest.java -text +forge-gui-ios/.classpath -text +forge-gui-ios/.project -text +forge-gui-ios/Info.plist.xml -text +forge-gui-ios/libs/libObjectAL.a -text +forge-gui-ios/libs/libgdx-freetype.a -text +forge-gui-ios/libs/libgdx.a -text +forge-gui-ios/minlog-1.2.jar -text +forge-gui-ios/pom.xml -text +forge-gui-ios/robovm.properties -text +forge-gui-ios/robovm.xml -text +forge-gui-ios/src/forge/ios/Main.java -text +forge-gui-ios/src/forge/ios/package-info.java -text forge-gui-mobile-dev/.classpath -text forge-gui-mobile-dev/.project -text forge-gui-mobile-dev/.settings/org.eclipse.jdt.core.prefs -text diff --git a/forge-gui-ios/.classpath b/forge-gui-ios/.classpath new file mode 100644 index 00000000000..a7eb75de807 --- /dev/null +++ b/forge-gui-ios/.classpath @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui-ios/.project b/forge-gui-ios/.project new file mode 100644 index 00000000000..0b6a8932e6b --- /dev/null +++ b/forge-gui-ios/.project @@ -0,0 +1,36 @@ + + + forge-gui-ios + + + forge + forge-ai + forge-core + forge-game + forge-gui + forge-gui-mobile + forge-net + + + + org.eclipse.jdt.core.javabuilder + + + + + org.robovm.eclipse.RoboVMClassBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + org.robovm.eclipse.RoboVMNature + + diff --git a/forge-gui-ios/Info.plist.xml b/forge-gui-ios/Info.plist.xml new file mode 100644 index 00000000000..38e4c2121e9 --- /dev/null +++ b/forge-gui-ios/Info.plist.xml @@ -0,0 +1,61 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${app.name} + CFBundleExecutable + ${app.executable} + CFBundleIdentifier + ${app.id} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${app.name} + CFBundlePackageType + APPL + CFBundleShortVersionString + ${app.version} + CFBundleSignature + ???? + CFBundleVersion + ${app.build} + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconFiles + + Icon + Icon-72 + + + + + diff --git a/forge-gui-ios/libs/libObjectAL.a b/forge-gui-ios/libs/libObjectAL.a new file mode 100644 index 00000000000..95969cb7cce Binary files /dev/null and b/forge-gui-ios/libs/libObjectAL.a differ diff --git a/forge-gui-ios/libs/libgdx-freetype.a b/forge-gui-ios/libs/libgdx-freetype.a new file mode 100644 index 00000000000..cc7d0640562 Binary files /dev/null and b/forge-gui-ios/libs/libgdx-freetype.a differ diff --git a/forge-gui-ios/libs/libgdx.a b/forge-gui-ios/libs/libgdx.a new file mode 100644 index 00000000000..549d913204a Binary files /dev/null and b/forge-gui-ios/libs/libgdx.a differ diff --git a/forge-gui-ios/minlog-1.2.jar b/forge-gui-ios/minlog-1.2.jar new file mode 100644 index 00000000000..afb0d88ccbe Binary files /dev/null and b/forge-gui-ios/minlog-1.2.jar differ diff --git a/forge-gui-ios/pom.xml b/forge-gui-ios/pom.xml new file mode 100644 index 00000000000..f1dcf10d4ae --- /dev/null +++ b/forge-gui-ios/pom.xml @@ -0,0 +1,85 @@ + + 4.0.0 + + + yyyyMMdd-HHmm + jar + -Xms128m + -Xmx2048m + 1.5.32.005 + + + + forge + forge + 1.5.32-SNAPSHOT + + + forge-gui-ios + ${packaging.type} + Forge iOS + + + src + + + maven-compiler-plugin + + 1.7 + 1.7 + + + + + + filters + true + + + forge-ios-${alpha-version} + + + + + forge + forge-core + ${project.version} + + + forge + forge-game + ${project.version} + + + forge + forge-ai + ${project.version} + + + forge + forge-net + ${project.version} + + + forge + forge-gui + ${project.version} + + + forge + forge-gui-mobile + ${project.version} + + + com.googlecode + minlog + 1.2 + + + com.badlogicgames.gdx + gdx-backend-robovm + 1.4.1 + + + \ No newline at end of file diff --git a/forge-gui-ios/robovm.properties b/forge-gui-ios/robovm.properties new file mode 100644 index 00000000000..e8c3068950c --- /dev/null +++ b/forge-gui-ios/robovm.properties @@ -0,0 +1,8 @@ +# +#Wed Dec 03 21:31:22 CET 2014 +app.version=1.0 +app.id=forge.ios +app.mainclass=forge.ios.Main +app.executable=forge.ios.Main +app.build=1 +app.name=Forge diff --git a/forge-gui-ios/robovm.xml b/forge-gui-ios/robovm.xml new file mode 100644 index 00000000000..7fbb18576ff --- /dev/null +++ b/forge-gui-ios/robovm.xml @@ -0,0 +1,49 @@ + + ${app.executable} + ${app.mainclass} + ios + thumbv7 + + + ../forge-gui + + res/** + + + + res + + + ios + Info.plist.xml + + com.android.okhttp.HttpHandler + com.android.okhttp.HttpsHandler + com.android.org.conscrypt.** + com.android.org.bouncycastle.jce.provider.BouncyCastleProvider + com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings + com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi + com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std + com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi + com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL + org.apache.harmony.security.provider.cert.DRLCertFactory + org.apache.harmony.security.provider.crypto.CryptoProvider + org.apache.xalan.processor.TransformerFactoryImpl + java.util.logging.** + com.esotericsoftware.minlog.Log + + + libs/libgdx.a + libs/libObjectAL.a + libs/libgdx-freetype.a + + + UIKit + OpenGLES + QuartzCore + CoreGraphics + OpenAL + AudioToolbox + AVFoundation + + \ No newline at end of file diff --git a/forge-gui-ios/src/forge/ios/Main.java b/forge-gui-ios/src/forge/ios/Main.java new file mode 100644 index 00000000000..a51d79bb39c --- /dev/null +++ b/forge-gui-ios/src/forge/ios/Main.java @@ -0,0 +1,79 @@ +package forge.ios; + +import org.robovm.apple.foundation.NSAutoreleasePool; +import org.robovm.apple.uikit.UIApplication; +import org.robovm.apple.uikit.UIPasteboard; + +import com.badlogic.gdx.ApplicationListener; +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; + +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.getGeneral().getString(); + } + + @Override + public void setContents(final String contents0) { + UIPasteboard.getGeneral().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(String filename) { + return new IOSFiles().local(filename).exists(); + } + + @Override + public void exit() { + // Not possible on iOS + } + } +} \ No newline at end of file diff --git a/forge-gui-ios/src/forge/ios/package-info.java b/forge-gui-ios/src/forge/ios/package-info.java new file mode 100644 index 00000000000..e1d9e45230d --- /dev/null +++ b/forge-gui-ios/src/forge/ios/package-info.java @@ -0,0 +1 @@ +package forge.ios; \ No newline at end of file