diff --git a/ChangeAppSettings.sh b/ChangeAppSettings.sh index 79193a553..20c03b04e 100755 --- a/ChangeAppSettings.sh +++ b/ChangeAppSettings.sh @@ -54,9 +54,11 @@ fi if [ -z "$AppDataDownloadUrl" -o -z "$AUTO" ]; then echo -n "\nSpecify path to download application data in zip archive in the form 'Description|URL|MirrorURL|...'" -echo -n "\nYou may specify additional paths to optional game content delimited by newlines (empty line to finish)" -echo -n "\nIf the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as-is to game dir and not unzipped" -echo -n "\nIf the URL does not contain 'http://' it is treated as file in 'project/jni/application/src/AndroidData' dir\n\n" +echo -n "\nYou may specify additional paths to additional downloads delimited by newlines (empty line to finish)" +echo -n "\nIf you'll start Description with '!' symbol it will be enabled by default,\nother downloads should be selected by user from config menu" +echo -n "\nIf the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as-is to the application dir and not unzipped" +echo -n "\nIf the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -\nthese files are put inside .apk package by build system\n" +echo -n "\nAlso beware of 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS\n" echo -n "`echo $AppDataDownloadUrl | tr '^' '\\n'`" echo AppDataDownloadUrl1="" @@ -580,6 +582,12 @@ mkdir -p project/assets rm -f project/assets/* if [ -d "project/jni/application/src/AndroidData" ] ; then echo Copying asset files + for F in project/jni/application/src/AndroidData/*; do + if [ `cat $F | wc -c` -gt 1048576 ] ; then + echo "Error: the file $F is bigger than 1048576 bytes - some Android devices will fail to extract such file\nPlease split your data into several small files, or use HTTP download method" + exit 1 + fi + done cp project/jni/application/src/AndroidData/* project/assets/ fi diff --git a/project/java/Settings.java b/project/java/Settings.java index c1f6e89bd..87c590f23 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -45,11 +45,13 @@ class Settings static boolean settingsLoaded = false; static boolean settingsChanged = false; + static final int SETTINGS_FILE_VERSION = 3; static void Save(final MainActivity p) { try { ObjectOutputStream out = new ObjectOutputStream(p.openFileOutput( SettingsFileName, p.MODE_WORLD_READABLE )); + out.writeInt(SETTINGS_FILE_VERSION); out.writeBoolean(Globals.DownloadToSdcard); out.writeBoolean(Globals.PhoneHasArrowKeys); out.writeBoolean(Globals.PhoneHasTrackball); @@ -60,9 +62,6 @@ class Settings out.writeInt(Globals.AccelerometerCenterPos); out.writeInt(Globals.TrackballDampening); out.writeInt(Globals.AudioBufferConfig); - out.writeInt(Globals.OptionalDataDownload.length); - for(int i = 0; i < Globals.OptionalDataDownload.length; i++) - out.writeBoolean(Globals.OptionalDataDownload[i]); out.writeInt(Globals.TouchscreenKeyboardTheme); out.writeInt(Globals.RightClickMethod); out.writeBoolean(Globals.ShowScreenUnderFinger); @@ -118,6 +117,10 @@ class Settings out.writeInt(Globals.RelativeMouseMovementSpeed); out.writeInt(Globals.RelativeMouseMovementAccel); + out.writeInt(Globals.OptionalDataDownload.length); + for(int i = 0; i < Globals.OptionalDataDownload.length; i++) + out.writeBoolean(Globals.OptionalDataDownload[i]); + out.close(); settingsLoaded = true; @@ -170,6 +173,8 @@ class Settings try { ObjectInputStream settingsFile = new ObjectInputStream(new FileInputStream( p.getFilesDir().getAbsolutePath() + "/" + SettingsFileName )); + if( settingsFile.readInt() != SETTINGS_FILE_VERSION ) + throw new IOException(); Globals.DownloadToSdcard = settingsFile.readBoolean(); Globals.PhoneHasArrowKeys = settingsFile.readBoolean(); Globals.PhoneHasTrackball = settingsFile.readBoolean(); @@ -180,9 +185,6 @@ class Settings Globals.AccelerometerCenterPos = settingsFile.readInt(); Globals.TrackballDampening = settingsFile.readInt(); Globals.AudioBufferConfig = settingsFile.readInt(); - Globals.OptionalDataDownload = new boolean[settingsFile.readInt()]; - for(int i = 0; i < Globals.OptionalDataDownload.length; i++) - Globals.OptionalDataDownload[i] = settingsFile.readBoolean(); Globals.TouchscreenKeyboardTheme = settingsFile.readInt(); Globals.RightClickMethod = settingsFile.readInt(); Globals.ShowScreenUnderFinger = settingsFile.readBoolean(); @@ -247,6 +249,10 @@ class Settings Globals.RelativeMouseMovement = settingsFile.readBoolean(); Globals.RelativeMouseMovementSpeed = settingsFile.readInt(); Globals.RelativeMouseMovementAccel = settingsFile.readInt(); + + Globals.OptionalDataDownload = new boolean[settingsFile.readInt()]; + for(int i = 0; i < Globals.OptionalDataDownload.length; i++) + Globals.OptionalDataDownload[i] = settingsFile.readBoolean(); settingsLoaded = true; @@ -295,8 +301,21 @@ class Settings settingsChanged = true; if( Globals.OptionalDataDownload == null ) - Globals.OptionalDataDownload = new boolean[Globals.DataDownloadUrl.split("\\^").length]; - Globals.OptionalDataDownload[0] = true; + { + String downloads[] = Globals.DataDownloadUrl.split("\\^"); + Globals.OptionalDataDownload = new boolean[downloads.length]; + boolean oldFormat = true; + for( int i = 0; i < downloads.length; i++ ) + { + if( downloads[i].indexOf("!") == 0 ) + { + Globals.OptionalDataDownload[i] = true; + oldFormat = false; + } + } + if( oldFormat ) + Globals.OptionalDataDownload[0] = true; + } showConfigMainMenu(p); } @@ -308,8 +327,7 @@ class Settings items.add(p.getResources().getString(R.string.storage_question)); - if( Globals.DataDownloadUrl.split("\\^").length > 1 ) - items.add(p.getResources().getString(R.string.optional_downloads)); + items.add(p.getResources().getString(R.string.downloads)); items.add(p.getResources().getString(R.string.controls_additional)); @@ -339,7 +357,7 @@ class Settings builder.setTitle(p.getResources().getString(R.string.device_config)); builder.setSingleChoiceItems(items.toArray(new CharSequence[0]), MainMenuLastSelected, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) + public void onClick(DialogInterface dialog, int item) { MainMenuLastSelected = item; dialog.dismiss(); @@ -349,11 +367,8 @@ class Settings showDownloadConfig(p); selected++; - if( Globals.DataDownloadUrl.split("\\^").length > 1 ) { - if( item == selected ) - showOptionalDownloadConfig(p); - } else - item++; + if( item == selected ) + showOptionalDownloadConfig(p); selected++; if( item == selected ) @@ -583,8 +598,7 @@ class Settings p.getResources().getString(R.string.storage_sd, freeSdcard), p.getResources().getString(R.string.storage_custom) }; AlertDialog.Builder builder = new AlertDialog.Builder(p); - String [] downloadFiles = Globals.DataDownloadUrl.split("\\^"); - builder.setTitle(downloadFiles[0].split("[|]")[0]); + builder.setTitle(p.getResources().getString(R.string.storage_question)); builder.setSingleChoiceItems(items, Globals.DownloadToSdcard ? 1 : 0, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) @@ -682,33 +696,39 @@ class Settings static void showOptionalDownloadConfig(final MainActivity p) { String [] downloadFiles = Globals.DataDownloadUrl.split("\\^"); - if(downloadFiles.length <= 1) - { - Globals.OptionalDataDownload = new boolean[1]; - Globals.OptionalDataDownload[0] = true; - showConfigMainMenu(p); - return; - } AlertDialog.Builder builder = new AlertDialog.Builder(p); - builder.setTitle(p.getResources().getString(R.string.optional_downloads)); + builder.setTitle(p.getResources().getString(R.string.downloads)); - CharSequence[] items = new CharSequence[ downloadFiles.length - 1 ]; - for(int i = 1; i < downloadFiles.length; i++ ) - items[i-1] = new String(downloadFiles[i].split("[|]")[0]); + CharSequence[] items = new CharSequence[downloadFiles.length]; + for(int i = 0; i < downloadFiles.length; i++ ) + { + items[i] = new String(downloadFiles[i].split("[|]")[0]); + if( items[i].toString().indexOf("!") == 0 ) + items[i] = items[i].toString().substring(1); + } - if( Globals.OptionalDataDownload == null || Globals.OptionalDataDownload.length != items.length + 1 ) + if( Globals.OptionalDataDownload == null || Globals.OptionalDataDownload.length != items.length ) + { Globals.OptionalDataDownload = new boolean[downloadFiles.length]; - Globals.OptionalDataDownload[0] = true; - boolean defaults[] = new boolean[downloadFiles.length-1]; - for(int i=1; iRelative Bewegung der Maus (Laptop-Modus) Relative Maus Bewegungsgeschwindigkeit Relative Bewegung der Maus Beschleunigung +Downloads diff --git a/project/java/translations/values-fi/strings.xml b/project/java/translations/values-fi/strings.xml index 367dfee70..e7e091411 100644 --- a/project/java/translations/values-fi/strings.xml +++ b/project/java/translations/values-fi/strings.xml @@ -124,4 +124,5 @@ Suhteellinen hiiren liikkeet (kannettavan tietokoneen tilassa) Suhteellinen hiiren liikkeen nopeus Suhteellinen hiiren liikkeen kiihtyvyys +Downloads diff --git a/project/java/translations/values-fr/strings.xml b/project/java/translations/values-fr/strings.xml index d3ae5dd94..b77b08354 100644 --- a/project/java/translations/values-fr/strings.xml +++ b/project/java/translations/values-fr/strings.xml @@ -127,4 +127,5 @@ mouvement de la souris relative (mode portable) Relative vitesse de déplacement de la souris Relative accélération du mouvement de la souris +Téléchargements diff --git a/project/java/translations/values-ru/strings.xml b/project/java/translations/values-ru/strings.xml index 609f2fe17..fb568af02 100644 --- a/project/java/translations/values-ru/strings.xml +++ b/project/java/translations/values-ru/strings.xml @@ -117,4 +117,5 @@ Относительное движение мыши (режим ноутбука) Скорость движения мыши Ускорение движения мыши +Загрузки diff --git a/project/java/translations/values-uk/strings.xml b/project/java/translations/values-uk/strings.xml index 8d47c6d52..334a330be 100644 --- a/project/java/translations/values-uk/strings.xml +++ b/project/java/translations/values-uk/strings.xml @@ -117,4 +117,5 @@ Відносний рух миші (режим ноутбука) Швидкість руху миші Прискорення руху миші +Завантаження diff --git a/project/java/translations/values/strings.xml b/project/java/translations/values/strings.xml index 2503f2491..37f2710e7 100644 --- a/project/java/translations/values/strings.xml +++ b/project/java/translations/values/strings.xml @@ -25,6 +25,7 @@ Specify command line parameters Where to download application data Optional downloads + Downloads OK Arrows / joystick / dpad diff --git a/project/jni/application/alienblaster/AndroidAppSettings.cfg b/project/jni/application/alienblaster/AndroidAppSettings.cfg index 6439449e7..7f2eed1ff 100644 --- a/project/jni/application/alienblaster/AndroidAppSettings.cfg +++ b/project/jni/application/alienblaster/AndroidAppSettings.cfg @@ -5,7 +5,7 @@ AppName="Alien Blaster" AppFullName=de.schwardtnet.alienblaster ScreenOrientation=h InhibitSuspend=n -AppDataDownloadUrl="Data size is 2 Mb|alienblaster110_data.zip|http://sites.google.com/site/xpelyax/Home/alienblaster110_data.zip?attredirects=0&d=1|http://sitesproxy.goapk.com/site/xpelyax/Home/alienblaster110_data.zip" +AppDataDownloadUrl="!Game data|alienblaster110_data1.zip^!Game data|alienblaster110_data2.zip^!Game data|alienblaster110_data3.zip" SdlVideoResize=y SdlVideoResizeKeepAspect=n NeedDepthBuffer=n diff --git a/project/jni/application/alienblaster/AndroidData/alienblaster110_data.zip b/project/jni/application/alienblaster/AndroidData/alienblaster110_data.zip deleted file mode 100644 index f808897df..000000000 Binary files a/project/jni/application/alienblaster/AndroidData/alienblaster110_data.zip and /dev/null differ diff --git a/project/jni/application/alienblaster/AndroidData/alienblaster110_data1.zip b/project/jni/application/alienblaster/AndroidData/alienblaster110_data1.zip new file mode 100644 index 000000000..9bf116a83 Binary files /dev/null and b/project/jni/application/alienblaster/AndroidData/alienblaster110_data1.zip differ diff --git a/project/jni/application/alienblaster/AndroidData/alienblaster110_data2.zip b/project/jni/application/alienblaster/AndroidData/alienblaster110_data2.zip new file mode 100644 index 000000000..301433f18 Binary files /dev/null and b/project/jni/application/alienblaster/AndroidData/alienblaster110_data2.zip differ diff --git a/project/jni/application/alienblaster/AndroidData/alienblaster110_data3.zip b/project/jni/application/alienblaster/AndroidData/alienblaster110_data3.zip new file mode 100644 index 000000000..35378aeb4 Binary files /dev/null and b/project/jni/application/alienblaster/AndroidData/alienblaster110_data3.zip differ diff --git a/project/jni/application/src b/project/jni/application/src index 59d41f41e..4de17cd97 120000 --- a/project/jni/application/src +++ b/project/jni/application/src @@ -1 +1 @@ -fheroes2 \ No newline at end of file +alienblaster \ No newline at end of file