# HG changeset patch # User Medo # Date 1336078082 -7200 # Node ID 846cea23aea22e96ed968879c3de4c023f4d763b # Parent 23131a8b4c3a59b418f4705b36004c2b2da142bd# Parent 6a1f46c026bf5b3c94ae9feddd8a7c35c562fc94 Merge diff -r 6a1f46c026bf -r 846cea23aea2 .hgignore --- a/.hgignore Thu May 03 19:00:17 2012 +0200 +++ b/.hgignore Thu May 03 22:48:02 2012 +0200 @@ -40,7 +40,7 @@ glob:*.rej glob:project_files/Android-build/SDL-android-project/jni/** glob:project_files/Android-build/SDL-android-project/obj -glob:project_files/Android-build/SDL-android-project/libs +glob:project_files/Android-build/SDL-android-project/libs/armeabi* glob:project_files/Android-build/SDL-android-project/bin glob:project_files/Android-build/SDL-android-project/gen glob:project_files/Android-build/SDL-android-project/local.properties diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/Licenses/Android Support library/NOTICE.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/Licenses/Android Support library/NOTICE.txt Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,195 @@ +Notice for all the files in this folder. +------------------------------------------------------------ + + + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/Licenses/ini4j/LICENSE.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/Licenses/ini4j/LICENSE.txt Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/Licenses/ini4j/NOTICE.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/Licenses/ini4j/NOTICE.txt Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,13 @@ +Copyright 2005,2009 Ivan SZKIBA + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/libs/android-support-v13.jar Binary file project_files/Android-build/SDL-android-project/libs/android-support-v13.jar has changed diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/libs/ini4j-0.5.2.jar Binary file project_files/Android-build/SDL-android-project/libs/ini4j-0.5.2.jar has changed diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/basicflags.xml --- a/project_files/Android-build/SDL-android-project/res/raw/basicflags.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,390 +0,0 @@ - - - - - false - - - false - - - e$damagepct - - - 100 - - - Damage - - - 300 - - - 10 - - - <string>Damage Modifier</string> - - - - - true - - - true - - - e$turntime - - - 45 - - - Time - - - 100 - - - 1 - - - <string>Turn Time</string> - - - - - false - - - inithealth - - - 200 - - - Health - - - 200 - - - 50 - - - <string>Initial Health</string> - - - - - true - - - false - - - e$sd_turns - - - 15 - - - SuddenDeath - - - 50 - - - 0 - - - <string>Sudden Death Timeout</string> - - - - - false - - - false - - - e$casefreq - - - 5 - - - Box - - - 9 - - - 0 - - - <string>Crate Drop Turns</string> - - - - - false - - - true - - - e$minestime - - - 3 - - - Time - - - 5 - - - -1 - - - <string>Mines Time</string> - - - - - false - - - false - - - e$minesnum - - - 4 - - - Mine - - - 80 - - - 0 - - - <string>Mines Number</string> - - - - - false - - - false - - - e$minedudpct - - - 0 - - - Dud - - - 100 - - - 0 - - - <string>Dud Mines Probability (%)</string> - - - - - false - - - false - - - e$explosives - - - 2 - - - Damage - - - 40 - - - 0 - - - <string>Explosives</string> - - - - - false - - - false - - - e$healthprob - - - 35 - - - Health - - - 100 - - - 0 - - - <string>Health Kit Probability (%)</string> - - - - - false - - - false - - - e$hcaseamount - - - 25 - - - Health - - - 200 - - - 0 - - - <string>Health Amount in Kit</string> - - - - - false - - - false - - - e$waterrise - - - 47 - - - SuddenDeath - - - 100 - - - 0 - - - <string>Water Rise Amount</string> - - - - - false - - - false - - - e$healthdec - - - 5 - - - SuddenDeath - - - 100 - - - 0 - - - <string>Health Decrease</string> - - - - - false - - - false - - - e$ropepct - - - 100 - - - Rope - - - 999 - - - 25 - - - <string>Rope Length (%)</string> - - - - - false - - - false - - - e$getawaytime - - - 100 - - - Time - - - 999 - - - 0 - - - <string>Get Away Time (%)</string> - - - diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/basicsettings.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/basicsettings.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,149 @@ +[DamagePercent] +checkOverMax=false +times1000=false +command=e$damagepct +default=100 +image=Damage +max=300 +min=10 +title=Damage Modifier + +[TurnTime] +checkOverMax=true +times1000=true +command=e$turntime +default=45 +image=Time +max=100 +min=1 +title=Turn Time + +[InitialHealth] +times1000=false +command=inithealth +default=200 +image=Health +max=200 +min=50 +title=Initial Health + +[SuddenDeathTimeout] +checkOverMax=true +times1000=false +command=e$sd_turns +default=15 +image=SuddenDeath +max=50 +min=0 +title=Sudden Death Timeout + +[CrateDropTurns] +checkOverMax=false +times1000=false +command=e$casefreq +default=5 +image=Box +max=9 +min=0 +title=Crate Drop Turns + +[MinesTime] +checkOverMax=false +times1000=true +command=e$minestime +default=3 +image=Time +max=5 +min=-1 +title=Mines Time + +[MinesNumber] +checkOverMax=false +times1000=false +command=e$minesnum +default=4 +image=Mine +max=80 +min=0 +title=Mines Number + +[MinesDudPercent] +checkOverMax=false +times1000=false +command=e$minedudpct +default=0 +image=Dud +max=100 +min=0 +title=Dud Mines Probability (%) + +[Explosives] +checkOverMax=false +times1000=false +command=e$explosives +default=2 +image=Damage +max=40 +min=0 +title=Explosives + +[HealthCratePercent] +checkOverMax=false +times1000=false +command=e$healthprob +default=35 +image=Health +max=100 +min=0 +title=Health Kit Probability (%) + +[HealthCrateHP] +checkOverMax=false +times1000=false +command=e$hcaseamount +default=25 +image=Health +max=200 +min=0 +title=Health Amount in Kit + +[SuddenDeathWaterRise] +checkOverMax=false +times1000=false +command=e$waterrise +default=47 +image=SuddenDeath +max=100 +min=0 +title=Water Rise Amount + +[SuddenDeathHealthDecrease] +checkOverMax=false +times1000=false +command=e$healthdec +default=5 +image=SuddenDeath +max=100 +min=0 +title=Health Decrease + +[RopeLengthPercent] +checkOverMax=false +times1000=false +command=e$ropepct +default=100 +image=Rope +max=999 +min=25 +title=Rope Length (%) + +[GetAwayTimePercent] +checkOverMax=false +times1000=false +command=e$getawaytime +default=100 +image=Time +max=999 +min=0 +title=Get Away Time (%) + diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/gamemods.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/gamemods.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,74 @@ +[SolidLand] +bitmaskIndex=2 + +[Border] +bitmaskIndex=3 + +[DivideTeams] +bitmaskIndex=4 + +[LowGravity] +bitmaskIndex=5 + +[LaserSight] +bitmaskIndex=6 + +[Invulnerable] +bitmaskIndex=7 + +[ResetHealth] +bitmaskIndex=8 + +[Vampiric] +bitmaskIndex=9 + +[Karma] +bitmaskIndex=10 + +[Artillery] +bitmaskIndex=11 + +[Forts] +bitmaskIndex=12 + +[RandomOrder] +bitmaskIndex=13 + +[King] +bitmaskIndex=14 + +[PlaceHog] +bitmaskIndex=15 + +[SharedAmmo] +bitmaskIndex=16 + +[DisableGirders] +bitmaskIndex=17 + +[DisableLandObjects] +bitmaskIndex=18 + +[AISurvival] +bitmaskIndex=19 + +[InfAttack] +bitmaskIndex=20 + +[ResetWeps] +bitmaskIndex=21 + +[PerHogAmmo] +bitmaskIndex=22 + +[DisableWind] +bitmaskIndex=23 + +[MoreWind] +bitmaskIndex=24 + +[TagTeam] +bitmaskIndex=25 + +[BottomBorder] +bitmaskIndex=26 diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_barrelmayhem.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_barrelmayhem.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Barrel Mayhem + +[BasicSettings] +DamagePercent=100 +TurnTime=30 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=0 +MinesTime=0 +MinesNumber=0 +MinesDudPercent=0 +Explosives=80 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=true +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_barrelmayhem.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_barrelmayhem.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Barrel Mayhem - - 100 - 30 - 100 - 15 - 0 - 0 - 0 - 0 - 80 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_cleanslate.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_cleanslate.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Clean Slate + +[BasicSettings] +DamagePercent=100 +TurnTime=45 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=5 +MinesTime=3 +MinesNumber=4 +MinesDudPercent=0 +Explosives=2 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=true +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=false +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=true +ResetWeps=true +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_cleanslate.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_cleanslate.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Clean Slate - - 100 - 45 - 100 - 15 - 5 - 3 - 4 - 0 - 2 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_default_scheme.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_default_scheme.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Default + +[BasicSettings] +DamagePercent=100 +TurnTime=45 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=5 +MinesTime=3 +MinesNumber=4 +MinesDudPercent=0 +Explosives=2 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=false +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_default_scheme.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_default_scheme.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Default - - 100 - 45 - 100 - 15 - 5 - 3 - 4 - 0 - 2 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_fortmode.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_fortmode.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Fort Mode + +[BasicSettings] +DamagePercent=100 +TurnTime=45 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=5 +MinesTime=3 +MinesNumber=0 +MinesDudPercent=0 +Explosives=0 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=true +LowGravity=true +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=true +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=false +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_fortmode.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_fortmode.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Fort Mode - - 100 - 45 - 100 - 15 - 5 - 3 - 0 - 0 - 0 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_kingmode.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_kingmode.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=King Mode + +[BasicSettings] +DamagePercent=100 +TurnTime=45 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=5 +MinesTime=3 +MinesNumber=4 +MinesDudPercent=0 +Explosives=2 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=true +PlaceHog=false +SharedAmmo=false +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_kingmode.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_kingmode.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - King Mode - - 100 - 45 - 100 - 15 - 5 - 3 - 4 - 0 - 2 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_minefield.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_minefield.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Minefield + +[BasicSettings] +DamagePercent=100 +TurnTime=30 +InitialHealth=50 +SuddenDeathTimeout=15 +CrateDropTurns=0 +MinesTime=0 +MinesNumber=80 +MinesDudPercent=0 +Explosives=0 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=true +DisableGirders=true +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_minefield.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_minefield.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Minefield - - 100 - 30 - 50 - 15 - 0 - 0 - 80 - 0 - 0 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_promode.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_promode.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Pro Mode + +[BasicSettings] +DamagePercent=100 +TurnTime=15 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=0 +MinesTime=3 +MinesNumber=0 +MinesDudPercent=0 +Explosives=2 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=true +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_promode.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_promode.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Pro Mode - - 100 - 15 - 100 - 15 - 0 - 3 - 0 - 0 - 2 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_shoppa.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_shoppa.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Shoppa + +[BasicSettings] +DamagePercent=100 +TurnTime=30 +InitialHealth=100 +SuddenDeathTimeout=50 +CrateDropTurns=1 +MinesTime=3 +MinesNumber=0 +MinesDudPercent=0 +Explosives=0 +HealthCratePercent=0 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=true +DivideTeams=true +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=true +DisableGirders=true +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_shoppa.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_shoppa.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Shoppa - - 100 - 30 - 100 - 50 - 1 - 3 - 0 - 0 - 0 - 0 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_thinkingwithportals.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_thinkingwithportals.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Thinking with Portals + +[BasicSettings] +DamagePercent=100 +TurnTime=45 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=2 +MinesTime=3 +MinesNumber=5 +MinesDudPercent=0 +Explosives=5 +HealthCratePercent=25 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=true +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=false +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_thinkingwithportals.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_thinkingwithportals.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Thinking with Portals - - 100 - 45 - 100 - 15 - 2 - 3 - 5 - 0 - 5 - 25 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_timeless.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_timeless.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Timeless + +[BasicSettings] +DamagePercent=100 +TurnTime=9999 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=5 +MinesTime=3 +MinesNumber=5 +MinesDudPercent=10 +Explosives=2 +HealthCratePercent=35 +HealthCrateHP=30 +SuddenDeathWaterRise=0 +SuddenDeathHealthDecrease=0 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=false +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=true +DisableGirders=false +DisableLandObjects=false +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=true +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_timeless.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_timeless.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Timeless - - 100 - 9999 - 100 - 15 - 5 - 3 - 5 - 10 - 2 - 35 - 30 - 0 - 0 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_tunnelhogs.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/res/raw/scheme_tunnelhogs.ini Thu May 03 22:48:02 2012 +0200 @@ -0,0 +1,46 @@ +[Scheme] +name=Tunnelhogs + +[BasicSettings] +DamagePercent=100 +TurnTime=30 +InitialHealth=100 +SuddenDeathTimeout=15 +CrateDropTurns=5 +MinesTime=3 +MinesNumber=10 +MinesDudPercent=10 +Explosives=10 +HealthCratePercent=35 +HealthCrateHP=25 +SuddenDeathWaterRise=47 +SuddenDeathHealthDecrease=5 +RopeLengthPercent=100 +GetAwayTimePercent=100 + +[GameMods] +SolidLand=false +Border=false +DivideTeams=true +LowGravity=false +LaserSight=false +Invulnerable=false +ResetHealth=false +Vampiric=false +Karma=false +Artillery=false +Forts=false +RandomOrder=true +King=false +PlaceHog=false +SharedAmmo=true +DisableGirders=true +DisableLandObjects=true +AISurvival=false +InfAttack=false +ResetWeps=false +PerHogAmmo=false +DisableWind=false +MoreWind=false +TagTeam=false +BottomBorder=false diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/raw/scheme_tunnelhogs.xml --- a/project_files/Android-build/SDL-android-project/res/raw/scheme_tunnelhogs.xml Thu May 03 19:00:17 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - Tunnelhogs - - 100 - 30 - 100 - 15 - 5 - 3 - 10 - 10 - 10 - 35 - 25 - 47 - 5 - 100 - 100 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/res/values/frontend_data_pointers.xml --- a/project_files/Android-build/SDL-android-project/res/values/frontend_data_pointers.xml Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/res/values/frontend_data_pointers.xml Thu May 03 22:48:02 2012 +0200 @@ -2,7 +2,8 @@ - @raw/basicflags + @raw/basicsettings + @raw/gamemods @raw/scheme_default_scheme @raw/scheme_barrelmayhem @raw/scheme_cleanslate diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Scheme.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Scheme.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Scheme.java Thu May 03 22:48:02 2012 +0200 @@ -1,7 +1,8 @@ /* * Hedgewars for Android. An Android port of Hedgewars, a free turn based strategy game * Copyright (c) 2011-2012 Richard Deurwaarder - * + * Copyright (c) 2012 Simeon Maxein + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License @@ -18,322 +19,167 @@ package org.hedgewars.hedgeroid.Datastructures; -import java.io.BufferedReader; +import java.util.Map; + import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.TreeMap; import org.hedgewars.hedgeroid.EngineProtocol.EngineProtocolNetwork; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlPullParserFactory; +import org.ini4j.Ini; +import org.ini4j.InvalidFileFormatException; +import org.ini4j.Profile.Section; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; +import android.util.Log; public class Scheme implements Parcelable, Comparable{ - public static final String DIRECTORY_SCHEME = "schemes"; + private static final Map basicSettingsMeta = new TreeMap(); + private static final Map gameModsMeta = new TreeMap(); - private String name; - //private ArrayList basic; - private Integer gamemod; - private ArrayList basic;; - private static ArrayList> basicflags = new ArrayList>();//TODO why is it static? - public int health; - - public Scheme(String _name, ArrayList _basic, int _gamemod){ + private final String name; + private final int gamemod; + private final Map basic = new TreeMap(); + + public Scheme(String _name, Map _basic, int _gamemod) { name = _name; gamemod = _gamemod; - basic = _basic; + basic.putAll(_basic); } public Scheme(Parcel in){ - readFromParcel(in); + name = in.readString(); + gamemod = in.readInt(); + in.readMap(basic, Integer.class.getClassLoader()); } - public void sendToEngine(EngineProtocolNetwork epn)throws IOException{ + public int getHealth() { + return basic.get("InitialHealth"); + } + + public void sendToEngine(EngineProtocolNetwork epn) throws IOException{ epn.sendToEngine(String.format("e$gmflags %d", gamemod)); - for(int pos = 0; pos < basic.size(); pos++){ - LinkedHashMap basicflag = basicflags.get(pos); + for(Map.Entry entry : basic.entrySet()) { + BasicSettingMeta basicflag = basicSettingsMeta.get(entry.getKey()); - String command = (String)basicflag.get("command"); - Integer value = basic.get(pos); - - if(command.equals("inithealth")){//Health is a special case, it doesn't need to be send - health = value; //to the engine yet, we'll do that with the other HH info - continue; + //Health is a special case, it doesn't need to be send + //to the engine yet, we'll do that with the other HH info + if(!basicflag.command.equals("inithealth")){ + epn.sendToEngine(String.format("%s %d", basicflag.command, entry.getValue())); } - - Boolean checkOverMax = (Boolean) basicflag.get("checkOverMax"); - Boolean times1000 = (Boolean) basicflag.get("times1000"); - Integer max = (Integer) basicflag.get("max"); - - if(checkOverMax && value >= max) value = max; - if(times1000) value *= 1000; - - epn.sendToEngine(String.format("%s %d", command, value)); } } + public String toString(){ return name; } - - public static final int STATE_START = 0; - public static final int STATE_ROOT = 1; - public static final int STATE_NAME = 2; - public static final int STATE_BASICFLAGS = 3; - public static final int STATE_GAMEMOD = 4; - public static final int STATE_BASICFLAG_INTEGER = 5; - public static final int STATE_GAMEMOD_TRUE = 6; - public static final int STATE_GAMEMOD_FALSE = 7; - - public static ArrayList getSchemes(Context c) throws IllegalArgumentException{ - String dir = c.getFilesDir().getAbsolutePath() + '/' + DIRECTORY_SCHEME + '/'; - String[] files = new File(dir).list(fnf); - if(files == null) files = new String[]{}; + public static List getSchemes(Context c) throws IllegalArgumentException { + File schemeDir = new File(c.getFilesDir(), DIRECTORY_SCHEME); + File[] files = schemeDir.listFiles(new FilenameFilter() { + public boolean accept(File dir, String filename) { + return filename.toLowerCase().startsWith("scheme_"); + } + }); + if(files == null) files = new File[0]; Arrays.sort(files); - ArrayList schemes = new ArrayList(); - - try { - XmlPullParserFactory xmlPullFactory = XmlPullParserFactory.newInstance(); - XmlPullParser xmlPuller = xmlPullFactory.newPullParser(); - - for(String file : files){ - BufferedReader br = new BufferedReader(new FileReader(dir + file), 1024); - xmlPuller.setInput(br); - String name = null; - ArrayList basic = new ArrayList(); - Integer gamemod = 0; - int health = 0; - int mask = 0x000000004; + List schemes = new ArrayList(); - int eventType = xmlPuller.getEventType(); - int state = STATE_START; - while(eventType != XmlPullParser.END_DOCUMENT){ - switch(state){ - case STATE_START: - if(eventType == XmlPullParser.START_TAG && xmlPuller.getName().equals("scheme")) state = STATE_ROOT; - else if(eventType != XmlPullParser.START_DOCUMENT) throwException(file, eventType); - break; - case STATE_ROOT: - if(eventType == XmlPullParser.START_TAG){ - if(xmlPuller.getName().equals("basicflags")) state = STATE_BASICFLAGS; - else if(xmlPuller.getName().toLowerCase().equals("gamemod")) state = STATE_GAMEMOD; - else if(xmlPuller.getName().toLowerCase().equals("name")) state = STATE_NAME; - else throwException(file, eventType); - }else if(eventType == XmlPullParser.END_TAG) state = STATE_START; - else throwException(xmlPuller.getText(), eventType); - break; - case STATE_BASICFLAGS: - if(eventType == XmlPullParser.START_TAG && xmlPuller.getName().toLowerCase().equals("integer")) state = STATE_BASICFLAG_INTEGER; - else if(eventType == XmlPullParser.END_TAG) state = STATE_ROOT; - else throwException(file, eventType); - break; - case STATE_GAMEMOD: - if(eventType == XmlPullParser.START_TAG){ - if(xmlPuller.getName().toLowerCase().equals("true")) state = STATE_GAMEMOD_TRUE; - else if(xmlPuller.getName().toLowerCase().equals("false")) state = STATE_GAMEMOD_FALSE; - else throwException(file, eventType); - }else if(eventType == XmlPullParser.END_TAG) state = STATE_ROOT; - else throwException(file, eventType); - break; - case STATE_NAME: - if(eventType == XmlPullParser.TEXT) name = xmlPuller.getText().trim(); - else if(eventType == XmlPullParser.END_TAG) state = STATE_ROOT; - else throwException(file, eventType); - break; - case STATE_BASICFLAG_INTEGER: - if(eventType == XmlPullParser.TEXT) basic.add(Integer.parseInt(xmlPuller.getText().trim())); - else if(eventType == XmlPullParser.END_TAG) state = STATE_BASICFLAGS; - else throwException(file, eventType); - break; - case STATE_GAMEMOD_FALSE: - if(eventType == XmlPullParser.TEXT) gamemod <<= 1; - else if(eventType == XmlPullParser.END_TAG) state = STATE_GAMEMOD; - else throwException(file, eventType); - break; - case STATE_GAMEMOD_TRUE: - if(eventType == XmlPullParser.TEXT){ - gamemod |= mask; - gamemod <<= 1; - }else if(eventType == XmlPullParser.END_TAG) state = STATE_GAMEMOD; - else throwException(file, eventType); - break; + for(File file : files) { + try { + Ini ini = new Ini(file); + + String name = ini.get("Scheme", "name"); + if(name==null) { + name = file.getName(); + } + Section basicSettingsSection = ini.get("BasicSettings"); + Section gameModsSection = ini.get("GameMods"); + if(basicSettingsSection == null || gameModsSection == null) { + Log.e(Scheme.class.getCanonicalName(), "Scheme file "+file+" is missing the BasicSettings or GameMods section - skipping."); + continue; + } + + Map basicSettings = new TreeMap(); + for(Entry entry : basicSettingsMeta.entrySet()) { + String key = entry.getKey(); + BasicSettingMeta settingMeta = entry.getValue(); + Integer value = null; + if(basicSettingsSection.containsKey(key)) { + try { + value = Integer.valueOf(basicSettingsSection.get(key)); + } catch (NumberFormatException e) { + // ignore + } } - eventType = getEventType(xmlPuller); - }//end while(eventtype != END_DOCUMENT - schemes.add(new Scheme(name, basic, gamemod)); - }//end for(string file : files - return schemes; - } catch (XmlPullParserException e) { - e.printStackTrace(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); + + if(value==null) { + Log.w(Scheme.class.getCanonicalName(), "Scheme file "+file+" setting "+key+" is missing or invalid, using default."); + value = settingMeta.def; + } + + if(settingMeta.checkOverMax) { + value = Math.min(value, settingMeta.max); + } + if(settingMeta.times1000) { + value *= 1000; + } + + basicSettings.put(key, value); + } + + int gamemods = 0; + for(Entry entry : gameModsMeta.entrySet()) { + String key = entry.getKey(); + GameModMeta modMeta = entry.getValue(); + if(Boolean.parseBoolean(gameModsSection.get(key))) { + gamemods |= (1 << modMeta.bitmaskIndex); + } + } + + schemes.add(new Scheme(name, basicSettings, gamemods)); + } catch (InvalidFileFormatException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } } - return new ArrayList();//TODO handle correctly + return schemes; } - private static FilenameFilter fnf = new FilenameFilter(){ - public boolean accept(File dir, String filename) { - return filename.toLowerCase().startsWith("scheme_"); - } - }; - /** - * This method will parse the basic flags from a prespecified xml file. - * I use a raw xml file rather than one parsed by aatp at compile time - * to keep it generic with other frontends, ie in the future we could - * use one provided by the Data folder. - */ - public static void parseBasicFlags(Context c){ - String filename = String.format("%s/%s/basicflags", c.getFilesDir().getAbsolutePath(), DIRECTORY_SCHEME); - - XmlPullParser xmlPuller = null; - BufferedReader br = null; - try { - XmlPullParserFactory xmlPullFactory = XmlPullParserFactory.newInstance(); - xmlPuller = xmlPullFactory.newPullParser(); - br = new BufferedReader(new FileReader(filename), 1024); - xmlPuller.setInput(br); - - int eventType = getEventType(xmlPuller); - boolean continueParsing = true; - do{ - switch(eventType){ - - case XmlPullParser.START_TAG: - if(xmlPuller.getName().toLowerCase().equals("flag")){ - basicflags.add(parseFlag(xmlPuller)); - }else if(xmlPuller.getName().toLowerCase().equals("basicflags")){ - eventType = getEventType(xmlPuller); - }else{ - skipCurrentTag(xmlPuller); - eventType = getEventType(xmlPuller); - } - break; - case XmlPullParser.START_DOCUMENT://ignore all tags not being "flag" - case XmlPullParser.END_TAG: - case XmlPullParser.TEXT: - default: - continueParsing = true; - case XmlPullParser.END_DOCUMENT: - continueParsing = false; - } - }while(continueParsing); - - }catch(IOException e){ - e.printStackTrace(); - }catch (XmlPullParserException e) { - e.printStackTrace(); - }finally{ - if(br != null) - try { - br.close(); - } catch (IOException e) {} - } - - } - - /* - * * Parses a Tag structure from xml as example we use - * - * - * false - * - * - * - * It returns a LinkedHashMap with key/value pairs + * This method will parse the basic flags from a prespecified ini file. + * In the future we could use one provided by the Data folder. */ - private static LinkedHashMap parseFlag(XmlPullParser xmlPuller)throws XmlPullParserException, IOException{ - LinkedHashMap hash = new LinkedHashMap(); - - int eventType = xmlPuller.getEventType();//Get the event type which triggered this method - if(eventType == XmlPullParser.START_TAG && xmlPuller.getName().toLowerCase().equals("flag")){//valid start of flag tag - String lcKey = null; - String lcType = null; - String value = null; - - eventType = getEventType(xmlPuller);// - while(eventType == XmlPullParser.START_TAG){ - lcKey = xmlPuller.getName();//checkOverMax - if(getEventType(xmlPuller) == XmlPullParser.START_TAG){// - lcType = xmlPuller.getName().toLowerCase(); - if(getEventType(xmlPuller) == XmlPullParser.TEXT){ - value = xmlPuller.getText(); - if(getEventType(xmlPuller) == XmlPullParser.END_TAG && // - getEventType(xmlPuller) == XmlPullParser.END_TAG){// - if(lcType.equals("boolean")) hash.put(lcKey, new Boolean(value)); - else if(lcType.equals("string"))hash.put(lcKey, value); - else if(lcType.equals("integer")){ - try{ - hash.put(lcKey, new Integer(value)); - }catch (NumberFormatException e){ - throw new XmlPullParserException("Wrong integer value in xml file"); - } - }else{ - throwException("basicflags", eventType); - } - }// / - }//if TEXT - }//if boolean - eventType = getEventType(xmlPuller);//start new loop + public static void parseConfiguration(Context c) { + File schemeDir = new File(c.getFilesDir(), DIRECTORY_SCHEME); + File settingsFile = new File(schemeDir, "basicsettings"); + File gameModsFile = new File(schemeDir, "gamemods"); + + try { + Ini ini = new Ini(settingsFile); + for(Entry sectionEntry : ini.entrySet()) { + basicSettingsMeta.put(sectionEntry.getKey(), new BasicSettingMeta(sectionEntry.getValue())); } - eventType = getEventType(xmlPuller);// + + ini = new Ini(gameModsFile); + for(Entry sectionEntry : ini.entrySet()) { + gameModsMeta.put(sectionEntry.getKey(), new GameModMeta(sectionEntry.getValue())); + } + } catch (InvalidFileFormatException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); } - - return hash; - } - - private static void skipCurrentTag(XmlPullParser xmlPuller) throws XmlPullParserException, IOException{ - int eventType = xmlPuller.getEventType(); - if(eventType != XmlPullParser.START_TAG)return; - String tag = xmlPuller.getName().toLowerCase(); - - while(true){ - eventType = getEventType(xmlPuller);//getNext() - switch(eventType){ - case XmlPullParser.START_DOCUMENT://we're inside of a start tag so START_ or END_DOCUMENT is just wrong - case XmlPullParser.END_DOCUMENT: - throw new XmlPullParserException("invalid xml file"); - case XmlPullParser.START_TAG://if we get a new tag recursively handle it - skipCurrentTag(xmlPuller); - break; - case XmlPullParser.TEXT: - break; - case XmlPullParser.END_TAG: - if(!xmlPuller.getName().toLowerCase().equals(tag)){//if the end tag doesn't match the start tag - throw new XmlPullParserException("invalid xml file"); - }else{ - return;//skip completed - } - - } - } - } - - /** - * Skips whitespaces.. - */ - private static int getEventType(XmlPullParser xmlPuller)throws XmlPullParserException, IOException{ - int eventType = xmlPuller.next(); - while(eventType == XmlPullParser.TEXT && xmlPuller.isWhitespace()){ - eventType = xmlPuller.next(); - } - return eventType; - } - private static void throwException(String file, int eventType){ - throw new IllegalArgumentException(String.format("Xml file: %s malformed with error: %d.", file, eventType)); } public int describeContents() { @@ -343,13 +189,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(gamemod); - dest.writeList(basic); - } - - public void readFromParcel(Parcel src){ - name = src.readString(); - gamemod = src.readInt(); - basic = src.readArrayList(ArrayList.class.getClassLoader()); + dest.writeMap(basic); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @@ -366,3 +206,60 @@ return name.compareTo(another.name); } } + +class BasicSettingMeta { + final String command; + final String title; + final int def; + final int min; + final int max; + final boolean times1000; + final boolean checkOverMax; + + public BasicSettingMeta(Ini.Section section) { + command = getRequired(section, "command"); + title = section.get("title", ""); + def = Integer.parseInt(getRequired(section, "default")); + min = Integer.parseInt(getRequired(section, "min")); + max = Integer.parseInt(getRequired(section, "max")); + times1000 = Boolean.parseBoolean(section.get("times1000", "false")); + checkOverMax = Boolean.parseBoolean(section.get("checkOverMax", "false")); + } + + private String getRequired(Ini.Section section, String key) { + String result = section.get(key); + if(result==null) { + throw new IllegalArgumentException("basicsettings.ini, section "+section.getName()+" is missing required setting "+key+"."); + } + return result; + } + + @Override + public String toString() { + return String + .format("BasicSettingMeta [command=%s, title=%s, def=%s, min=%s, max=%s, times1000=%s, checkOverMax=%s]", + command, title, def, min, max, times1000, checkOverMax); + } +} + +// TODO: Extend with additional metadata +class GameModMeta { + final int bitmaskIndex; + + public GameModMeta(Ini.Section section) { + bitmaskIndex = Integer.parseInt(getRequired(section, "bitmaskIndex")); + } + + private String getRequired(Ini.Section section, String key) { + String result = section.get(key); + if(result==null) { + throw new IllegalArgumentException("gamemods.ini, section "+section.getName()+" is missing required setting "+key+"."); + } + return result; + } + + @Override + public String toString() { + return String.format("GameModMeta [bitmaskIndex=%s]", bitmaskIndex); + } +} \ No newline at end of file diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Team.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Team.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Team.java Thu May 03 22:48:02 2012 +0200 @@ -88,6 +88,7 @@ readFromParcel(in); } + @Override public boolean equals(Object o){ if(super.equals(o)) return true; else if(o instanceof Team){ @@ -103,6 +104,19 @@ return false; } } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((grave == null) ? 0 : grave.hashCode()); + result = prime * result + ((flag == null) ? 0 : flag.hashCode()); + result = prime * result + ((voice == null) ? 0 : voice.hashCode()); + result = prime * result + ((fort == null) ? 0 : fort.hashCode()); + result = prime * result + ((hash == null) ? 0 : hash.hashCode()); + return result; + } public void setRandomColor(int[] illegalcolors){ Integer[] colorsToPickFrom = TEAM_COLORS; diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadAsyncTask.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadAsyncTask.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadAsyncTask.java Thu May 03 22:48:02 2012 +0200 @@ -107,7 +107,7 @@ entry = input.getNextEntry(); }catch(IOException e){ e.printStackTrace(); - if(conn != null) conn.disconnect(); + conn.disconnect(); return EXIT_CONNERROR; } diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadListActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadListActivity.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadListActivity.java Thu May 03 22:48:02 2012 +0200 @@ -6,7 +6,6 @@ import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; -import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadPackage.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadPackage.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadPackage.java Thu May 03 22:48:02 2012 +0200 @@ -29,7 +29,6 @@ import android.os.Parcel; import android.os.Parcelable; import android.preference.PreferenceManager; -import android.util.Log; public class DownloadPackage implements Parcelable{ private String url_without_suffix; diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/EngineProtocol/GameConfig.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/EngineProtocol/GameConfig.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/EngineProtocol/GameConfig.java Thu May 03 22:48:02 2012 +0200 @@ -79,7 +79,7 @@ weapon.sendToEngine(epn, teamCount); for(Team t : teams){ - if(t != null)t.sendToEngine(epn, teamCount, scheme.health); + if(t != null)t.sendToEngine(epn, teamCount, scheme.getHealth()); } } diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/MainActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/MainActivity.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/MainActivity.java Thu May 03 22:48:02 2012 +0200 @@ -26,7 +26,6 @@ import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.preference.PreferenceManager; diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/SDLActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/SDLActivity.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/SDLActivity.java Thu May 03 22:48:02 2012 +0200 @@ -574,34 +574,29 @@ // Touch events public boolean onTouch(View v, MotionEvent event) { - { - final int touchDevId = event.getDeviceId(); - final int pointerCount = event.getPointerCount(); - // touchId, pointerId, action, x, y, pressure - int actionPointerIndex = event.getActionIndex(); - int pointerFingerId = event.getPointerId(actionPointerIndex); - int action = event.getActionMasked(); - - float x = event.getX(actionPointerIndex); - float y = event.getY(actionPointerIndex); - float p = event.getPressure(actionPointerIndex); + final int action = event.getAction() & MotionEvent.ACTION_MASK; + final int actionPointerIndex = event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK; - if (action == MotionEvent.ACTION_MOVE && pointerCount > 1) { - // TODO send motion to every pointer if its position has - // changed since prev event. - for (int i = 0; i < pointerCount; i++) { - pointerFingerId = event.getPointerId(i); - x = event.getX(i); - y = event.getY(i); - p = event.getPressure(i); - SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); - } - } else { - SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); + if (action == MotionEvent.ACTION_MOVE) { + // TODO send motion to every pointer if its position has + // changed since prev event. + for (int i = 0; i < event.getPointerCount(); i++) { + sendNativeTouch(event, action, i); } + } else { + sendNativeTouch(event, action, actionPointerIndex); } return true; } + + private static void sendNativeTouch(MotionEvent event, int action, int pointerIndex) { + int touchDevId = event.getDeviceId(); + int pointerFingerId = event.getPointerId(pointerIndex); + float x = event.getX(pointerIndex); + float y = event.getY(pointerIndex); + float pressure = event.getPressure(pointerIndex); + SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, pressure); + } // Sensor events public void enableSensor(int sensortype, boolean enabled) { @@ -627,6 +622,5 @@ event.values[2] / SensorManager.GRAVITY_EARTH); } } - } diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/StartGameActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/StartGameActivity.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/StartGameActivity.java Thu May 03 22:48:02 2012 +0200 @@ -29,11 +29,9 @@ import android.app.Activity; import android.content.Intent; -import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcelable; -import android.preference.PreferenceManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; @@ -56,7 +54,7 @@ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); - Scheme.parseBasicFlags(this); + Scheme.parseConfiguration(this); config = new GameConfig(); setContentView(R.layout.starting_game); diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/TeamCreatorActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/TeamCreatorActivity.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/TeamCreatorActivity.java Thu May 03 22:48:02 2012 +0200 @@ -311,7 +311,7 @@ imgFort.setImageDrawable(fortIconDrawable); scroller.fullScroll(ScrollView.FOCUS_DOWN);// Scroll the scrollview // to the bottom, work - // around for scollview + // around for scrollview // invalidation (scrolls // back to top) } diff -r 6a1f46c026bf -r 846cea23aea2 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Utils.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Utils.java Thu May 03 19:00:17 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Utils.java Thu May 03 22:48:02 2012 +0200 @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.List; +import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.os.Build; @@ -54,6 +55,7 @@ return getCachePath(c) + ROOT_DIR; } + @TargetApi(8) static class FroyoSDCardDir{ public static String getDownloadPath(Context c){ File f = c.getExternalCacheDir(); diff -r 6a1f46c026bf -r 846cea23aea2 share/hedgewars/Data/Maps/Sticks/map.cfg diff -r 6a1f46c026bf -r 846cea23aea2 share/hedgewars/Data/Maps/Sticks/preview@2x.png diff -r 6a1f46c026bf -r 846cea23aea2 share/hedgewars/Data/Music/Nature.ogg