Compare commits
1715 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b620627d9 | |||
| d943778309 | |||
| 06cb835a5b | |||
| f1a529576e | |||
| 1af3cff419 | |||
| 5db6b807ba | |||
| 1c6b0bdfd5 | |||
| 3dfcc65fa6 | |||
| c3937ce517 | |||
| ab1fbaa806 | |||
| 6eca5bea2f | |||
| e4d73d95ec | |||
| 363383df6d | |||
| 0d05804376 | |||
| cdd36a404b | |||
| 64c509980c | |||
| 46ba018201 | |||
| 0cb931e6e2 | |||
| 58af6f73d9 | |||
| e81f1299cb | |||
| 9b5f9684b0 | |||
| d934c0948c | |||
| 917a3a88df | |||
| dc5b8a8c52 | |||
| d2b44e652b | |||
| 1ce3b469e7 | |||
| 07e6d90c98 | |||
| 85231cda01 | |||
| 8549b7b1b4 | |||
| 9f58ef9916 | |||
| c734ee9fd1 | |||
| 77d87902d9 | |||
| b5c8656ac9 | |||
| 28f6b73da6 | |||
| 521b505543 | |||
| c5a3310103 | |||
| 0c053c713a | |||
| bc06f93aae | |||
| 8e919aeeb1 | |||
| 6bd09e42e0 | |||
| 1f670b9919 | |||
| c805a58fb0 | |||
| 34517004df | |||
| b0506bcd96 | |||
| 7a3a6c04a6 | |||
| 54e4b08e1f | |||
| 67c22c5186 | |||
| 87aba86fa8 | |||
| 28ea300f42 | |||
| 858c26b46a | |||
| 70a6c7149c | |||
| b4a34216c8 | |||
| 3868f4eb98 | |||
| 44304ee5b3 | |||
| 9f4b8d65c8 | |||
| 665f8ce755 | |||
| e1d5348f23 | |||
| b596dc9eea | |||
| eb8370b86b | |||
| fa69686f0a | |||
| 3fe5372d28 | |||
| 3058d42b49 | |||
| 4975ee0028 | |||
| d4e1d809f3 | |||
| 44cb0d995e | |||
| c73d08187b | |||
| 4382c34539 | |||
| cb173b7bf9 | |||
| b5d4674471 | |||
| be1803dfb6 | |||
| 417c1af21e | |||
| 00bccd02da | |||
| 8596443da5 | |||
| a2eda76a26 | |||
| b4e25838bd | |||
| 44d703887c | |||
| 29fd3e4c96 | |||
| 0778b13e2b | |||
| bef1f6d8b8 | |||
| d6a0b04930 | |||
| 87ae60f323 | |||
| 85df061701 | |||
| 4ed44c638f | |||
| 54f0cd7864 | |||
| 4f523b1b9b | |||
| d492481a4f | |||
| 3975a45858 | |||
| 5f2fbb370c | |||
| d9bd6bbb32 | |||
| 31814bda37 | |||
| 8f61b590f8 | |||
| 37642c1f78 | |||
| 8ea7b4d4cb | |||
| 245f5c6e93 | |||
| 88d1c29621 | |||
| 44926393ac | |||
| 5d790c9406 | |||
| 66261b0f51 | |||
| e99a9abacd | |||
| b01c1455f5 | |||
| 650d794eec | |||
| acf74e7f6e | |||
| 53f0c2421d | |||
| 01d46615a7 | |||
| 57f55e4270 | |||
| 5c159e86d7 | |||
| fb03037923 | |||
| ff6e4aec9a | |||
| c78db0eb26 | |||
| 324e206b74 | |||
| 030dca051a | |||
| 24e3fd3267 | |||
| a28f6b1194 | |||
| 38e97aa79f | |||
| 8adfd1b10b | |||
| ffda7a53fe | |||
| 20ddd9157f | |||
| a3f329bd7a | |||
| 13c6837b60 | |||
| 84fe9fbc74 | |||
| e5ec92ac2a | |||
| 12155f9390 | |||
| 00da0bd0d1 | |||
| 4bf5943ac5 | |||
| f205de7205 | |||
| f782c535f9 | |||
| 030d6bc4bb | |||
| 9c10574e49 | |||
| 9512e5c3db | |||
| 8686fef96a | |||
| 06285c11c7 | |||
| 3b58790c96 | |||
| a8b494f960 | |||
| 72c6f448d0 | |||
| ce3c75817c | |||
| 56c943d6d1 | |||
| 21b0b4c524 | |||
| 51daf691b3 | |||
| e889aff42c | |||
| df07b6dc9e | |||
| 63c15b54d6 | |||
| b76a231083 | |||
| e0f58e1916 | |||
| 78bfa604e2 | |||
| dcbe0c40b0 | |||
| f384d75de8 | |||
| cf6084071b | |||
| 0150796064 | |||
| f91186ffa4 | |||
| ba73da321b | |||
| 8ae3e1ea98 | |||
| fa5b075af5 | |||
| a66fced2f7 | |||
| 33492602fb | |||
| b7dae1025b | |||
| 7627a00dce | |||
| d761bac85c | |||
| 3bf1cca118 | |||
| cdb056e8ba | |||
| e47256eae7 | |||
| 5f1874edae | |||
| 22376e873e | |||
| 02d882a7c3 | |||
| d878e0c450 | |||
| 1430cfd6b4 | |||
| 5a3493c0c9 | |||
| 911f8f6de6 | |||
| fe8fbd058b | |||
| c4529a0949 | |||
| 6ec3a68f0a | |||
| 458731778d | |||
| 64547271dc | |||
| 9e584951ac | |||
| c859fdd08e | |||
| 1380ee6f20 | |||
| 2da2272a53 | |||
| 17b6996ae4 | |||
| 0f82b6efba | |||
| 178fcb9717 | |||
| 19f0c653d1 | |||
| 7dc76876e4 | |||
| 60457886cc | |||
| ec078b6ccc | |||
| ec730a4383 | |||
| b2b3255f59 | |||
| df925cfcb0 | |||
| 5b96f30b1a | |||
| 8feb870c8f | |||
| d0b2340a73 | |||
| efac298eb0 | |||
| 453c5b0d6e | |||
| 816010582a | |||
| a260eb11a8 | |||
| b1d271f1c2 | |||
| 3faa959c09 | |||
| a12a5e1637 | |||
| 7c6d59a292 | |||
| 9836d8595c | |||
| c9d5dfaf1b | |||
| 028f6cbb4e | |||
| c56d1b0bec | |||
| 2e61f6c13d | |||
| 8437467320 | |||
| 039be43c2b | |||
| a1af7d9b9f | |||
| 4ce37964f4 | |||
| c1cdfa78d3 | |||
| ff4911116c | |||
| bb9d98cc0c | |||
| 2d93d9b3cc | |||
| 1c60ba6e7f | |||
| 11b3989615 | |||
| c9f26a48c7 | |||
| 75cbaf0f06 | |||
| de1dc6828d | |||
| e6bf23e536 | |||
| 5b16ff4a69 | |||
| ed42c3fd29 | |||
| 9cd67eedc1 | |||
| acc589bdb6 | |||
| 2d78512ca2 | |||
| 84023a5f66 | |||
| 443f378d1b | |||
| d4989d7576 | |||
| 860b0b64e3 | |||
| ba40253a46 | |||
| 95b81b6425 | |||
| b664c2bed1 | |||
| c6c4c17b30 | |||
| 5e46016c4d | |||
| da874738d6 | |||
| 0a68a056d8 | |||
| 5a3a32462d | |||
| c70762f871 | |||
| 6c28496dd8 | |||
| 90ed6e1fdd | |||
| 60d7675a36 | |||
| a9b42127d1 | |||
| 01fdcfdfec | |||
| 2d383e237f | |||
| 143b3d98b1 | |||
| 6f4377de76 | |||
| 722056e78a | |||
| 21710ddfb3 | |||
| 13f590c6a2 | |||
| d604ae2d77 | |||
| 7a35c253cb | |||
| b5129f702e | |||
| 6b1e51b4f6 | |||
| 3776bff594 | |||
| 3afcc7fdf9 | |||
| e74921cbdf | |||
| e9c33e3bea | |||
| 36d4db49ca | |||
| 2c40c77403 | |||
| 15febaf851 | |||
| 02dce1af2e | |||
| 5915ceb0a5 | |||
| d6f666d9a0 | |||
| 37fa69fc39 | |||
| 8e47927805 | |||
| f1c1161da5 | |||
| 392382e3e3 | |||
| d6403918b6 | |||
| fc9b0b233c | |||
| f16755b86b | |||
| f45e975b14 | |||
| b3de6a283d | |||
| 7fa204fc9c | |||
| f284a9691b | |||
| 9bb63a68f5 | |||
| 77d20e89c8 | |||
| 66f664207a | |||
| bac69f95d8 | |||
| 75e372ac9b | |||
| ef31192f33 | |||
| fde707b726 | |||
| e158e95245 | |||
| 5b23cc2e33 | |||
| c72cdff0f1 | |||
| 831c8f73b0 | |||
| 2dc6c62acb | |||
| 9e1d1a056c | |||
| 9a32ae2c6d | |||
| b1a2003a84 | |||
| e2c1d62552 | |||
| db0f6d6c0b | |||
| bc44ee8056 | |||
| 65a9bd55d8 | |||
| 2aa0668c28 | |||
| 9f5e37a03c | |||
| f27763870c | |||
| ab22e02db8 | |||
| 257afd3525 | |||
| eec38de558 | |||
| 35de677999 | |||
| 8b9dfdf96d | |||
| c830ef88ca | |||
| ba0daed776 | |||
| f37d946b4e | |||
| 477419cc32 | |||
| 70e8d1c4b3 | |||
| 732f795be4 | |||
| 00536fa3d9 | |||
| 042f00cc58 | |||
| acef89ea03 | |||
| d7770d285f | |||
| 7932941a01 | |||
| c4eac5e62b | |||
| 763bd60e74 | |||
| 3fa52e7ac5 | |||
| 9104afdef7 | |||
| 942c95e736 | |||
| dc696a0f45 | |||
| d26e9da6c4 | |||
| ea09b1f6bc | |||
| da033eb28e | |||
| b2a0ccba05 | |||
| 3f146c94e5 | |||
| 9d92bdcd75 | |||
| 6354d8ccca | |||
| 1d0237f15d | |||
| c535d033ec | |||
| fcf900c5e0 | |||
| c265ce8222 | |||
| 658b90067a | |||
| 80b6496780 | |||
| 711934a249 | |||
| ea5e397595 | |||
| c8dc416071 | |||
| 30026fc307 | |||
| 7b0fdcd721 | |||
| c0afb3b95e | |||
| 5504bf23d1 | |||
| 28b51d3335 | |||
| fb91726c35 | |||
| a97a7edca6 | |||
| 92b4909fc8 | |||
| 3998c21178 | |||
| 41d925d7c9 | |||
| 7029636291 | |||
| a916c1067f | |||
| 7322d4da8b | |||
| 31f15b12cb | |||
| 4d3e463aba | |||
| 166526dbbe | |||
| 348ada3f0d | |||
| 2c5f6d8332 | |||
| e128d548f4 | |||
| bb2ab1c1fe | |||
| 715bedb71a | |||
| 8fed9e47d1 | |||
| 89f8f7e25e | |||
| 7bbba293a6 | |||
| d57a694d3c | |||
| f31d5c04c8 | |||
| 85f66a8fec | |||
| 48ec606bc5 | |||
| 75cc809b16 | |||
| 2a27a491e7 | |||
| 3e75d70632 | |||
| cf2d094df6 | |||
| 18a7955240 | |||
| 22ebc27997 | |||
| c53ee24b5b | |||
| 25e681c04a | |||
| 365e0b49ae | |||
| e3dc78b28e | |||
| e3319f6fe4 | |||
| 0a9b006a94 | |||
| 5692be3b66 | |||
| 6ea5dea849 | |||
| 8debcf0fa2 | |||
| 1cf4845cb2 | |||
| b9d1292add | |||
| 19063fd8db | |||
| 76cf732100 | |||
| 30a7eef611 | |||
| 99f0020583 | |||
| f2e0da47ed | |||
| ca66a428d8 | |||
| f077a4e074 | |||
| e46631a960 | |||
| 2da1957c70 | |||
| ad6c48688d | |||
| 71da7fb384 | |||
| 0159e0e41e | |||
| 457a3fdc7a | |||
| 8507c0138d | |||
| 4f7901b946 | |||
| e239dc039b | |||
| 1428eeba06 | |||
| adcf6fb86d | |||
| de2d663968 | |||
| 60f6c683a3 | |||
| f8009672e9 | |||
| 9fe5ac1994 | |||
| 58efb51c07 | |||
| 5c3a064746 | |||
| 94aefa6dba | |||
| 7f6e96459c | |||
| 6fe57be115 | |||
| 37b3f28065 | |||
| 0b9468da1b | |||
| e558f21ebc | |||
| 71c1512ef2 | |||
| d03ebdace8 | |||
| d86b9119a4 | |||
| 0ab872e152 | |||
| 5e7f81678d | |||
| ff510248e9 | |||
| bba5d4380d | |||
| 39ad95d4db | |||
| e9adde8ac6 | |||
| 8fc120d9f9 | |||
| 7f8339aedf | |||
| d2183f3b91 | |||
| 11b4aa7308 | |||
| 51481daf03 | |||
| 1bdd0f6e26 | |||
| 1de492973e | |||
| eea96dac73 | |||
| ebc378a620 | |||
| 3d08ca0cc1 | |||
| f11cc41df8 | |||
| 19ce59b1b4 | |||
| 5101ac9d8e | |||
| 5149882bb5 | |||
| 26222ee853 | |||
| 0394e2cda9 | |||
| 501b310efa | |||
| 53e0b1b81c | |||
| 81be616847 | |||
| b9b2c9afb0 | |||
| 848cd9a485 | |||
| 75921e1130 | |||
| 0b14639c66 | |||
| 5c54f85de4 | |||
| 0202313bc8 | |||
| 2671826b19 | |||
| 7dc89ad090 | |||
| c54f0ea329 | |||
| d90f3ce309 | |||
| bcc6ced47c | |||
| 1b5c61a285 | |||
| ca95192de3 | |||
| c2e04443e3 | |||
| f4f8c94c6a | |||
| f957fca162 | |||
| 9671711bf5 | |||
| ea3d4c67f8 | |||
| cab1f59181 | |||
| 8c01611850 | |||
| d6b682ab88 | |||
| d2beaa0ab9 | |||
| ce0fafd45b | |||
| c0dbd00b74 | |||
| a556aed34f | |||
| 8d19ee8ab3 | |||
| 8c4c80731c | |||
| de6619b383 | |||
| 941dc253fb | |||
| 25705a6b02 | |||
| 4d56269130 | |||
| 96236df293 | |||
| f447482e32 | |||
| 401b8fc496 | |||
| 2e2a2aaf03 | |||
| 66c2ab38ed | |||
| 6e0b7e2c23 | |||
| f335623f69 | |||
| f8369ee39a | |||
| 2a1bacdfa4 | |||
| a93dd6586d | |||
| f3dd1be125 | |||
| 5b49530df9 | |||
| 00555e3c75 | |||
| 972746d388 | |||
| db3aaf96c7 | |||
| e12c87b869 | |||
| ad80b000c9 | |||
| 9bcc54c56c | |||
| 3e6d207bf0 | |||
| 6c836e0fde | |||
| 5f9e123571 | |||
| 20ba624de2 | |||
| 12426cf8a7 | |||
| 1cd6f00c59 | |||
| 365d5784b7 | |||
| a90cddf589 | |||
| 5f71017142 | |||
| c81402b8ce | |||
| 6122410db1 | |||
| 42e240c9ab | |||
| 01459b7759 | |||
| cd2f4480f4 | |||
| ce92679be0 | |||
| e9705b2cc5 | |||
| a2007dd59e | |||
| d6052b718e | |||
| 6bfc79fb03 | |||
| e9a5f30c71 | |||
| 9a61b7f13b | |||
| 2073f3d7ed | |||
| 774cd46892 | |||
| f593ee7c9f | |||
| 47d35446e2 | |||
| 3e16969808 | |||
| 3e95f5cd05 | |||
| 15a8437d79 | |||
| 6a213bffa6 | |||
| 5be01a7577 | |||
| 89b8eabe0c | |||
| 3cecc34a9c | |||
| 9e76214be8 | |||
| 5b059f974f | |||
| ecb4f64f91 | |||
| 992121c659 | |||
| cbc41214d8 | |||
| 53c7a81666 | |||
| a63065b44f | |||
| cec4494ce6 | |||
| 60411027ca | |||
| 8d7b9293b5 | |||
| 2133dfd80c | |||
| 1a75f51aa6 | |||
| 2a8c036c63 | |||
| c90f357bff | |||
| 4d381452b5 | |||
| 087b53c1c5 | |||
| 58a2769f2b | |||
| ce38c3e5c5 | |||
| 12f7d5e4b6 | |||
| fd703dd4d1 | |||
| 3ef4c1f6e0 | |||
| 0e95444552 | |||
| aca90db2c2 | |||
| 09edd055e6 | |||
| 892ef6b1b3 | |||
| ed838815ef | |||
| 8d8c4d1a95 | |||
| debdf917ea | |||
| f03961bc19 | |||
| fb4572264d | |||
| d7445a70f9 | |||
| 78bcf9a738 | |||
| d71c85412f | |||
| f5c9ab72ef | |||
| 5c4cd74c39 | |||
| 5a1daf5dc9 | |||
| 4de2a45195 | |||
| 91d3a6ecb7 | |||
| 763918e129 | |||
| 525c166f62 | |||
| 6b2ed24fc3 | |||
| 1eae3a032f | |||
| 755cfe19d5 | |||
| 559331cf82 | |||
| 18fddb1537 | |||
| 861620cb6e | |||
| 568f3ae94f | |||
| 0af00a313e | |||
| ff52f020e2 | |||
| 55bf7bcbda | |||
| bccb740c45 | |||
| b7307adc10 | |||
| edb71dcef0 | |||
| 7ddf232615 | |||
| a7cdb0a514 | |||
| 7157e571c8 | |||
| d073b7b3c0 | |||
| 27d67398fb | |||
| cc6ced9197 | |||
| 712e42c71f | |||
| 53efc96e30 | |||
| 5b2ac0f022 | |||
| b5cdcc29bc | |||
| df3e6e5fb7 | |||
| 27145bdabe | |||
| 71aedfd96d | |||
| 8530292fef | |||
| f1bc268f58 | |||
| 2e79f5a369 | |||
| 1427b1709a | |||
| 960d4d35fb | |||
| 7a467ce860 | |||
| cd46314b4e | |||
| 9c81acff53 | |||
| d8b2e2873b | |||
| 98cd6675d9 | |||
| 002085ad32 | |||
| 2e525dfdcc | |||
| a378e3a72d | |||
| 7e14b2fc5a | |||
| 51016f9258 | |||
| adad723110 | |||
| a10e7ab279 | |||
| 0c124327de | |||
| 6c5f706064 | |||
| 2422e72713 | |||
| e49e4a5e67 | |||
| 14d8d65de0 | |||
| d3305cadb6 | |||
| 17c28ca584 | |||
| 151905c5f3 | |||
| ab49ea07e8 | |||
| 8e436e6b55 | |||
| de5414ec19 | |||
| e5d71579af | |||
| 5ec4c9714c | |||
| eafb2558c2 | |||
| 4cefcb26c2 | |||
| 8a86e7d0f7 | |||
| b20fb61e1c | |||
| feeed99c62 | |||
| aa5008f865 | |||
| c4ce2aa977 | |||
| 7cc31a473c | |||
| a8193012aa | |||
| eb0ecedecf | |||
| de44abd529 | |||
| 9807ca99f9 | |||
| 8c9d2d6f1d | |||
| 65ef1f384c | |||
| bf2cc36719 | |||
| 34ffe7eefa | |||
| b756c8b9ec | |||
| 19a98c9ad6 | |||
| e159025ebb | |||
| 05e81ad923 | |||
| 8e1a0eb20f | |||
| a881b8fa5a | |||
| 6982030013 | |||
| 01da4c6af5 | |||
| a42805d4cc | |||
| 01145c4581 | |||
| 4d1dfb58ff | |||
| 43f44a4142 | |||
| b314d3cafe | |||
| 9bbf28e44b | |||
| d995d25f69 | |||
| 1f58b8e6a7 | |||
| eeb881cdc2 | |||
| 807874ce5d | |||
| 213d11c8e9 | |||
| dfd0761506 | |||
| 4c30086896 | |||
| 1efdca399e | |||
| 4f27c8051a | |||
| d43693fef0 | |||
| 88f0202b16 | |||
| be98e0b543 | |||
| 8a907bb3f3 | |||
| 1b34a478a1 | |||
| cda0bba555 | |||
| dae1b10de1 | |||
| 0c4e72ece2 | |||
| 77dfd51b28 | |||
| b601a549d0 | |||
| c4907edd76 | |||
| dcf4148d75 | |||
| 8afeef568f | |||
| dd5635d9cd | |||
| 62a6ddf3ca | |||
| 195daa97f3 | |||
| b1c5c87443 | |||
| 1ab88940f9 | |||
| 8ba97b8a74 | |||
| e7f5442a64 | |||
| 066dd866b1 | |||
| fa0722a9e2 | |||
| 5f276f6b22 | |||
| c45b5751af | |||
| 161802cf9d | |||
| 0679832b04 | |||
| b20d6f8820 | |||
| 52fb40d543 | |||
| 067279d2e8 | |||
| a0bbed6c6c | |||
| 9371125eb0 | |||
| 0a0f6cdce9 | |||
| fc350be3a1 | |||
| be731a99c0 | |||
| c65fd1d7ae | |||
| be899159f3 | |||
| 2400e6578b | |||
| 1aac2b8e75 | |||
| c7581220b8 | |||
| f3968215e0 | |||
| 56a8011b78 | |||
| adccae7937 | |||
| 1c63c1937a | |||
| 4753f7bb51 | |||
| d7fec7d10a | |||
| 3c90a29b1e | |||
| 98de361bf4 | |||
| c1df10e064 | |||
| 3743e0bc03 | |||
| 12e6a4d0ae | |||
| 969511953a | |||
| 223e2e04b0 | |||
| 0b0368ffcc | |||
| 9e4684b524 | |||
| d825c7e4ea | |||
| c38c996773 | |||
| 71a9ef00ee | |||
| 89a30ae5ee | |||
| 94bd0e057b | |||
| 0efc6338bb | |||
| 3b98da1d86 | |||
| 6927c68811 | |||
| f0909ba3a0 | |||
| 2f7d2873f7 | |||
| 7a6b6aa335 | |||
| 2861ef0c73 | |||
| 059fc06f3a | |||
| a971576de0 | |||
| a4e059e3ec | |||
| 07408b7bc3 | |||
| 9722f7b71e | |||
| 45d8413d59 | |||
| 5c400457a9 | |||
| 3e9ee5890f | |||
| 1acdb40498 | |||
| 1dc0b00133 | |||
| f2208389bd | |||
| ab92c3e15b | |||
| 018e35295a | |||
| 2c9e90eee0 | |||
| 847f21f7dc | |||
| b90dfbe3b0 | |||
| c230794c82 | |||
| 7f83aa7253 | |||
| 1039815017 | |||
| 2c43eac80d | |||
| 4aa6ad3203 | |||
| 730b05ad1b | |||
| 5a7b2c5029 | |||
| 7ae551de9d | |||
| 96dd3faef0 | |||
| ffdc8cd9ff | |||
| 8256ac3bee | |||
| 037ab83519 | |||
| a56e77310d | |||
| 5350fb7f5d | |||
| 9161f89057 | |||
| 1d2abeb20b | |||
| 833c21192a | |||
| 86168e454f | |||
| a20c2ce29a | |||
| 874b27c56d | |||
| a7dc44e4e1 | |||
| 047d08882e | |||
| 52df1ad963 | |||
| c2cec37928 | |||
| 239a186b36 | |||
| 5aeb2ebc05 | |||
| a7e87aaae5 | |||
| eb545eca57 | |||
| 44ab1827bf | |||
| 96b4f024b4 | |||
| b070035770 | |||
| 1b0c3d8c00 | |||
| 2e71cb08d0 | |||
| 3da5d12bee | |||
| e8019bbb92 | |||
| 30dab27202 | |||
| cc7077d783 | |||
| fda7e9f39d | |||
| e178533493 | |||
| e3ad9296bc | |||
| 01042a62ae | |||
| 7bd940ddb3 | |||
| f168702aad | |||
| 2a33c0c375 | |||
| eea240d7f2 | |||
| afb98a374c | |||
| ed0d28eaf6 | |||
| 50345101e5 | |||
| c0e4010c88 | |||
| 193d7accb4 | |||
| a9be34c627 | |||
| 0e14226968 | |||
| 068b03a0bb | |||
| b99f9ae752 | |||
| 3519871f80 | |||
| e9db853f28 | |||
| a6fdd89e1d | |||
| b8bfe7acc1 | |||
| dd5d5589ff | |||
| 7d460e093c | |||
| 54e86915b0 | |||
| ab2effd776 | |||
| 4f0da67a83 | |||
| 014ca36a4a | |||
| 2971e64182 | |||
| d7737c13ff | |||
| eebcc9c925 | |||
| 0c90b39a96 | |||
| 4f3f96337f | |||
| e855ca72aa | |||
| 8ff47bf8e2 | |||
| 9d75f69a79 | |||
| ae33977e10 | |||
| 07b5f35b98 | |||
| c4acf006dd | |||
| 12b80307a7 | |||
| 43fd399d10 | |||
| cc5d8940bf | |||
| 09ed1ab683 | |||
| 26c85fd18a | |||
| 894615bee6 | |||
| aeed094be0 | |||
| 61068ee166 | |||
| bdce25cb8c | |||
| 6a71bf5653 | |||
| 3007ddc093 | |||
| 4495e1649f | |||
| f960cdea9b | |||
| b70b2a65bc | |||
| 4a73e90da8 | |||
| fc59bef156 | |||
| 512f4ca4e4 | |||
| f254ca57c6 | |||
| 5e35dac1da | |||
| 44cbd408ce | |||
| 6fbe9de1a8 | |||
| 3b1410f913 | |||
| f9265923a9 | |||
| 3282848631 | |||
| f142363bfa | |||
| c0e9800179 | |||
| 97308ca31c | |||
| 02992954c2 | |||
| 78d4f178a3 | |||
| fe577d9dd0 | |||
| 007010067b | |||
| bc2d8dab31 | |||
| 296f8645fb | |||
| 2d76c8ff0d | |||
| 0a3d9f9876 | |||
| 2a1d0b19ce | |||
| a99c57ab1a | |||
| 6832049ccc | |||
| 6d72753216 | |||
| b6b3898536 | |||
| 99922d38e2 | |||
| 161623a8d2 | |||
| 155a7a6582 | |||
| 6aafe9dee0 | |||
| 680c9d64cb | |||
| ca395492d5 | |||
| ea920d352f | |||
| 0c0031455b | |||
| a8a9893ce4 | |||
| 5143743661 | |||
| 88a42b25cc | |||
| b371bf6efa | |||
| 3bc7ed6f8c | |||
| f996510969 | |||
| 58fd119636 | |||
| f275792604 | |||
| 9f8ead5e4e | |||
| a35ccbbe5b | |||
| 9a60a8838f | |||
| bb9e02da6b | |||
| 0fd0c5ecc1 | |||
| c89961ebf0 | |||
| 0f81e82206 | |||
| 7c7c8c4f34 | |||
| 3d7362aa9d | |||
| f3061a2526 | |||
| 2657af1aef | |||
| dd03ed4b30 | |||
| 64c6b05963 | |||
| 05017b0236 | |||
| efd9cce4ef | |||
| 144c78fa4b | |||
| 3147aa539c | |||
| ad4532932b | |||
| ffac3462af | |||
| 7c163592b5 | |||
| a6211e371e | |||
| 775085eca1 | |||
| b3d580cada | |||
| 37987ddb57 | |||
| a56ab4f561 | |||
| 6f649bd680 | |||
| 6316577ec7 | |||
| 61cd74fcd0 | |||
| 37fd0ebbd2 | |||
| 8e987a6718 | |||
| 520be9dbe8 | |||
| 322e6f7edf | |||
| b6eea6fe2e | |||
| dc84c50ea8 | |||
| 07d7df7271 | |||
| 5b9f3c70dc | |||
| bd36590084 | |||
| 4e64ff4ff9 | |||
| 2dd882a7a5 | |||
| fe4c102c7d | |||
| 1380bc9940 | |||
| 5cc549ad3a | |||
| 75395f6622 | |||
| c9576e260e | |||
| 362d692879 | |||
| acbaa69305 | |||
| 592a48c725 | |||
| bfaaf7d893 | |||
| 9e73dc9c00 | |||
| d37aac0c71 | |||
| 8314d4c9ae | |||
| d860954c32 | |||
| 0b4b085095 | |||
| c0334d0c94 | |||
| 6acd897e16 | |||
| 2adfc55339 | |||
| 208b4f68b5 | |||
| 33fd704a00 | |||
| 6d8ece6822 | |||
| 6b5cbd5f11 | |||
| ea6017511b | |||
| 2477b8a3ea | |||
| cdd1075384 | |||
| c61c17f19c | |||
| 774b79f07e | |||
| 002172281b | |||
| 4e9d4bfaf6 | |||
| 894e9f244f | |||
| 189b45ab9b | |||
| b0912de788 | |||
| f435946f66 | |||
| 64d91ccaab | |||
| e97fbb2784 | |||
| 0029e0ed43 | |||
| 088f235f29 | |||
| dd5aa90498 | |||
| c866e5dd45 | |||
| 6e8f74af15 | |||
| d70fd8c208 | |||
| 9551c9bed4 | |||
| 06740564f8 | |||
| ef94c31d42 | |||
| 093b370903 | |||
| 542845667a | |||
| 8ce08bc4f4 | |||
| 69158d55c1 | |||
| d9a794e186 | |||
| 6cc146c0a5 | |||
| b490328a45 | |||
| 30df5226df | |||
| c8369ce316 | |||
| ffb7e5d573 | |||
| 3d41531a84 | |||
| f0fa6986d7 | |||
| d908606527 | |||
| 886a26aa20 | |||
| bc77ff45cd | |||
| c1fb884dcd | |||
| 26992828f0 | |||
| 07670c6bc5 | |||
| b2bc6b7740 | |||
| c617ede243 | |||
| 0d7600d62c | |||
| 7a0ef10f9f | |||
| 2fc52c9abd | |||
| 9a56817bf8 | |||
| e81346f881 | |||
| 01fd8fa406 | |||
| f09e0db311 | |||
| 5dc72e88fe | |||
| 169e2b8477 | |||
| 9fe5ec6068 | |||
| d4e0ca3f03 | |||
| 7690a27e60 | |||
| 748d9ef65d | |||
| d88db28da8 | |||
| e95b9f57fa | |||
| 6c14aa49ea | |||
| 1859fc87ae | |||
| 6c9d2e5db7 | |||
| d6d147187d | |||
| ab75c1d5e2 | |||
| 992178eb9a | |||
| f61ce2884a | |||
| 21db8852d6 | |||
| 2900c1f914 | |||
| 8dd7bd8912 | |||
| c6f1784d9d | |||
| 684cb086cc | |||
| d2d8b06d97 | |||
| 4d346e0ca7 | |||
| a6cbd10f3b | |||
| 416a49d87f | |||
| f438548e5c | |||
| cc75fc42db | |||
| 66e01b12f8 | |||
| b3045726fb | |||
| 9b2b541e4d | |||
| 2d763d106d | |||
| 37d2feeaa5 | |||
| 66a33cd56e | |||
| ae07844a71 | |||
| e00484775e | |||
| ed871db1f3 | |||
| 3c4f3146c4 | |||
| 5cde230723 | |||
| 6d4a068453 | |||
| 248e8e6beb | |||
| 4db11ba324 | |||
| a97f862641 | |||
| 69db7f7384 | |||
| a72fb6f01a | |||
| 53766b99c9 | |||
| 1b54cf56e0 | |||
| 05a553ffdc | |||
| d6ea80843f | |||
| 8c2ce43053 | |||
| 34b33798a7 | |||
| adbef081d0 | |||
| 5eb3a86467 | |||
| bef2b34faa | |||
| 7516b44804 | |||
| 8b70f5a114 | |||
| c4581a8889 | |||
| fdde5b7fe9 | |||
| d1bc246a35 | |||
| 262779b515 | |||
| 78e4407c71 | |||
| d247c53136 | |||
| bca9381903 | |||
| a8cbdafe6e | |||
| e595f141c1 | |||
| 4aa43de54d | |||
| 2e92838364 | |||
| 283cb64a01 | |||
| 517fd2d4f4 | |||
| 3467c976a9 | |||
| f3166406ec | |||
| b5b930dddb | |||
| 11c10f526a | |||
| cf362f1a6a | |||
| 3b2ea8ea98 | |||
| f82bc39473 | |||
| b5976035e3 | |||
| 14f65c55b5 | |||
| ee91e0698d | |||
| aa23537354 | |||
| 242c7b623f | |||
| c0c52e57df | |||
| dff938e802 | |||
| 847e9dffc2 | |||
| 10d81bd47a | |||
| 3aa64697d2 | |||
| fecaf64eec | |||
| 20cb8e4ead | |||
| cb6e5a5e54 | |||
| 366de00950 | |||
| f80b7a32c1 | |||
| 67f3d956f4 | |||
| 607301b35d | |||
| 9f5c3e9942 | |||
| d34ecff3aa | |||
| 0ff7e54ff4 | |||
| c4e508a090 | |||
| 58f15184b8 | |||
| 61d22eb498 | |||
| 34d10bba3c | |||
| 5ba8cc3439 | |||
| 4da7f77089 | |||
| c544206437 | |||
| 7a65a7da1e | |||
| 014a153e49 | |||
| 066c40d9c1 | |||
| 5f7f4a23aa | |||
| e39dee6e1d | |||
| cf71f84e49 | |||
| 8265253388 | |||
| b1293b70cf | |||
| 7b8b197a35 | |||
| 867e1b8731 | |||
| 5cdcf47994 | |||
| a500920bb2 | |||
| a748e0337d | |||
| 2f4c00c602 | |||
| 78d3828f1e | |||
| 4505f51fbd | |||
| 2ca7b2310b | |||
| 861366dd71 | |||
| 4cada08cbe | |||
| 1d80d97d22 | |||
| 935849142c | |||
| 4e048f775d | |||
| f45adb5b9e | |||
| d4cc7ca232 | |||
| 51d06d8234 | |||
| 16f7ae54b8 | |||
| e15734d17e | |||
| 2cb773dd48 | |||
| 09672ce89b | |||
| c476262288 | |||
| 84c73bb11f | |||
| f8b5519ced | |||
| 01b7f36750 | |||
| 759c5222ac | |||
| 9847edbce1 | |||
| 19789b6d90 | |||
| 7b2ba7f3b1 | |||
| 9a5ed11c83 | |||
| 3fc8b6fc5c | |||
| c018e3dcc2 | |||
| 2b8f1b350c | |||
| 806c82c30c | |||
| 76f1591b58 | |||
| 2a5fc931b6 | |||
| a392e631d0 | |||
| f3da8f7353 | |||
| fda4d43678 | |||
| a09868c397 | |||
| fdddee415f | |||
| d239048817 | |||
| 88e146f4ba | |||
| a709a7fec0 | |||
| 8d5d7bdf8d | |||
| ffe3317228 | |||
| 71adcb338d | |||
| 62b46f6ef5 | |||
| 65149ece6c | |||
| b0318f6939 | |||
| b98fe6bda5 | |||
| 6e6274a2dd | |||
| 52988f154b | |||
| b590ea8caa | |||
| 3c7570aab9 | |||
| 3b8c92f5c2 | |||
| 164cf79613 | |||
| a216a6989b | |||
| 050bf5f73c | |||
| 8ff94669f2 | |||
| 775f9eb6b3 | |||
| aeff6b60e9 | |||
| 94989a1109 | |||
| e1c6c4e6b6 | |||
| 48bd49cf2f | |||
| 385a48bb43 | |||
| ad2b9a3640 | |||
| df249895e6 | |||
| c7005ef933 | |||
| 2489be93a3 | |||
| fa916c4fab | |||
| a8fcb909fe | |||
| 1262c5e8ff | |||
| 6edc3bcd02 | |||
| 4e9e709816 | |||
| d24bc0cf94 | |||
| a4bb0f40cc | |||
| 37d7693e3c | |||
| 9fd1c4bb0a | |||
| 9561cea8f9 | |||
| cfdfe6e567 | |||
| c3736f8dd8 | |||
| 6232c2e894 | |||
| a2cce876db | |||
| d3791e1316 | |||
| 9cbbdc422f | |||
| f76c28fa64 | |||
| cabc3e2441 | |||
| f208e755c2 | |||
| 9841ce32ae | |||
| 4f6456635e | |||
| 6dc69ded22 | |||
| 6ce67a95a2 | |||
| 6cc943d15d | |||
| b23314b408 | |||
| 9c32e4d66a | |||
| 1b9ddabcab | |||
| 6259333a70 | |||
| bedb28c073 | |||
| 65d93267a9 | |||
| 6ee041b374 | |||
| c46a6d3440 | |||
| 92fc016f20 | |||
| 8983ee5239 | |||
| 45291b4f05 | |||
| 6cfbdf2f30 | |||
| 44613dc416 | |||
| 1f95ff0fe7 | |||
| a939021304 | |||
| fc88d9b248 | |||
| 46e268e4e3 | |||
| f9f8ccc088 | |||
| 78c8e64e81 | |||
| ba54bd43aa | |||
| f61542ea6b | |||
| 21b162b192 | |||
| 91e7af4867 | |||
| 89968bf449 | |||
| 7f2f68ec58 | |||
| a5ebfd56e1 | |||
| 19cb8e3301 | |||
| a2014be118 | |||
| 3cde9a654b | |||
| 2f277171d1 | |||
| 43dba06074 | |||
| c0737c40a7 | |||
| beb2eb99fb | |||
| 62a52745df | |||
| 25e156297b | |||
| fd2aa5d046 | |||
| 547a9fcc17 | |||
| 90ea36d0fe | |||
| c3467f7204 | |||
| e6aafbc8a6 | |||
| 76bb777f4d | |||
| 39f6867ab0 | |||
| fbaef2f103 | |||
| db19fa507e | |||
| 27fd1942d0 | |||
| 975df3625d | |||
| 92a37e1e44 | |||
| cd33754a3c | |||
| 69d92bc0ea | |||
| 6d09c12f93 | |||
| ba0f4dbcf5 | |||
| e1bf3b4b82 | |||
| d647309587 | |||
| 140ee7b183 | |||
| 745eaf8a17 | |||
| b16e70c363 | |||
| 6ee00c138c | |||
| 0a4da47492 | |||
| 9439b347c9 | |||
| e24eb30c98 | |||
| f53573261e | |||
| d5b8337121 | |||
| b816facf44 | |||
| a6a5cf8755 | |||
| 83f7ed56fa | |||
| e88edd11af | |||
| 0b1be02c38 | |||
| b98b8b6f2e | |||
| 154358efd4 | |||
| 63c710047b | |||
| d0f4eeff1f | |||
| 4d3277f41b | |||
| 7c9d52abbf | |||
| cf6eccf565 | |||
| 1499baf8d9 | |||
| 37a0e95675 | |||
| fd62705fd7 | |||
| dc5fc2b544 | |||
| 70165a8c62 | |||
| 68f888baf0 | |||
| 3a8bc599ee | |||
| 9d79021678 | |||
| 7d339ccc23 | |||
| 3dd839c8bf | |||
| 7db5b6fbda | |||
| 1b7d199744 | |||
| 6bac099369 | |||
| d5cc1b970f | |||
| 06f8fb0406 | |||
| 7b6de7bbd8 | |||
| 503159ff6f | |||
| c22c674de1 | |||
| de3ce6f676 | |||
| cd34c4ebdf | |||
| ba0cab3743 | |||
| a73030ac9b | |||
| f57bba22cc | |||
| e315cad0f5 | |||
| 3f40a6db4b | |||
| eb99680986 | |||
| 2aa4f2da2d | |||
| a48568526b | |||
| 7247abd5f1 | |||
| bae2502d8f | |||
| cd645b33b2 | |||
| 07ad69c08f | |||
| 6bc7de3370 | |||
| f3ca247865 | |||
| 0167cf052d | |||
| 9a3b3013a3 | |||
| 0f9bbc1561 | |||
| 3ef6b3a76a | |||
| 3c7ccddfcc | |||
| 42019917ce | |||
| 68b632857d | |||
| eaf7b72dc7 | |||
| ff9cc83ef0 | |||
| 4e3dffad98 | |||
| 7662d974b9 | |||
| a78bdc4912 | |||
| 6b84de3ccd | |||
| fda537635e | |||
| c633ceb695 | |||
| a4c536740e | |||
| 923ebbc3c8 | |||
| 9d79a85b96 | |||
| 7b972142ba | |||
| b38275123a | |||
| a2249a7392 | |||
| c0a6fd2288 | |||
| 149af25d22 | |||
| b33ae0c92f | |||
| 1f54c7933b | |||
| 26346f5a42 | |||
| dbf78e2bae | |||
| 9c9da27938 | |||
| 41e97134ef | |||
| 97186361a1 | |||
| 2db6635d73 | |||
| 9ac1540cdc | |||
| 70c0957248 | |||
| c045811350 | |||
| 70bc60104f | |||
| 0f74558892 | |||
| 4e3543ace7 | |||
| 1924ab09da | |||
| a74e543429 | |||
| 00f67a57cf | |||
| 2244e62897 | |||
| 1569353779 | |||
| 40bb9e2c37 | |||
| c87e2b99d7 | |||
| 4934699ecd | |||
| c85f3aa7f7 | |||
| 7ea2086ec9 | |||
| 480e0ce9fa | |||
| fe14fd0a58 | |||
| e02e835053 | |||
| 26d88e15c6 | |||
| 5a9c13da86 | |||
| 3ee341cc4e | |||
| b9f6a5ab0e | |||
| ea03350ab9 | |||
| 06fdf3f0a5 | |||
| 76e7827ebf | |||
| 6c6f1f23ee | |||
| 8c47b666c5 | |||
| bad1fc9e09 | |||
| e4817038c3 | |||
| d8e28dad7f | |||
| 2c7921479a | |||
| 22a0f945b6 | |||
| 1faf2e0694 | |||
| 0376d094cc | |||
| 873db7ef27 | |||
| ecd4de48eb | |||
| fb132173bd | |||
| 7ae8434ba3 | |||
| edf33d85b0 | |||
| 2ae0a651b8 | |||
| a4c7da6e20 | |||
| fbfc712d4c | |||
| 5196424fbe | |||
| cd83cfdc87 | |||
| 52de1e7b02 | |||
| acfdab7dbb | |||
| c7731a1bb2 | |||
| f3c31697c8 | |||
| 7b6d14779f | |||
| 233cc24c9a | |||
| 87515de57f | |||
| 719a8b3420 | |||
| 6726166d2b | |||
| ecc5720007 | |||
| 1400f33f64 | |||
| edb1374c32 | |||
| f1c21dc9a2 | |||
| 680ad99c9f | |||
| 375589c73d | |||
| ce8e117b0b | |||
| 4e12de1629 | |||
| bd76d40518 | |||
| 723516f56c | |||
| 771755c96b | |||
| 0026153a2c | |||
| f7e0deafca | |||
| be53c68d28 | |||
| 62fa9acc9f | |||
| 0493c4063f | |||
| 956d0a736d | |||
| 52dfe654b5 | |||
| 5437bbaf2e | |||
| f4c17aaf45 | |||
| 20e365ea9c | |||
| b407701d94 | |||
| ed6755496f | |||
| 4530115506 | |||
| aabb905313 | |||
| aaf2d271bc | |||
| 1369a08863 | |||
| ac9dfd570a | |||
| 5cd5f4b38e | |||
| 57c7796424 | |||
| dd6c1c3d01 | |||
| 712fc26d56 | |||
| fd89d51f84 | |||
| 9e50187740 | |||
| a36b47e500 | |||
| a454c3e564 | |||
| 26b30cb20d | |||
| 7639e18c39 | |||
| 80d0ee4dc3 | |||
| 8a6b4a49f5 | |||
| 00adb20dc7 | |||
| 22d4cbbd1e | |||
| 1d81c12150 | |||
| 0fed1ba1ab | |||
| c472a0215d | |||
| 506adf63c9 | |||
| d4715ddc81 | |||
| d7fd36ddeb | |||
| e45290e834 | |||
| e0cf5aa602 | |||
| 555cf9016f | |||
| d6ab2e15bf | |||
| 95cec88742 | |||
| 18430dca25 | |||
| 8a374f53bc | |||
| 7a34543004 | |||
| 9568fe7d4d | |||
| f5d00ddbef | |||
| cccc21c035 | |||
| 090f365cee | |||
| cd1b629191 | |||
| 406f68ac5b | |||
| c6e76d78a2 | |||
| 0d480a67d8 | |||
| 4f9f84fc6a | |||
| 0f725a02db | |||
| 71fdbb6564 | |||
| a22991758f | |||
| 3404eb708d | |||
| c9439efcf8 | |||
| 6f4cf9e941 | |||
| c99216c053 | |||
| e592c331f9 | |||
| efdc4071da | |||
| e35c9f6087 | |||
| 71390046f5 | |||
| 1c8852a7a2 | |||
| 536a0e429a | |||
| 4f54e30e0e | |||
| 525453d677 | |||
| 6fb4dbdc7b | |||
| 60ba4e3eeb | |||
| 58b032627e | |||
| 7ffab1a821 | |||
| 7303c7c253 | |||
| 4557748c29 | |||
| d3cb13cfd8 | |||
| 1bd3b7743b | |||
| 591f7205ed | |||
| 3a9b4f3491 | |||
| 896b12c16b | |||
| ba7355a831 | |||
| c580d89c94 | |||
| 8793feb9ba | |||
| 40db1180df | |||
| d2f3e2cd60 | |||
| 56fc735b36 | |||
| bd5449a9a2 | |||
| 4853c8d314 | |||
| cdf94b281f | |||
| 8eeaa40cec | |||
| cf0f9d43fa | |||
| 0594822872 | |||
| 46d1e2e703 | |||
| dd14ee7156 | |||
| bab0d40c87 | |||
| 378a54fb62 | |||
| 2d5d367ee6 | |||
| 638c721d32 | |||
| f464623d17 | |||
| fe86514fb8 | |||
| 704f7f4494 | |||
| 3b0cd389e5 | |||
| 21eea225af | |||
| 743c2a6a5e | |||
| abcb511a57 | |||
| 3669bab210 | |||
| 88b9f83d79 | |||
| 2178018b18 | |||
| ae4d245232 | |||
| 509b21153f | |||
| 7810c65862 | |||
| 9f8d2b2d46 | |||
| 3bcb2985f9 | |||
| 0d8b2f4a01 | |||
| b060c4205c | |||
| f90775153c | |||
| 17a2d9b4d8 | |||
| 14a68d6ed4 | |||
| c7535e38dc | |||
| 8c4fabb89a | |||
| 1ad1bf7942 | |||
| 4e115a2326 | |||
| 6900e60df0 | |||
| 61881ad656 | |||
| d1e64a410b | |||
| 5e5de03055 | |||
| f4bdfa43ca | |||
| 5ede956e7f | |||
| 1cd27210ac | |||
| 2819ec01af | |||
| ca113497b2 | |||
| 15725c0302 | |||
| 851bd88de6 | |||
| a207936231 | |||
| 9cb40e41fa | |||
| 0f0bdd7d13 | |||
| 297206b054 | |||
| 626f0677f7 | |||
| 7b5b25d113 | |||
| 3635137906 | |||
| 7ea02a316e | |||
| 9a66b0c6e4 | |||
| 8fe5000ce1 | |||
| 82fac5f80e | |||
| 94620504da | |||
| 59cab65fcf | |||
| c7b9e6f9b8 | |||
| 4c86cae7fe | |||
| 6376596e49 | |||
| 91053965be | |||
| 4f9ee17ff9 | |||
| 2461b39fb7 | |||
| ff7634a8ac | |||
| 6c41ae8e8e | |||
| 52803cf57c | |||
| 03f5ba430c | |||
| 91e317a497 | |||
| a0b4d0f348 | |||
| 674f4d5062 | |||
| 5cc2f5b645 | |||
| 3ca8aefad7 | |||
| 1d1b663f55 | |||
| 6a64b09452 | |||
| c2c9e180ea | |||
| fb89183767 | |||
| 45b570b6f7 | |||
| 8e8e5d8da8 | |||
| f59a7872b3 | |||
| 022c6fccf5 | |||
| b750cf1f33 | |||
| 5495d772ea | |||
| 664589c642 | |||
| 6e9c965279 | |||
| 87e9ed8191 | |||
| a5a0aa859a | |||
| 78693685d8 | |||
| f39d4a688a | |||
| 0c30a4ba53 | |||
| 7db8b89b89 | |||
| ec4a9ead74 | |||
| d31f112967 | |||
| 4098c306e2 | |||
| ddee2c08e2 | |||
| e1c02c8bf5 | |||
| 956d21d431 | |||
| 8b3f474bca | |||
| 8eddcfb639 | |||
| 9b79602134 | |||
| 0bab560e89 | |||
| 6458b46437 | |||
| 021343ca02 | |||
| 86a5890c36 | |||
| 04e53f2002 | |||
| 5dccd4b05f | |||
| 9e77899535 | |||
| 4185923d04 | |||
| a19ccb6b49 | |||
| 5ae9d42480 | |||
| f282a3346c | |||
| ac8881a097 | |||
| 41daa83e3e | |||
| 2869460a7f | |||
| 0f168922d8 | |||
| b8b5362ba5 | |||
| b4e0f2c991 | |||
| 201b6d9cfa | |||
| a6ec3e0a68 | |||
| 64578787a0 | |||
| d068388e7f | |||
| 606d18aa6e | |||
| 106bcec7cf | |||
| 179e973b4e | |||
| 2223cd4f30 | |||
| 7db5345f9a | |||
| df659f648e | |||
| d7fd079ec4 | |||
| 800172f93e | |||
| 2fbfdbcb03 | |||
| ae59e75be1 | |||
| f01268ef76 | |||
| 4b9f94c9ae | |||
| 33868eef88 | |||
| 11bd885fb4 | |||
| 0e73168803 | |||
| 1eeb42a88d | |||
| 9ad852558c | |||
| 227a262e01 | |||
| 0abd368ccc | |||
| f757dcab74 | |||
| 28f758e421 | |||
| 6fba81d7c8 | |||
| 8543977a2f | |||
| 7b3da0e2c2 | |||
| b16b37e757 | |||
| 726b087d0d | |||
| c3fb08da59 | |||
| 725a285e7f | |||
| 9bf329bd17 | |||
| 0517a73bfe | |||
| a432f5cc3a | |||
| 72b119d622 | |||
| 18f09ab2ef | |||
| 5985c518f6 | |||
| 0dc4dbe642 | |||
| 0e90426cff | |||
| 900d045cf0 | |||
| e9c4d70126 | |||
| 5c93d3e7c4 | |||
| c372ffa111 | |||
| 8e15ad7ed0 | |||
| a6f3fb19c8 | |||
| 64c6d19ae7 | |||
| c9d9d3d4d3 | |||
| e25b78953c | |||
| 81f0c916f5 | |||
| ef690f6438 | |||
| 11124205e5 | |||
| 6cd0474eca | |||
| bd89710478 | |||
| fc54822b97 | |||
| 13bb6dbe93 | |||
| 8c9a98e3e9 | |||
| 7ce05fb4fc | |||
| 53153b237c | |||
| 478dea6af4 | |||
| e097d38347 | |||
| 6cba14181d | |||
| 76c48a8c4e | |||
| 425b51de08 | |||
| 8e057379ce | |||
| db649ddc96 | |||
| 6aab17d0b3 | |||
| fdfb8e0c34 | |||
| 72aaa18a35 | |||
| 07e1c139ba | |||
| 7df76697e1 | |||
| 743b260813 | |||
| 24187b8413 | |||
| acfd0bf104 | |||
| 59792b3456 | |||
| fb9b0b8166 | |||
| 11d68c0e27 | |||
| 8b287cca0c | |||
| 38145957af | |||
| 69bdac52c7 | |||
| 10d7690ca6 | |||
| b33a999458 | |||
| d3a7ff7e11 | |||
| c1e9fad271 | |||
| 9d668342be | |||
| 62dd54c886 | |||
| 93ed2b3bff | |||
| acb0aa0532 | |||
| ef707e6d5d | |||
| 56413c372f | |||
| a57e919e44 | |||
| 5bdb80db35 | |||
| 3f63997694 | |||
| 022a15a5e9 | |||
| a6c331042a | |||
| 17f5d8f0c2 | |||
| 45b880ef76 | |||
| da34530d98 | |||
| bcb75dac65 | |||
| 74bba5263a | |||
| 7878252692 | |||
| 7af6b31cca | |||
| 11a9766ba0 | |||
| 5175f439a0 | |||
| cbb603818a | |||
| 7020121274 | |||
| 54f7030d68 | |||
| b9e23fcf95 | |||
| 42d0480f77 | |||
| 886eaa4002 | |||
| fd02e9ab22 | |||
| 9fb460c176 | |||
| cbb753ae75 | |||
| b2b54b7c5b | |||
| 29ac95362d | |||
| 9d2d6addb1 | |||
| 7c3f15f79b | |||
| c8e4ec14f0 | |||
| e1793fe276 | |||
| a7bb43278f | |||
| 58b5e99979 | |||
| 915befbb3a | |||
| 4cf3f1bcd5 | |||
| bfeeaeabfb | |||
| 410f2d4e69 | |||
| 474ad5c0fe | |||
| c2b359ceed | |||
| 5af7de61d0 | |||
| 7436bf9e64 | |||
| 588f7fe2fb | |||
| e28dd11b63 | |||
| 907274f9bd |
@@ -7,28 +7,35 @@ before_install:
|
|||||||
- export BUILD_PSP=YES
|
- export BUILD_PSP=YES
|
||||||
- export BUILD_ANDROID=YES
|
- export BUILD_ANDROID=YES
|
||||||
- export BUILD_Qt=YES
|
- export BUILD_Qt=YES
|
||||||
- export BUILD_MAC=YES
|
- export BUILD_MAC=NO
|
||||||
|
# Only building on Mac when not handling pull request
|
||||||
|
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||||
|
export BUILD_MAC=YES;
|
||||||
|
fi
|
||||||
- sudo apt-get update -qq
|
- sudo apt-get update -qq
|
||||||
# Building for PSP here
|
# Building for PSP here
|
||||||
- if [ "$BUILD_PSP" == "YES" ]; then
|
- if [ "$BUILD_PSP" == "YES" ]; then
|
||||||
export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk" &&
|
export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk" &&
|
||||||
export PSPSDK="$PSPDEV/psp/sdk" &&
|
export PSPSDK="$PSPDEV/psp/sdk" &&
|
||||||
export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin" &&
|
export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin" &&
|
||||||
wget -O sdk.lzma http://sourceforge.net/projects/minpspw/files/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma/download;
|
wget -O sdk.lzma http://downloads.sourceforge.net/project/minpspw/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma;
|
||||||
|
fi
|
||||||
|
# Building for Qt here
|
||||||
|
- if [ "$BUILD_Qt" == "YES" ]; then
|
||||||
|
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty universe" &&
|
||||||
|
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty main" &&
|
||||||
|
sudo apt-get -qq update &&
|
||||||
|
sudo apt-get -qq install qt5-qmake qtbase5-dev qtdeclarative5-dev qttools5-dev qtmultimedia5-dev pulseaudio libpulse-dev &&
|
||||||
|
export QMAKE="qmake -qt=qt5";
|
||||||
fi
|
fi
|
||||||
# Building for Android here
|
# Building for Android here
|
||||||
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
||||||
export ANDROID="android-sdk-linux/tools/android" &&
|
export ANDROID="android-sdk-linux/tools/android" &&
|
||||||
if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch jq; fi &&
|
if [ `uname -m` = x86_64 ]; then
|
||||||
|
sudo dpkg --add-architecture i386 && sudo apt-get update &&
|
||||||
|
sudo apt-get install -qq --force-yes libgd2-xpm-dev libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 jq; fi &&
|
||||||
wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv &&
|
wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv &&
|
||||||
wget http://dl.google.com/android/android-sdk_r24.3.3-linux.tgz -nv;
|
wget http://dl.google.com/android/android-sdk_r24.3.4-linux.tgz -nv;
|
||||||
fi
|
|
||||||
# Building for Qt here
|
|
||||||
- if [ "$BUILD_Qt" == "YES" ]; then
|
|
||||||
sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa &&
|
|
||||||
sudo apt-get update -qq &&
|
|
||||||
sudo apt-get install -qq qt5-qmake qtbase5-dev qtdeclarative5-dev qttools5-dev qtmultimedia5-dev pulseaudio libpulse-dev &&
|
|
||||||
export QMAKE="qmake -qt=qt5";
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@@ -37,9 +44,9 @@ install:
|
|||||||
fi
|
fi
|
||||||
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
||||||
tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 &&
|
tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 &&
|
||||||
tar -zxf android-sdk_r24.3.3-linux.tgz &&
|
tar -zxf android-sdk_r24.3.4-linux.tgz &&
|
||||||
$ANDROID list sdk --extended -a &&
|
$ANDROID list sdk --extended -a &&
|
||||||
echo yes | $ANDROID update sdk -a -t tools,platform-tools,build-tools-22.0.1,android-10 --no-ui --force --no-https;
|
echo yes | $ANDROID update sdk -a -t tools,platform-tools,build-tools-23.0.1,android-10 --no-ui --force --no-https;
|
||||||
fi
|
fi
|
||||||
- sudo pip install pyjavaproperties
|
- sudo pip install pyjavaproperties
|
||||||
- sudo pip install github3.py
|
- sudo pip install github3.py
|
||||||
@@ -58,3 +65,4 @@ after_success:
|
|||||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l core.zip -r Wagic-core.zip -b $TRAVIS_BRANCH
|
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l core.zip -r Wagic-core.zip -b $TRAVIS_BRANCH
|
||||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/Android/bin/Wagic-debug.apk -r Wagic-android.apk -b $TRAVIS_BRANCH
|
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/Android/bin/Wagic-debug.apk -r Wagic-android.apk -b $TRAVIS_BRANCH
|
||||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/psprelease.zip -r Wagic-psp.zip -b $TRAVIS_BRANCH
|
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/psprelease.zip -r Wagic-psp.zip -b $TRAVIS_BRANCH
|
||||||
|
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l qt-gui-build/linuxqtrelease.zip -r Wagic-linux-QT.zip -b $TRAVIS_BRANCH
|
||||||
|
|||||||
@@ -1,6 +1,147 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [latest-master] (https://github.com/WagicProject/wagic/tree/latest-master)
|
## [latest-master] (https://github.com/WagicProject/wagic/tree/latest-master)
|
||||||
|
#### 8/3/16
|
||||||
|
- *Merged pull-request:* andAbility on ATokenCreator, Extend AAFlip [#\824] (https://github.com/WagicProject/wagic/pull/824) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/31/16
|
||||||
|
- *Merged pull-request:* Fix Chandra, Flamecaller & Cryptolith Rite [#\818] (https://github.com/WagicProject/wagic/pull/818) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/28/16
|
||||||
|
- *Merged pull-request:* changing some of the logic to the previous fixes, we want to avoid using code that looks for specific card names. [#\800] (https://github.com/WagicProject/wagic/pull/800) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
#### 7/26/16
|
||||||
|
- *Merged pull-request:* granted flashback [#\791] (https://github.com/WagicProject/wagic/pull/791) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/23/16
|
||||||
|
- *Merged pull-request:* Fix Flying vs Moat (multiples of them). Fixes issue #526 [#\783] (https://github.com/WagicProject/wagic/pull/783) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/19/16
|
||||||
|
- *Merged pull-request:* pushing to master [#\770] (https://github.com/WagicProject/wagic/pull/770) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
#### 7/18/16
|
||||||
|
- *Merged pull-request:* Fix Deck Menu layer, Change Main Menu Layout, Fix Crash cdaactive on tokens [#\765] (https://github.com/WagicProject/wagic/pull/765) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/12/16
|
||||||
|
- *Merged pull-request:* Pushing fixes [#\750] (https://github.com/WagicProject/wagic/pull/750) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
- *Merged pull-request:* try to fix failed logic here [#\747] (https://github.com/WagicProject/wagic/pull/747) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/9/16
|
||||||
|
- *Merged pull-request:* pushing to master [#\738] (https://github.com/WagicProject/wagic/pull/738) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
- *Merged pull-request:* Sorted Primitives and Cleanup Tabs [#\736] (https://github.com/WagicProject/wagic/pull/736) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/7/16
|
||||||
|
- *Merged pull-request:* Sorted Primitives and Cleanup Tabs [#\727] (https://github.com/WagicProject/wagic/pull/719) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
- *Merged pull-request:* push to wagicproject [#\725] (https://github.com/WagicProject/wagic/pull/725) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
#### 7/4/16
|
||||||
|
- *Merged pull-request:* Sorted Primitives & Updated Premium Deck Series [#\719] (https://github.com/WagicProject/wagic/pull/719) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
- *Merged pull-request:* Fails but I have no idea why [#\717] (https://github.com/WagicProject/wagic/pull/717) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
- *Merged pull-request:* Updated Sets [#\715] (https://github.com/WagicProject/wagic/pull/715) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/2/16
|
||||||
|
- *Merged pull-request:* Updated Masters, Beginners, Duels and Vault Sets [#\714] (https://github.com/WagicProject/wagic/pull/714) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 7/1/16
|
||||||
|
- *Merged pull-request:* Cleaned and Sorted all Core and Expansion Sets [#\713] (https://github.com/WagicProject/wagic/pull/713) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
- *Merged pull-request:* Soulbond Pair Indicator [#\712] (https://github.com/WagicProject/wagic/pull/712) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 6/30/16
|
||||||
|
- *Merged pull-request:* Sorted Primitives [#\711] (https://github.com/WagicProject/wagic/pull/711) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
- *Merged pull-request:* Add Shackle Ability [#\710] (https://github.com/WagicProject/wagic/pull/710) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
- *Merged pull-request:* Fix Cascade, Crash fix on lastController and some corrections [#\709] (https://github.com/WagicProject/wagic/pull/709) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 6/29/16
|
||||||
|
- *Merged pull-request:* Updated Primitives and Hide Highlight Border [#\707] (https://github.com/WagicProject/wagic/pull/707) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
- *Committed:* Pretty huge patch here(sorry old habits never die :( ) [#\6ee00c1] (https://github.com/WagicProject/wagic/commit/6ee00c138ce374d54cb3ee034575ce440288ca0e) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
#### 6/23/16
|
||||||
|
- *Merged pull-request:* Fix producecolor:color [#\704] (https://github.com/WagicProject/wagic/pull/704) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 6/17/16
|
||||||
|
- *Merged pull-request:* Force Mounting 2 [#\699] (https://github.com/WagicProject/wagic/pull/699) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 6/16/16
|
||||||
|
- *Merged pull-request:* Import Deck Options [#\697] (https://github.com/WagicProject/wagic/pull/697) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 6/11/16
|
||||||
|
- *Merged pull-request:* Refactor & Devotion [#\690] (https://github.com/WagicProject/wagic/pull/690) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 6/9/16
|
||||||
|
- *Closed issue:* Clone goes to graveyard before being able to copy anything [\#546](https://github.com/WagicProject/wagic/issues/546)
|
||||||
|
|
||||||
|
- *Closed issue:* Blinking an aura causes freeze [\#541](https://github.com/WagicProject/wagic/issues/541)
|
||||||
|
|
||||||
|
- *Closed issue:* Profile name at upper left side is not being updated correctly [\#469](https://github.com/WagicProject/wagic/issues/469)
|
||||||
|
|
||||||
|
- *Closed issue:* Giving card C protection from X does not remove cards attached to C which have quality X [\#464](https://github.com/WagicProject/wagic/issues/464)
|
||||||
|
|
||||||
|
- *Closed issue:* (graphical glitch) wood / gold textures [\#461](https://github.com/WagicProject/wagic/issues/461)
|
||||||
|
|
||||||
|
- *Closed issue:* Clone does not get all P/T bonuses [\#448](https://github.com/WagicProject/wagic/issues/448)
|
||||||
|
|
||||||
|
- *Closed issue:* Card "threaten" messes up the GUI [\#473](https://github.com/WagicProject/wagic/issues/473)
|
||||||
|
|
||||||
|
#### 6/7/16
|
||||||
|
- *Closed issue:* Emrakul isn't killed by creatures with deathtouch [\#597](https://github.com/WagicProject/wagic/issues/597)
|
||||||
|
|
||||||
|
#### 6/3/16
|
||||||
|
- *Merged pull-request:* Cost Increaser & Reducer Fix [#\676] (https://github.com/WagicProject/wagic/pull/676) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 5/30/16
|
||||||
|
- *Fixed Bug:* deckstats crash when "unlock cards" is used [#\668] (https://github.com/WagicProject/wagic/issues/668) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
#### 5/26/16
|
||||||
|
- *Closed issue:* Nasty memleak crashing devices and its fix. [#\664] (https://github.com/WagicProject/wagic/issues/664) ([zethfoxster](https://github.com/zethfoxster))
|
||||||
|
|
||||||
|
#### 11/08/15
|
||||||
|
- *Merged pull-request:* produce mana for lands you/opponent could produce [#\658] (https://github.com/WagicProject/wagic/pull/658) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 11/07/15
|
||||||
|
- *Merged pull-request:* Manacost Changes, Anyzone for CDA, PayZero Cost [#\656] (https://github.com/WagicProject/wagic/pull/656) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 10/31/15
|
||||||
|
- *Merged pull-request:* Exile Zone, Altercost and Hand modifier [#\653] (https://github.com/WagicProject/wagic/pull/653) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 10/17/15
|
||||||
|
- *Merged pull-request:* Fix issue #473 #784 [#\646] (https://github.com/WagicProject/wagic/pull/646) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 10/15/15
|
||||||
|
- *Merged pull-request:* Bug Fix: Planeswalker Rule & ABlink return to play ability for Aura cards [#\644] (https://github.com/WagicProject/wagic/pull/644) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 10/14/15
|
||||||
|
- *Merged pull-request:* Fix Legend Rule [#\643] (https://github.com/WagicProject/wagic/pull/643) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 10/12/15
|
||||||
|
- *Merged pull-request:* Fix crash bug, support doubled res texture for background, avatars, menutitle [#\641] (https://github.com/WagicProject/wagic/pull/641) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 10/02/15
|
||||||
|
- *Merged pull-request:* LKI for power, toughness and basic abilities, produceextra ability [#\636] (https://github.com/WagicProject/wagic/pull/636) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 09/29/15
|
||||||
|
- *Merged pull-request:* Fix Recover Cards, Cloner, Copier, and Preliminary support for Madness [#\635] (https://github.com/WagicProject/wagic/pull/635) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 09/22/15
|
||||||
|
- *Merged pull-request:* Auraward, unattach event and statebased action for protection from quality [#\631] (https://github.com/WagicProject/wagic/pull/631) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 09/19/15
|
||||||
|
- *Merged pull-request:* PT Switch like Layer 7e and Token Indicator [#\626] (https://github.com/WagicProject/wagic/pull/626) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 09/18/15
|
||||||
|
- *Merged pull-request:* Token Cloning fix and colored PT [#\624] (https://github.com/WagicProject/wagic/pull/624) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
#### 09/15/15
|
||||||
|
- *Merged pull-request:* CDA and X manacost on stack [\#623] (https://github.com/WagicProject/wagic/pull/623) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
#### 08/12/14
|
#### 08/12/14
|
||||||
- *Merged pull-request:* Fix for guild_keywords Devotion, added some "Chroma" cards [\#606](https://github.com/WagicProject/wagic/pull/606) ([kevlahnota](https://github.com/kevlahnota))
|
- *Merged pull-request:* Fix for guild_keywords Devotion, added some "Chroma" cards [\#606](https://github.com/WagicProject/wagic/pull/606) ([kevlahnota](https://github.com/kevlahnota))
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,13 @@ SDL_AtomicTryLock(SDL_SpinLock *lock)
|
|||||||
: "=&r" (result) : "r" (1), "r" (lock) : "cc", "memory");
|
: "=&r" (result) : "r" (1), "r" (lock) : "cc", "memory");
|
||||||
return (result == 0);
|
return (result == 0);
|
||||||
|
|
||||||
|
#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
||||||
|
int result;
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"lock ; xchgl %0, (%1)\n"
|
||||||
|
: "=r" (result) : "r" (lock), "0" (1) : "cc", "memory");
|
||||||
|
return (result == 0);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* Need CPU instructions for spinlock here! */
|
/* Need CPU instructions for spinlock here! */
|
||||||
__need_spinlock_implementation__
|
__need_spinlock_implementation__
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ HGE_OBJS = src/hge/hgecolor.o src/hge/hgeparticle.o \
|
|||||||
|
|
||||||
CXXFLAGS = -W -Wall -Werror -Wno-unused
|
CXXFLAGS = -W -Wall -Werror -Wno-unused
|
||||||
CXXFLAGS += -DTIXML_USE_STL
|
CXXFLAGS += -DTIXML_USE_STL
|
||||||
|
CXXFLAGS += -Wno-deprecated-declarations -Wno-sign-compare
|
||||||
|
|
||||||
ifdef DEBUG
|
ifdef DEBUG
|
||||||
CXXFLAGS += -ggdb3
|
CXXFLAGS += -ggdb3
|
||||||
@@ -82,7 +83,7 @@ ifeq ($(TARGET_ARCHITECTURE),linux)
|
|||||||
OBJS = $(GENERIC_OBJS) $(LINUX_OBJS)
|
OBJS = $(GENERIC_OBJS) $(LINUX_OBJS)
|
||||||
TARGET_LIB = libjge.a
|
TARGET_LIB = libjge.a
|
||||||
TARGET_HGE = libhgetools.a
|
TARGET_HGE = libhgetools.a
|
||||||
INCDIR = $(shell freetype-config --cflags 2> /dev/null) -I/usr/X11/include -I../Boost -Isrc/zipFS -Iinclude/
|
INCDIR = $(shell freetype-config --cflags 2> /dev/null) -I/usr/X11/include -I/usr/include/boost -Isrc/zipFS -Iinclude/
|
||||||
CXXFLAGS += -DLINUX $(FMOD)
|
CXXFLAGS += -DLINUX $(FMOD)
|
||||||
CXXFLAGS += $(INCDIR)
|
CXXFLAGS += $(INCDIR)
|
||||||
LIBDIR = lib/linux
|
LIBDIR = lib/linux
|
||||||
|
|||||||
@@ -178,8 +178,6 @@ private:
|
|||||||
float mSpacing;
|
float mSpacing;
|
||||||
|
|
||||||
PIXEL_TYPE mColor;
|
PIXEL_TYPE mColor;
|
||||||
int mBlend;
|
|
||||||
|
|
||||||
int mBase;
|
int mBase;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -598,8 +598,6 @@ private:
|
|||||||
GLint prog2_positionLoc;
|
GLint prog2_positionLoc;
|
||||||
GLint prog2_texCoordLoc;
|
GLint prog2_texCoordLoc;
|
||||||
GLint prog2_colorLoc;
|
GLint prog2_colorLoc;
|
||||||
// MVP matrix
|
|
||||||
ESMatrix prog2_mvpMatrix;
|
|
||||||
// Uniform locations
|
// Uniform locations
|
||||||
GLint prog2_mvpLoc;
|
GLint prog2_mvpLoc;
|
||||||
|
|
||||||
@@ -612,13 +610,11 @@ private:
|
|||||||
int mCurrentTextureFormat;
|
int mCurrentTextureFormat;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef PSP
|
||||||
bool mVsync;
|
bool mVsync;
|
||||||
|
|
||||||
int mSwizzle;
|
|
||||||
int mTexCounter;
|
int mTexCounter;
|
||||||
|
#endif
|
||||||
|
int mSwizzle;
|
||||||
|
|
||||||
int mCurrentTextureFilter;
|
int mCurrentTextureFilter;
|
||||||
|
|
||||||
int mCurrTexBlendSrc;
|
int mCurrTexBlendSrc;
|
||||||
|
|||||||
@@ -258,7 +258,9 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int mVolume;
|
int mVolume;
|
||||||
|
#ifndef IOS
|
||||||
int mMusicVolume;
|
int mMusicVolume;
|
||||||
|
#endif
|
||||||
int mSampleVolume;
|
int mSampleVolume;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,11 @@ using namespace std;
|
|||||||
|
|
||||||
#define MID_POINT_THRESHOLD 1.0f
|
#define MID_POINT_THRESHOLD 1.0f
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Position of a single dot on screen.
|
/// Position of a single dot on screen.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
class Point
|
class JPoint
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -34,13 +33,13 @@ public:
|
|||||||
/// @param _y - Y position.
|
/// @param _y - Y position.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
Point(float _x, float _y) { x = _x; y = _y; }
|
JPoint(float _x, float _y) { x = _x; y = _y; }
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Constructor, set position to default (0.0f, 0.0f)
|
/// Constructor, set position to default (0.0f, 0.0f)
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
Point() { x = 0.0f; y = 0.0f; }
|
JPoint() { x = 0.0f; y = 0.0f; }
|
||||||
|
|
||||||
float x; ///< X position.
|
float x; ///< X position.
|
||||||
float y; ///< Y position.
|
float y; ///< Y position.
|
||||||
@@ -95,7 +94,7 @@ public:
|
|||||||
/// @param pt - Control point.
|
/// @param pt - Control point.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
void AddControlPoint(const Point &pt);
|
void AddControlPoint(const JPoint &pt);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Get a control point of the spline.
|
/// Get a control point of the spline.
|
||||||
@@ -105,7 +104,7 @@ public:
|
|||||||
/// @return Control point.
|
/// @return Control point.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
void GetControlPoint(Point &point, int index);
|
void GetControlPoint(JPoint &point, int index);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Work out all pixels of the spline.
|
/// Work out all pixels of the spline.
|
||||||
@@ -128,7 +127,7 @@ public:
|
|||||||
/// @return Position of the desire point.
|
/// @return Position of the desire point.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
void PointOnCurve(Point &out, float t, const Point &p0, const Point &p1, const Point &p2, const Point &p3);
|
void PointOnCurve(JPoint &out, float t, const JPoint &p0, const JPoint &p1, const JPoint &p2, const JPoint &p3);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Get a number of pixels for this spline.
|
/// Get a number of pixels for this spline.
|
||||||
@@ -146,7 +145,7 @@ public:
|
|||||||
/// @return Position of the desire point.
|
/// @return Position of the desire point.
|
||||||
///
|
///
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
void GetPixel(Point &point, int index);
|
void GetPixel(JPoint &point, int index);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
/// Render the spline to screen.
|
/// Render the spline to screen.
|
||||||
@@ -156,8 +155,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
vector<Point> mMidPoints;
|
vector<JPoint> mMidPoints;
|
||||||
vector<Point> mPixels;
|
vector<JPoint> mPixels;
|
||||||
int mCount;
|
int mCount;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -311,9 +311,7 @@ namespace boost
|
|||||||
|
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
#include <QSharedPointer>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/shared_ptr.hpp>
|
|
||||||
|
|
||||||
#include "../include/JLogger.h"
|
#include "../include/JLogger.h"
|
||||||
|
|
||||||
@@ -420,23 +418,25 @@ namespace boost
|
|||||||
virtual void run() = 0;
|
virtual void run() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef boost::shared_ptr<detail::thread_data_base> thread_data_ptr;
|
|
||||||
|
|
||||||
template<typename F>
|
typedef QSharedPointer<detail::thread_data_base> thread_data_ptr;
|
||||||
|
|
||||||
|
template<typename F, typename A1>
|
||||||
class thread_data : public detail::thread_data_base
|
class thread_data : public detail::thread_data_base
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
thread_data(F f_) : f(f_)
|
thread_data(F f_, A1 a1_) : f(f_), a1(a1_)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void run()
|
void run()
|
||||||
{
|
{
|
||||||
f();
|
f(a1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
F f;
|
F f;
|
||||||
|
A1 a1;
|
||||||
|
|
||||||
void operator=(thread_data&);
|
void operator=(thread_data&);
|
||||||
thread_data(thread_data&);
|
thread_data(thread_data&);
|
||||||
@@ -493,7 +493,7 @@ namespace boost
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class F,class A1>
|
template <class F,class A1>
|
||||||
thread(F f, A1 a1) : mThreadInfo(make_thread_info(boost::bind(boost::type<void>(), f, a1)))
|
thread(F f, A1 a1) : mThreadInfo(make_thread_info(f, a1))
|
||||||
{
|
{
|
||||||
mpThread = new threadImpl(mThreadInfo);
|
mpThread = new threadImpl(mThreadInfo);
|
||||||
LOG("Calling start func");
|
LOG("Calling start func");
|
||||||
@@ -510,10 +510,10 @@ namespace boost
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template<typename F>
|
template<typename F, typename A1>
|
||||||
static inline detail::thread_data_ptr make_thread_info(F f)
|
static inline detail::thread_data_ptr make_thread_info(F f, A1 a1)
|
||||||
{
|
{
|
||||||
return detail::thread_data_ptr(new detail::thread_data<F>(f));
|
return detail::thread_data_ptr(new detail::thread_data<F, A1>(f, a1));
|
||||||
}
|
}
|
||||||
|
|
||||||
detail::thread_data_ptr mThreadInfo;
|
detail::thread_data_ptr mThreadInfo;
|
||||||
|
|||||||
@@ -16,9 +16,14 @@ User folder is the only one that is really needed to guarantee both read and wri
|
|||||||
The content that users should not be touching.
|
The content that users should not be touching.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef PSP
|
#if defined (ANDROID)
|
||||||
#include "PrecompiledHeader.h"
|
#include "PrecompiledHeader.h"
|
||||||
#endif //PSP
|
#endif //ANDROID
|
||||||
|
|
||||||
|
#if defined (LINUX)
|
||||||
|
#include "../../projects/mtg/include/PrecompiledHeader.h"
|
||||||
|
#endif //LINUX
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#pragma warning(disable : 4786)
|
#pragma warning(disable : 4786)
|
||||||
@@ -38,6 +43,12 @@ The content that users should not be touching.
|
|||||||
#include <QDir>
|
#include <QDir>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
#ifdef IOS
|
||||||
|
#include <Foundation/Foundation.h>
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
JFileSystem* JFileSystem::mInstance = NULL;
|
JFileSystem* JFileSystem::mInstance = NULL;
|
||||||
|
|
||||||
JZipCache::JZipCache()
|
JZipCache::JZipCache()
|
||||||
|
|||||||
@@ -249,6 +249,7 @@ u32 JGE::BindKey(LocalKeySym sym, JButton button)
|
|||||||
u32 JGE::UnbindKey(LocalKeySym sym, JButton button)
|
u32 JGE::UnbindKey(LocalKeySym sym, JButton button)
|
||||||
{
|
{
|
||||||
for (keycodes_it it = keyBinds.begin(); it != keyBinds.end(); )
|
for (keycodes_it it = keyBinds.begin(); it != keyBinds.end(); )
|
||||||
|
{
|
||||||
if (sym == it->first && button == it->second)
|
if (sym == it->first && button == it->second)
|
||||||
{
|
{
|
||||||
keycodes_it er = it;
|
keycodes_it er = it;
|
||||||
@@ -256,6 +257,7 @@ u32 JGE::UnbindKey(LocalKeySym sym, JButton button)
|
|||||||
keyBinds.erase(er);
|
keyBinds.erase(er);
|
||||||
}
|
}
|
||||||
else ++it;
|
else ++it;
|
||||||
|
}
|
||||||
return keyBinds.size();
|
return keyBinds.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
|
|||||||
element->QueryFloatAttribute("x", &xx);
|
element->QueryFloatAttribute("x", &xx);
|
||||||
element->QueryFloatAttribute("y", &yy);
|
element->QueryFloatAttribute("y", &yy);
|
||||||
|
|
||||||
Point pt(xx*xscale, yy*yscale);
|
JPoint pt(xx*xscale, yy*yscale);
|
||||||
AddControlPoint(pt);
|
AddControlPoint(pt);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,7 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void JSpline::PointOnCurve(Point &out, float t, const Point &p0, const Point &p1, const Point &p2, const Point &p3)
|
void JSpline::PointOnCurve(JPoint &out, float t, const JPoint &p0, const JPoint &p1, const JPoint &p2, const JPoint &p3)
|
||||||
{
|
{
|
||||||
float t2 = t * t;
|
float t2 = t * t;
|
||||||
float t3 = t2 * t;
|
float t3 = t2 * t;
|
||||||
@@ -113,8 +113,8 @@ void JSpline::GeneratePixels()
|
|||||||
x = mMidPoints[1].x;
|
x = mMidPoints[1].x;
|
||||||
y = mMidPoints[1].y;
|
y = mMidPoints[1].y;
|
||||||
|
|
||||||
Point newPt(x, y);
|
JPoint newPt(x, y);
|
||||||
Point extraPt;
|
JPoint extraPt;
|
||||||
|
|
||||||
mPixels.push_back(newPt);
|
mPixels.push_back(newPt);
|
||||||
|
|
||||||
@@ -151,13 +151,13 @@ void JSpline::GeneratePixels()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void JSpline::AddControlPoint(const Point &pt)
|
void JSpline::AddControlPoint(const JPoint &pt)
|
||||||
{
|
{
|
||||||
mMidPoints.push_back(pt);
|
mMidPoints.push_back(pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void JSpline::GetControlPoint(Point &point, int index)
|
void JSpline::GetControlPoint(JPoint &point, int index)
|
||||||
{
|
{
|
||||||
if (index < (int)mMidPoints.size())
|
if (index < (int)mMidPoints.size())
|
||||||
{
|
{
|
||||||
@@ -167,7 +167,7 @@ void JSpline::GetControlPoint(Point &point, int index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void JSpline::GetPixel(Point &point, int index)
|
void JSpline::GetPixel(JPoint &point, int index)
|
||||||
{
|
{
|
||||||
if (index < (int)mPixels.size())
|
if (index < (int)mPixels.size())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,8 +87,6 @@ WagicWrapper::~WagicWrapper()
|
|||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
QCoreApplication a(argc, argv);
|
|
||||||
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
WagicWrapper* wagicCore = new WagicWrapper();
|
WagicWrapper* wagicCore = new WagicWrapper();
|
||||||
MTGCollection()->loadFolder("sets/primitives/");
|
MTGCollection()->loadFolder("sets/primitives/");
|
||||||
|
|||||||
@@ -293,17 +293,18 @@ static const struct { LocalKeySym keysym; JButton keycode; } gDefaultBindings[]
|
|||||||
{ SDLK_DOWN, JGE_BTN_DOWN },
|
{ SDLK_DOWN, JGE_BTN_DOWN },
|
||||||
{ SDLK_LEFT, JGE_BTN_LEFT },
|
{ SDLK_LEFT, JGE_BTN_LEFT },
|
||||||
{ SDLK_RIGHT, JGE_BTN_RIGHT },
|
{ SDLK_RIGHT, JGE_BTN_RIGHT },
|
||||||
{ SDLK_z, JGE_BTN_UP },
|
{ SDLK_w, JGE_BTN_UP },
|
||||||
{ SDLK_d, JGE_BTN_RIGHT },
|
|
||||||
{ SDLK_s, JGE_BTN_DOWN },
|
{ SDLK_s, JGE_BTN_DOWN },
|
||||||
{ SDLK_q, JGE_BTN_LEFT },
|
{ SDLK_a, JGE_BTN_LEFT },
|
||||||
{ SDLK_a, JGE_BTN_PREV },
|
{ SDLK_d, JGE_BTN_RIGHT },
|
||||||
|
{ SDLK_q, JGE_BTN_PREV },
|
||||||
{ SDLK_e, JGE_BTN_NEXT },
|
{ SDLK_e, JGE_BTN_NEXT },
|
||||||
{ SDLK_i, JGE_BTN_CANCEL },
|
{ SDLK_i, JGE_BTN_CANCEL },
|
||||||
{ SDLK_l, JGE_BTN_OK },
|
{ SDLK_l, JGE_BTN_OK },
|
||||||
{ SDLK_SPACE, JGE_BTN_OK },
|
{ SDLK_SPACE, JGE_BTN_OK },
|
||||||
{ SDLK_k, JGE_BTN_SEC },
|
{ SDLK_k, JGE_BTN_SEC },
|
||||||
{ SDLK_j, JGE_BTN_PRI },
|
{ SDLK_j, JGE_BTN_PRI },
|
||||||
|
{ SDLK_b, JGE_BTN_SOUND },
|
||||||
{ SDLK_f, JGE_BTN_FULLSCREEN },
|
{ SDLK_f, JGE_BTN_FULLSCREEN },
|
||||||
|
|
||||||
/* old Qt ones, basically modified to comply with the N900 keyboard
|
/* old Qt ones, basically modified to comply with the N900 keyboard
|
||||||
|
|||||||
@@ -185,9 +185,9 @@ static const int doubleBufferAttributes[] = {
|
|||||||
GLX_RED_SIZE, 1, /* the maximum number of bits per component */
|
GLX_RED_SIZE, 1, /* the maximum number of bits per component */
|
||||||
GLX_GREEN_SIZE, 1,
|
GLX_GREEN_SIZE, 1,
|
||||||
GLX_BLUE_SIZE, 1,
|
GLX_BLUE_SIZE, 1,
|
||||||
None
|
0L /* None */
|
||||||
};
|
};
|
||||||
static Bool WaitForNotify(Display *dpy, XEvent *event, XPointer arg)
|
static int WaitForNotify(Display *dpy, XEvent *event, XPointer arg)
|
||||||
{
|
{
|
||||||
return (event->type == MapNotify) && (event->xmap.window == (Window) arg);
|
return (event->type == MapNotify) && (event->xmap.window == (Window) arg);
|
||||||
}
|
}
|
||||||
@@ -387,13 +387,13 @@ int main(int argc, char* argv[])
|
|||||||
if (XCheckWindowEvent(gXDisplay, gXWindow, KeyPressMask | KeyReleaseMask | StructureNotifyMask, &event))
|
if (XCheckWindowEvent(gXDisplay, gXWindow, KeyPressMask | KeyReleaseMask | StructureNotifyMask, &event))
|
||||||
switch (event.type)
|
switch (event.type)
|
||||||
{
|
{
|
||||||
case KeyPress:
|
case 2: /* KeyPress */
|
||||||
{
|
{
|
||||||
const KeySym sym = XKeycodeToKeysym(gXDisplay, event.xkey.keycode, 1);
|
const KeySym sym = XKeycodeToKeysym(gXDisplay, event.xkey.keycode, 1);
|
||||||
g_engine->HoldKey_NoRepeat(sym);
|
g_engine->HoldKey_NoRepeat(sym);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KeyRelease:
|
case 3: /* KeyRelease */
|
||||||
g_engine->ReleaseKey(XKeycodeToKeysym(gXDisplay, event.xkey.keycode, 1));
|
g_engine->ReleaseKey(XKeycodeToKeysym(gXDisplay, event.xkey.keycode, 1));
|
||||||
break;
|
break;
|
||||||
case ConfigureNotify:
|
case ConfigureNotify:
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ hgeParticleSystem::hgeParticleSystem(hgeParticleSystemInfo *psi)
|
|||||||
{
|
{
|
||||||
//hge=hgeCreate(HGE_VERSION);
|
//hge=hgeCreate(HGE_VERSION);
|
||||||
|
|
||||||
|
if (psi)
|
||||||
memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
||||||
|
|
||||||
vecLocation.x=vecPrevLocation.x=0.0f;
|
vecLocation.x=vecPrevLocation.x=0.0f;
|
||||||
|
|||||||
@@ -10,5 +10,6 @@ void resumeGame();
|
|||||||
@property (nonatomic, retain) id eaglView;
|
@property (nonatomic, retain) id eaglView;
|
||||||
@property (nonatomic, retain) UITextField *inputField;
|
@property (nonatomic, retain) UITextField *inputField;
|
||||||
@property (nonatomic, assign) BOOL bannerIsVisible;
|
@property (nonatomic, assign) BOOL bannerIsVisible;
|
||||||
|
- (void)toggleKeyboardWithState: (NSString *) initialText;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -53,28 +53,28 @@
|
|||||||
|
|
||||||
- (void)viewWillAppear:(BOOL)animated {
|
- (void)viewWillAppear:(BOOL)animated {
|
||||||
NSLog(@"EAGL ViewController - view Will Appear");
|
NSLog(@"EAGL ViewController - view Will Appear");
|
||||||
[self.view resumeGame];
|
[(id)self.view resumeGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)viewWillDisappear:(BOOL)animated
|
- (void)viewWillDisappear:(BOOL)animated
|
||||||
{
|
{
|
||||||
[self.view pauseGame];
|
[(id)self.view pauseGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)pauseGame
|
- (void)pauseGame
|
||||||
{
|
{
|
||||||
[self.view pauseGame];
|
[(id)self.view pauseGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)resumeGame
|
- (void)resumeGame
|
||||||
{
|
{
|
||||||
[self.view resumeGame];
|
[(id)self.view resumeGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)endGame
|
- (void)endGame
|
||||||
{
|
{
|
||||||
[self.view endGame];
|
[(id)self.view endGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidAppear:(BOOL)animated {
|
- (void)viewDidAppear:(BOOL)animated {
|
||||||
|
|||||||
@@ -337,7 +337,7 @@
|
|||||||
|
|
||||||
- (void)applicationWillTerminate:(UIApplication *)application
|
- (void)applicationWillTerminate:(UIApplication *)application
|
||||||
{
|
{
|
||||||
[self.glViewController.view destroyGame];
|
[(id)self.glViewController.view destroyGame];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)initializeKeyboard: (id) initialState
|
- (void)initializeKeyboard: (id) initialState
|
||||||
|
|||||||
@@ -1804,7 +1804,7 @@ static void PNGCustomReadDataFn(png_structp png_ptr, png_bytep data, png_size_t
|
|||||||
{
|
{
|
||||||
png_size_t check;
|
png_size_t check;
|
||||||
|
|
||||||
JFileSystem *fileSystem = (JFileSystem*)png_ptr->io_ptr;
|
JFileSystem *fileSystem = (JFileSystem*)png_get_io_ptr(png_ptr);
|
||||||
|
|
||||||
check = fileSystem->ReadFile(data, length);
|
check = fileSystem->ReadFile(data, length);
|
||||||
|
|
||||||
@@ -1887,7 +1887,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
//fclose(fp);
|
//fclose(fp);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile();
|
||||||
|
|
||||||
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, NULL, NULL);
|
||||||
|
|
||||||
return JGE_ERR_PNG;
|
return JGE_ERR_PNG;
|
||||||
}
|
}
|
||||||
@@ -1896,11 +1896,15 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
|
|
||||||
png_set_sig_bytes(png_ptr, sig_read);
|
png_set_sig_bytes(png_ptr, sig_read);
|
||||||
png_read_info(png_ptr, info_ptr);
|
png_read_info(png_ptr, info_ptr);
|
||||||
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, int_p_NULL, int_p_NULL);
|
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL);
|
||||||
png_set_strip_16(png_ptr);
|
png_set_strip_16(png_ptr);
|
||||||
png_set_packing(png_ptr);
|
png_set_packing(png_ptr);
|
||||||
if (color_type == PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png_ptr);
|
if (color_type == PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png_ptr);
|
||||||
|
#if PNG_LIBPNG_VER >= 10400
|
||||||
|
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr);
|
||||||
|
#else
|
||||||
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) png_set_gray_1_2_4_to_8(png_ptr);
|
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) png_set_gray_1_2_4_to_8(png_ptr);
|
||||||
|
#endif
|
||||||
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
|
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
|
||||||
png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
|
png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
|
||||||
|
|
||||||
@@ -1910,7 +1914,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
//fclose(fp);
|
//fclose(fp);
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile();
|
||||||
|
|
||||||
png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, NULL, NULL);
|
||||||
return JGE_ERR_MALLOC_FAILED;
|
return JGE_ERR_MALLOC_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1932,7 +1936,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
|
|
||||||
for (y = 0; y < (int)height; y++)
|
for (y = 0; y < (int)height; y++)
|
||||||
{
|
{
|
||||||
png_read_row(png_ptr, (BYTE*) line, png_bytep_NULL);
|
png_read_row(png_ptr, (BYTE*) line, NULL);
|
||||||
for (x = 0; x < (int)width; x++)
|
for (x = 0; x < (int)width; x++)
|
||||||
{
|
{
|
||||||
DWORD color32 = line[x];
|
DWORD color32 = line[x];
|
||||||
@@ -1955,7 +1959,7 @@ int JRenderer::LoadPNG(TextureInfo &textureInfo, const char *filename, int mode
|
|||||||
free (line);
|
free (line);
|
||||||
|
|
||||||
png_read_end(png_ptr, info_ptr);
|
png_read_end(png_ptr, info_ptr);
|
||||||
png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
|
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
|
||||||
|
|
||||||
fileSystem->CloseFile();
|
fileSystem->CloseFile();
|
||||||
|
|
||||||
@@ -1998,8 +2002,15 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
GifFileType *GifFileIn = NULL;
|
GifFileType *GifFileIn = NULL;
|
||||||
ColorMapObject *palette;
|
ColorMapObject *palette;
|
||||||
int ExtCode;
|
int ExtCode;
|
||||||
|
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
if ((GifFileIn = DGifOpen(handle, readFunc, NULL)) == NULL)
|
||||||
|
return 1;
|
||||||
|
#else
|
||||||
if ((GifFileIn = DGifOpen(handle, readFunc)) == NULL)
|
if ((GifFileIn = DGifOpen(handle, readFunc)) == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
*bgcolor = 0;
|
*bgcolor = 0;
|
||||||
textureInfo.mWidth = 0;
|
textureInfo.mWidth = 0;
|
||||||
textureInfo.mHeight = 0;
|
textureInfo.mHeight = 0;
|
||||||
@@ -2008,7 +2019,11 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
do {
|
do {
|
||||||
if (DGifGetRecordType(GifFileIn, &RecordType) == GIF_ERROR)
|
if (DGifGetRecordType(GifFileIn, &RecordType) == GIF_ERROR)
|
||||||
{
|
{
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2017,12 +2032,20 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
{
|
{
|
||||||
if (DGifGetImageDesc(GifFileIn) == GIF_ERROR)
|
if (DGifGetImageDesc(GifFileIn) == GIF_ERROR)
|
||||||
{
|
{
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if((palette = (GifFileIn->SColorMap != NULL) ? GifFileIn->SColorMap : GifFileIn->Image.ColorMap) == NULL)
|
if((palette = (GifFileIn->SColorMap != NULL) ? GifFileIn->SColorMap : GifFileIn->Image.ColorMap) == NULL)
|
||||||
{
|
{
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
textureInfo.mWidth = GifFileIn->Image.Width;
|
textureInfo.mWidth = GifFileIn->Image.Width;
|
||||||
@@ -2030,7 +2053,11 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
*bgcolor = gif_color32(GifFileIn->SBackGroundColor);
|
*bgcolor = gif_color32(GifFileIn->SBackGroundColor);
|
||||||
if((LineIn = (GifRowType) malloc(GifFileIn->Image.Width * sizeof(GifPixelType))) == NULL)
|
if((LineIn = (GifRowType) malloc(GifFileIn->Image.Width * sizeof(GifPixelType))) == NULL)
|
||||||
{
|
{
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
textureInfo.mTexWidth = getNextPower2(GifFileIn->Image.Width);
|
textureInfo.mTexWidth = getNextPower2(GifFileIn->Image.Width);
|
||||||
@@ -2040,7 +2067,11 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
if((p32 = (DWORD *)malloc(sizeof(PIXEL_TYPE) * textureInfo.mTexWidth * textureInfo.mTexHeight)) == NULL)
|
if((p32 = (DWORD *)malloc(sizeof(PIXEL_TYPE) * textureInfo.mTexWidth * textureInfo.mTexHeight)) == NULL)
|
||||||
{
|
{
|
||||||
free((void *)LineIn);
|
free((void *)LineIn);
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
DWORD * curr = p32;
|
DWORD * curr = p32;
|
||||||
@@ -2052,7 +2083,11 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
{
|
{
|
||||||
free((void *)p32);
|
free((void *)p32);
|
||||||
free((void *)LineIn);
|
free((void *)LineIn);
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
for (GifWord j = 0; j < GifFileIn->Image.Width; j ++)
|
for (GifWord j = 0; j < GifFileIn->Image.Width; j ++)
|
||||||
@@ -2081,7 +2116,11 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
}
|
}
|
||||||
if(LineIn != NULL)
|
if(LineIn != NULL)
|
||||||
free((void *)LineIn);
|
free((void *)LineIn);
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
while (Extension != NULL) {
|
while (Extension != NULL) {
|
||||||
@@ -2094,7 +2133,11 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
}
|
}
|
||||||
if(LineIn != NULL)
|
if(LineIn != NULL)
|
||||||
free((void *)LineIn);
|
free((void *)LineIn);
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2109,7 +2152,11 @@ int JRenderer::image_readgif(void * handle, TextureInfo &textureInfo, DWORD * bg
|
|||||||
|
|
||||||
if(LineIn != NULL)
|
if(LineIn != NULL)
|
||||||
free((void *)LineIn);
|
free((void *)LineIn);
|
||||||
|
#if GIFLIB_MAJOR >= 5
|
||||||
|
DGifCloseFile(GifFileIn, NULL);
|
||||||
|
#else
|
||||||
DGifCloseFile(GifFileIn);
|
DGifCloseFile(GifFileIn);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,9 +67,7 @@ void JMusic::seekAtTheBegining()
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
JSample::JSample()
|
JSample::JSample()
|
||||||
#ifdef QT_CONFIG
|
#ifdef USE_PHONON
|
||||||
: effect(0)
|
|
||||||
#elif (defined USE_PHONON)
|
|
||||||
: mOutput(0), mMediaObject(0)
|
: mOutput(0), mMediaObject(0)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
@@ -79,11 +77,9 @@ JSample::JSample()
|
|||||||
JSample::~JSample()
|
JSample::~JSample()
|
||||||
{
|
{
|
||||||
#if (defined QT_CONFIG) && (!defined USE_PHONON)
|
#if (defined QT_CONFIG) && (!defined USE_PHONON)
|
||||||
if(effect) {
|
if(effect)
|
||||||
delete effect;
|
delete effect;
|
||||||
effect = 0;
|
#elif USE_PHONON
|
||||||
}
|
|
||||||
#elif (defined USE_PHONON)
|
|
||||||
if(mOutput)
|
if(mOutput)
|
||||||
delete mOutput;
|
delete mOutput;
|
||||||
if(mMediaObject)
|
if(mMediaObject)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#elif LINUX
|
#elif LINUX
|
||||||
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|||||||
@@ -87,13 +87,13 @@ static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned lon
|
|||||||
# define ZCR_SEED2 3141592654UL /* use PI as default pattern */
|
# define ZCR_SEED2 3141592654UL /* use PI as default pattern */
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting)
|
static int crypthead(
|
||||||
const char *passwd; /* password string */
|
const char *passwd, /* password string */
|
||||||
unsigned char *buf; /* where to write header */
|
unsigned char *buf, /* where to write header */
|
||||||
int bufSize;
|
int bufSize,
|
||||||
unsigned long* pkeys;
|
unsigned long* pkeys,
|
||||||
const unsigned long* pcrc_32_tab;
|
const unsigned long* pcrc_32_tab,
|
||||||
unsigned long crcForCrypting;
|
unsigned long crcForCrypting)
|
||||||
{
|
{
|
||||||
int n; /* index in random header */
|
int n; /* index in random header */
|
||||||
int t; /* temporary */
|
int t; /* temporary */
|
||||||
|
|||||||
@@ -65,10 +65,10 @@ int ZCALLBACK ferror_file_func OF((
|
|||||||
voidpf stream));
|
voidpf stream));
|
||||||
|
|
||||||
|
|
||||||
voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)
|
voidpf ZCALLBACK fopen_file_func (
|
||||||
voidpf opaque;
|
voidpf opaque,
|
||||||
const char* filename;
|
const char* filename,
|
||||||
int mode;
|
int mode)
|
||||||
{
|
{
|
||||||
FILE* file = NULL;
|
FILE* file = NULL;
|
||||||
const char* mode_fopen = NULL;
|
const char* mode_fopen = NULL;
|
||||||
@@ -87,11 +87,11 @@ voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)
|
uLong ZCALLBACK fread_file_func (
|
||||||
voidpf opaque;
|
voidpf opaque,
|
||||||
voidpf stream;
|
voidpf stream,
|
||||||
void* buf;
|
void* buf,
|
||||||
uLong size;
|
uLong size)
|
||||||
{
|
{
|
||||||
uLong ret;
|
uLong ret;
|
||||||
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
|
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
|
||||||
@@ -99,31 +99,31 @@ uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size)
|
uLong ZCALLBACK fwrite_file_func (
|
||||||
voidpf opaque;
|
voidpf opaque,
|
||||||
voidpf stream;
|
voidpf stream,
|
||||||
const void* buf;
|
const void* buf,
|
||||||
uLong size;
|
uLong size)
|
||||||
{
|
{
|
||||||
uLong ret;
|
uLong ret;
|
||||||
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
|
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
long ZCALLBACK ftell_file_func (opaque, stream)
|
long ZCALLBACK ftell_file_func (
|
||||||
voidpf opaque;
|
voidpf opaque,
|
||||||
voidpf stream;
|
voidpf stream)
|
||||||
{
|
{
|
||||||
long ret;
|
long ret;
|
||||||
ret = ftell((FILE *)stream);
|
ret = ftell((FILE *)stream);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)
|
long ZCALLBACK fseek_file_func (
|
||||||
voidpf opaque;
|
voidpf opaque,
|
||||||
voidpf stream;
|
voidpf stream,
|
||||||
uLong offset;
|
uLong offset,
|
||||||
int origin;
|
int origin)
|
||||||
{
|
{
|
||||||
int fseek_origin=0;
|
int fseek_origin=0;
|
||||||
long ret;
|
long ret;
|
||||||
@@ -145,26 +145,26 @@ long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZCALLBACK fclose_file_func (opaque, stream)
|
int ZCALLBACK fclose_file_func (
|
||||||
voidpf opaque;
|
voidpf opaque,
|
||||||
voidpf stream;
|
voidpf stream)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
ret = fclose((FILE *)stream);
|
ret = fclose((FILE *)stream);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZCALLBACK ferror_file_func (opaque, stream)
|
int ZCALLBACK ferror_file_func (
|
||||||
voidpf opaque;
|
voidpf opaque,
|
||||||
voidpf stream;
|
voidpf stream)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
ret = ferror((FILE *)stream);
|
ret = ferror((FILE *)stream);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fill_fopen_filefunc (pzlib_filefunc_def)
|
void fill_fopen_filefunc (
|
||||||
zlib_filefunc_def* pzlib_filefunc_def;
|
zlib_filefunc_def* pzlib_filefunc_def)
|
||||||
{
|
{
|
||||||
pzlib_filefunc_def->zopen_file = fopen_file_func;
|
pzlib_filefunc_def->zopen_file = fopen_file_func;
|
||||||
pzlib_filefunc_def->zread_file = fread_file_func;
|
pzlib_filefunc_def->zread_file = fread_file_func;
|
||||||
|
|||||||
@@ -168,10 +168,7 @@ local int unzlocal_getByte OF((
|
|||||||
voidpf filestream,
|
voidpf filestream,
|
||||||
int *pi));
|
int *pi));
|
||||||
|
|
||||||
local int unzlocal_getByte(pzlib_filefunc_def,filestream,pi)
|
local int unzlocal_getByte(const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,int *pi)
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
|
||||||
voidpf filestream;
|
|
||||||
int *pi;
|
|
||||||
{
|
{
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
|
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
|
||||||
@@ -198,10 +195,7 @@ local int unzlocal_getShort OF((
|
|||||||
voidpf filestream,
|
voidpf filestream,
|
||||||
uLong *pX));
|
uLong *pX));
|
||||||
|
|
||||||
local int unzlocal_getShort (pzlib_filefunc_def,filestream,pX)
|
local int unzlocal_getShort (const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,uLong *pX)
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
|
||||||
voidpf filestream;
|
|
||||||
uLong *pX;
|
|
||||||
{
|
{
|
||||||
uLong x ;
|
uLong x ;
|
||||||
int i;
|
int i;
|
||||||
@@ -226,10 +220,7 @@ local int unzlocal_getLong OF((
|
|||||||
voidpf filestream,
|
voidpf filestream,
|
||||||
uLong *pX));
|
uLong *pX));
|
||||||
|
|
||||||
local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX)
|
local int unzlocal_getLong (const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,uLong *pX)
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
|
||||||
voidpf filestream;
|
|
||||||
uLong *pX;
|
|
||||||
{
|
{
|
||||||
uLong x ;
|
uLong x ;
|
||||||
int i;
|
int i;
|
||||||
@@ -259,9 +250,7 @@ local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX)
|
|||||||
|
|
||||||
|
|
||||||
/* My own strcmpi / strcasecmp */
|
/* My own strcmpi / strcasecmp */
|
||||||
local int strcmpcasenosensitive_internal (fileName1,fileName2)
|
local int strcmpcasenosensitive_internal (const char* fileName1,const char* fileName2)
|
||||||
const char* fileName1;
|
|
||||||
const char* fileName2;
|
|
||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@@ -302,10 +291,7 @@ local int strcmpcasenosensitive_internal (fileName1,fileName2)
|
|||||||
(like 1 on Unix, 2 on Windows)
|
(like 1 on Unix, 2 on Windows)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity)
|
extern int ZEXPORT unzStringFileNameCompare (const char* fileName1,const char* fileName2,int iCaseSensitivity)
|
||||||
const char* fileName1;
|
|
||||||
const char* fileName2;
|
|
||||||
int iCaseSensitivity;
|
|
||||||
{
|
{
|
||||||
if (iCaseSensitivity==0)
|
if (iCaseSensitivity==0)
|
||||||
iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
|
iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
|
||||||
@@ -328,9 +314,7 @@ local uLong unzlocal_SearchCentralDir OF((
|
|||||||
const zlib_filefunc_def* pzlib_filefunc_def,
|
const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream));
|
voidpf filestream));
|
||||||
|
|
||||||
local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream)
|
local uLong unzlocal_SearchCentralDir(const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream)
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
|
||||||
voidpf filestream;
|
|
||||||
{
|
{
|
||||||
unsigned char* buf;
|
unsigned char* buf;
|
||||||
uLong uSizeFile;
|
uLong uSizeFile;
|
||||||
@@ -394,9 +378,7 @@ local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream)
|
|||||||
Else, the return value is a unzFile Handle, usable with other function
|
Else, the return value is a unzFile Handle, usable with other function
|
||||||
of this unzip package.
|
of this unzip package.
|
||||||
*/
|
*/
|
||||||
extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def)
|
extern unzFile ZEXPORT unzOpen2 (const char *path, zlib_filefunc_def* pzlib_filefunc_def)
|
||||||
const char *path;
|
|
||||||
zlib_filefunc_def* pzlib_filefunc_def;
|
|
||||||
{
|
{
|
||||||
unz_s us;
|
unz_s us;
|
||||||
unz_s *s;
|
unz_s *s;
|
||||||
@@ -497,8 +479,7 @@ extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern unzFile ZEXPORT unzOpen (path)
|
extern unzFile ZEXPORT unzOpen (const char *path)
|
||||||
const char *path;
|
|
||||||
{
|
{
|
||||||
return unzOpen2(path, NULL);
|
return unzOpen2(path, NULL);
|
||||||
}
|
}
|
||||||
@@ -508,8 +489,7 @@ extern unzFile ZEXPORT unzOpen (path)
|
|||||||
If there is files inside the .Zip opened with unzipOpenCurrentFile (see later),
|
If there is files inside the .Zip opened with unzipOpenCurrentFile (see later),
|
||||||
these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
|
these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
|
||||||
return UNZ_OK if there is no problem. */
|
return UNZ_OK if there is no problem. */
|
||||||
extern int ZEXPORT unzClose (file)
|
extern int ZEXPORT unzClose (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
if (file==NULL)
|
if (file==NULL)
|
||||||
@@ -529,9 +509,7 @@ extern int ZEXPORT unzClose (file)
|
|||||||
Write info about the ZipFile in the *pglobal_info structure.
|
Write info about the ZipFile in the *pglobal_info structure.
|
||||||
No preparation of the structure is needed
|
No preparation of the structure is needed
|
||||||
return UNZ_OK if there is no problem. */
|
return UNZ_OK if there is no problem. */
|
||||||
extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info)
|
extern int ZEXPORT unzGetGlobalInfo (unzFile file,unz_global_info *pglobal_info)
|
||||||
unzFile file;
|
|
||||||
unz_global_info *pglobal_info;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
if (file==NULL)
|
if (file==NULL)
|
||||||
@@ -545,9 +523,7 @@ extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info)
|
|||||||
/*
|
/*
|
||||||
Translate date/time from Dos format to tm_unz (readable more easilty)
|
Translate date/time from Dos format to tm_unz (readable more easilty)
|
||||||
*/
|
*/
|
||||||
local void unzlocal_DosDateToTmuDate (ulDosDate, ptm)
|
local void unzlocal_DosDateToTmuDate (uLong ulDosDate, tm_unz* ptm)
|
||||||
uLong ulDosDate;
|
|
||||||
tm_unz* ptm;
|
|
||||||
{
|
{
|
||||||
uLong uDate;
|
uLong uDate;
|
||||||
uDate = (uLong)(ulDosDate>>16);
|
uDate = (uLong)(ulDosDate>>16);
|
||||||
@@ -574,21 +550,16 @@ local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file,
|
|||||||
char *szComment,
|
char *szComment,
|
||||||
uLong commentBufferSize));
|
uLong commentBufferSize));
|
||||||
|
|
||||||
local int unzlocal_GetCurrentFileInfoInternal (file,
|
local int unzlocal_GetCurrentFileInfoInternal (
|
||||||
pfile_info,
|
unzFile file,
|
||||||
pfile_info_internal,
|
unz_file_info *pfile_info,
|
||||||
szFileName, fileNameBufferSize,
|
unz_file_info_internal *pfile_info_internal,
|
||||||
extraField, extraFieldBufferSize,
|
char *szFileName,
|
||||||
szComment, commentBufferSize)
|
uLong fileNameBufferSize,
|
||||||
unzFile file;
|
void *extraField,
|
||||||
unz_file_info *pfile_info;
|
uLong extraFieldBufferSize,
|
||||||
unz_file_info_internal *pfile_info_internal;
|
char *szComment,
|
||||||
char *szFileName;
|
uLong commentBufferSize)
|
||||||
uLong fileNameBufferSize;
|
|
||||||
void *extraField;
|
|
||||||
uLong extraFieldBufferSize;
|
|
||||||
char *szComment;
|
|
||||||
uLong commentBufferSize;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
unz_file_info file_info;
|
unz_file_info file_info;
|
||||||
@@ -746,19 +717,15 @@ local int unzlocal_GetCurrentFileInfoInternal (file,
|
|||||||
No preparation of the structure is needed
|
No preparation of the structure is needed
|
||||||
return UNZ_OK if there is no problem.
|
return UNZ_OK if there is no problem.
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzGetCurrentFileInfo (file,
|
extern int ZEXPORT unzGetCurrentFileInfo (
|
||||||
pfile_info,
|
unzFile file,
|
||||||
szFileName, fileNameBufferSize,
|
unz_file_info *pfile_info,
|
||||||
extraField, extraFieldBufferSize,
|
char *szFileName,
|
||||||
szComment, commentBufferSize)
|
uLong fileNameBufferSize,
|
||||||
unzFile file;
|
void *extraField,
|
||||||
unz_file_info *pfile_info;
|
uLong extraFieldBufferSize,
|
||||||
char *szFileName;
|
char *szComment,
|
||||||
uLong fileNameBufferSize;
|
uLong commentBufferSize)
|
||||||
void *extraField;
|
|
||||||
uLong extraFieldBufferSize;
|
|
||||||
char *szComment;
|
|
||||||
uLong commentBufferSize;
|
|
||||||
{
|
{
|
||||||
return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL,
|
return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL,
|
||||||
szFileName,fileNameBufferSize,
|
szFileName,fileNameBufferSize,
|
||||||
@@ -770,8 +737,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (file,
|
|||||||
Set the current file of the zipfile to the first file.
|
Set the current file of the zipfile to the first file.
|
||||||
return UNZ_OK if there is no problem
|
return UNZ_OK if there is no problem
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzGoToFirstFile (file)
|
extern int ZEXPORT unzGoToFirstFile (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
int err=UNZ_OK;
|
int err=UNZ_OK;
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
@@ -792,8 +758,7 @@ extern int ZEXPORT unzGoToFirstFile (file)
|
|||||||
return UNZ_OK if there is no problem
|
return UNZ_OK if there is no problem
|
||||||
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
|
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzGoToNextFile (file)
|
extern int ZEXPORT unzGoToNextFile (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
int err;
|
int err;
|
||||||
@@ -826,10 +791,7 @@ extern int ZEXPORT unzGoToNextFile (file)
|
|||||||
UNZ_OK if the file is found. It becomes the current file.
|
UNZ_OK if the file is found. It becomes the current file.
|
||||||
UNZ_END_OF_LIST_OF_FILE if the file is not found
|
UNZ_END_OF_LIST_OF_FILE if the file is not found
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity)
|
extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity)
|
||||||
unzFile file;
|
|
||||||
const char *szFileName;
|
|
||||||
int iCaseSensitivity;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
int err;
|
int err;
|
||||||
@@ -905,9 +867,7 @@ typedef struct unz_file_pos_s
|
|||||||
} unz_file_pos;
|
} unz_file_pos;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int ZEXPORT unzGetFilePos(file, file_pos)
|
extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos)
|
||||||
unzFile file;
|
|
||||||
unz_file_pos* file_pos;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
|
|
||||||
@@ -923,9 +883,7 @@ extern int ZEXPORT unzGetFilePos(file, file_pos)
|
|||||||
return UNZ_OK;
|
return UNZ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT unzGoToFilePos(file, file_pos)
|
extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos*file_pos)
|
||||||
unzFile file;
|
|
||||||
unz_file_pos* file_pos;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
int err;
|
int err;
|
||||||
@@ -959,13 +917,11 @@ extern int ZEXPORT unzGoToFilePos(file, file_pos)
|
|||||||
store in *piSizeVar the size of extra info in local header
|
store in *piSizeVar the size of extra info in local header
|
||||||
(filename and size of extra field data)
|
(filename and size of extra field data)
|
||||||
*/
|
*/
|
||||||
local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar,
|
local int unzlocal_CheckCurrentFileCoherencyHeader (
|
||||||
poffset_local_extrafield,
|
unz_s* s,
|
||||||
psize_local_extrafield)
|
uInt* piSizeVar,
|
||||||
unz_s* s;
|
uLong *poffset_local_extrafield,
|
||||||
uInt* piSizeVar;
|
uInt *psize_local_extrafield)
|
||||||
uLong *poffset_local_extrafield;
|
|
||||||
uInt *psize_local_extrafield;
|
|
||||||
{
|
{
|
||||||
uLong uMagic,uData,uFlags;
|
uLong uMagic,uData,uFlags;
|
||||||
uLong size_filename;
|
uLong size_filename;
|
||||||
@@ -1050,12 +1006,12 @@ local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar,
|
|||||||
Open for reading data the current file in the zipfile.
|
Open for reading data the current file in the zipfile.
|
||||||
If there is no error and the file is opened, the return value is UNZ_OK.
|
If there is no error and the file is opened, the return value is UNZ_OK.
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
|
extern int ZEXPORT unzOpenCurrentFile3 (
|
||||||
unzFile file;
|
unzFile file,
|
||||||
int* method;
|
int* method,
|
||||||
int* level;
|
int* level,
|
||||||
int raw;
|
int raw,
|
||||||
const char* password;
|
const char* password)
|
||||||
{
|
{
|
||||||
int err=UNZ_OK;
|
int err=UNZ_OK;
|
||||||
uInt iSizeVar;
|
uInt iSizeVar;
|
||||||
@@ -1136,7 +1092,7 @@ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
|
|||||||
pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
|
pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
|
||||||
pfile_in_zip_read_info->stream.zfree = (free_func)0;
|
pfile_in_zip_read_info->stream.zfree = (free_func)0;
|
||||||
pfile_in_zip_read_info->stream.opaque = (voidpf)0;
|
pfile_in_zip_read_info->stream.opaque = (voidpf)0;
|
||||||
pfile_in_zip_read_info->stream.next_in = (voidpf)0;
|
pfile_in_zip_read_info->stream.next_in = (Bytef*)0;
|
||||||
pfile_in_zip_read_info->stream.avail_in = 0;
|
pfile_in_zip_read_info->stream.avail_in = 0;
|
||||||
|
|
||||||
err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS);
|
err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS);
|
||||||
@@ -1195,24 +1151,21 @@ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
|
|||||||
return UNZ_OK;
|
return UNZ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT unzOpenCurrentFile (file)
|
extern int ZEXPORT unzOpenCurrentFile (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
|
return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT unzOpenCurrentFilePassword (file, password)
|
extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char* password)
|
||||||
unzFile file;
|
|
||||||
const char* password;
|
|
||||||
{
|
{
|
||||||
return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
|
return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw)
|
extern int ZEXPORT unzOpenCurrentFile2 (
|
||||||
unzFile file;
|
unzFile file,
|
||||||
int* method;
|
int* method,
|
||||||
int* level;
|
int* level,
|
||||||
int raw;
|
int raw)
|
||||||
{
|
{
|
||||||
return unzOpenCurrentFile3(file, method, level, raw, NULL);
|
return unzOpenCurrentFile3(file, method, level, raw, NULL);
|
||||||
}
|
}
|
||||||
@@ -1227,10 +1180,10 @@ extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw)
|
|||||||
return <0 with error code if there is an error
|
return <0 with error code if there is an error
|
||||||
(UNZ_ERRNO for IO error, or zLib error for uncompress error)
|
(UNZ_ERRNO for IO error, or zLib error for uncompress error)
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzReadCurrentFile (file, buf, len)
|
extern int ZEXPORT unzReadCurrentFile(
|
||||||
unzFile file;
|
unzFile file,
|
||||||
voidp buf;
|
voidp buf,
|
||||||
unsigned len;
|
unsigned len)
|
||||||
{
|
{
|
||||||
int err=UNZ_OK;
|
int err=UNZ_OK;
|
||||||
uInt iRead = 0;
|
uInt iRead = 0;
|
||||||
@@ -1388,8 +1341,7 @@ extern int ZEXPORT unzReadCurrentFile (file, buf, len)
|
|||||||
/*
|
/*
|
||||||
Give the current position in uncompressed data
|
Give the current position in uncompressed data
|
||||||
*/
|
*/
|
||||||
extern z_off_t ZEXPORT unztell (file)
|
extern z_off_t ZEXPORT unztell (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
file_in_zip_read_info_s* pfile_in_zip_read_info;
|
file_in_zip_read_info_s* pfile_in_zip_read_info;
|
||||||
@@ -1408,8 +1360,7 @@ extern z_off_t ZEXPORT unztell (file)
|
|||||||
/*
|
/*
|
||||||
return 1 if the end of file was reached, 0 elsewhere
|
return 1 if the end of file was reached, 0 elsewhere
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzeof (file)
|
extern int ZEXPORT unzeof (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
file_in_zip_read_info_s* pfile_in_zip_read_info;
|
file_in_zip_read_info_s* pfile_in_zip_read_info;
|
||||||
@@ -1441,10 +1392,10 @@ extern int ZEXPORT unzeof (file)
|
|||||||
the return value is the number of bytes copied in buf, or (if <0)
|
the return value is the number of bytes copied in buf, or (if <0)
|
||||||
the error code
|
the error code
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzGetLocalExtrafield (file,buf,len)
|
extern int ZEXPORT unzGetLocalExtrafield (
|
||||||
unzFile file;
|
unzFile file,
|
||||||
voidp buf;
|
voidp buf,
|
||||||
unsigned len;
|
unsigned len)
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
file_in_zip_read_info_s* pfile_in_zip_read_info;
|
file_in_zip_read_info_s* pfile_in_zip_read_info;
|
||||||
@@ -1492,8 +1443,7 @@ extern int ZEXPORT unzGetLocalExtrafield (file,buf,len)
|
|||||||
Close the file in zip opened with unzipOpenCurrentFile
|
Close the file in zip opened with unzipOpenCurrentFile
|
||||||
Return UNZ_CRCERROR if all the file was read but the CRC is not good
|
Return UNZ_CRCERROR if all the file was read but the CRC is not good
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzCloseCurrentFile (file)
|
extern int ZEXPORT unzCloseCurrentFile (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
int err=UNZ_OK;
|
int err=UNZ_OK;
|
||||||
|
|
||||||
@@ -1535,12 +1485,11 @@ extern int ZEXPORT unzCloseCurrentFile (file)
|
|||||||
uSizeBuf is the size of the szComment buffer.
|
uSizeBuf is the size of the szComment buffer.
|
||||||
return the number of byte copied or an error code <0
|
return the number of byte copied or an error code <0
|
||||||
*/
|
*/
|
||||||
extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf)
|
extern int ZEXPORT unzGetGlobalComment (
|
||||||
unzFile file;
|
unzFile file,
|
||||||
char *szComment;
|
char *szComment,
|
||||||
uLong uSizeBuf;
|
uLong uSizeBuf)
|
||||||
{
|
{
|
||||||
int err=UNZ_OK;
|
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
uLong uReadThis ;
|
uLong uReadThis ;
|
||||||
if (file==NULL)
|
if (file==NULL)
|
||||||
@@ -1567,8 +1516,7 @@ extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Additions by RX '2004 */
|
/* Additions by RX '2004 */
|
||||||
extern uLong ZEXPORT unzGetOffset (file)
|
extern uLong ZEXPORT unzGetOffset (unzFile file)
|
||||||
unzFile file;
|
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
|
|
||||||
@@ -1583,9 +1531,9 @@ extern uLong ZEXPORT unzGetOffset (file)
|
|||||||
return s->pos_in_central_dir;
|
return s->pos_in_central_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT unzSetOffset (file, pos)
|
extern int ZEXPORT unzSetOffset (
|
||||||
unzFile file;
|
unzFile file,
|
||||||
uLong pos;
|
uLong pos)
|
||||||
{
|
{
|
||||||
unz_s* s;
|
unz_s* s;
|
||||||
int err;
|
int err;
|
||||||
|
|||||||
@@ -172,8 +172,7 @@ local linkedlist_datablock_internal* allocate_new_datablock()
|
|||||||
return ldi;
|
return ldi;
|
||||||
}
|
}
|
||||||
|
|
||||||
local void free_datablock(ldi)
|
local void free_datablock(linkedlist_datablock_internal* ldi)
|
||||||
linkedlist_datablock_internal* ldi;
|
|
||||||
{
|
{
|
||||||
while (ldi!=NULL)
|
while (ldi!=NULL)
|
||||||
{
|
{
|
||||||
@@ -183,24 +182,24 @@ local void free_datablock(ldi)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local void init_linkedlist(ll)
|
local void init_linkedlist(
|
||||||
linkedlist_data* ll;
|
linkedlist_data* ll)
|
||||||
{
|
{
|
||||||
ll->first_block = ll->last_block = NULL;
|
ll->first_block = ll->last_block = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
local void free_linkedlist(ll)
|
local void free_linkedlist(
|
||||||
linkedlist_data* ll;
|
linkedlist_data* ll)
|
||||||
{
|
{
|
||||||
free_datablock(ll->first_block);
|
free_datablock(ll->first_block);
|
||||||
ll->first_block = ll->last_block = NULL;
|
ll->first_block = ll->last_block = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
local int add_data_in_datablock(ll,buf,len)
|
local int add_data_in_datablock(
|
||||||
linkedlist_data* ll;
|
linkedlist_data* ll,
|
||||||
const void* buf;
|
const void* buf,
|
||||||
uLong len;
|
uLong len)
|
||||||
{
|
{
|
||||||
linkedlist_datablock_internal* ldi;
|
linkedlist_datablock_internal* ldi;
|
||||||
const unsigned char* from_copy;
|
const unsigned char* from_copy;
|
||||||
@@ -263,11 +262,11 @@ local int add_data_in_datablock(ll,buf,len)
|
|||||||
|
|
||||||
local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def,
|
local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream, uLong x, int nbByte));
|
voidpf filestream, uLong x, int nbByte));
|
||||||
local int ziplocal_putValue (pzlib_filefunc_def, filestream, x, nbByte)
|
local int ziplocal_putValue (
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream;
|
voidpf filestream,
|
||||||
uLong x;
|
uLong x,
|
||||||
int nbByte;
|
int nbByte)
|
||||||
{
|
{
|
||||||
unsigned char buf[4];
|
unsigned char buf[4];
|
||||||
int n;
|
int n;
|
||||||
@@ -291,10 +290,10 @@ local int ziplocal_putValue (pzlib_filefunc_def, filestream, x, nbByte)
|
|||||||
}
|
}
|
||||||
|
|
||||||
local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte));
|
local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte));
|
||||||
local void ziplocal_putValue_inmemory (dest, x, nbByte)
|
local void ziplocal_putValue_inmemory (
|
||||||
void* dest;
|
void* dest,
|
||||||
uLong x;
|
uLong x,
|
||||||
int nbByte;
|
int nbByte)
|
||||||
{
|
{
|
||||||
unsigned char* buf=(unsigned char*)dest;
|
unsigned char* buf=(unsigned char*)dest;
|
||||||
int n;
|
int n;
|
||||||
@@ -315,9 +314,9 @@ local void ziplocal_putValue_inmemory (dest, x, nbByte)
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
local uLong ziplocal_TmzDateToDosDate(ptm,dosDate)
|
local uLong ziplocal_TmzDateToDosDate(
|
||||||
const tm_zip* ptm;
|
const tm_zip* ptm,
|
||||||
uLong dosDate;
|
uLong dosDate)
|
||||||
{
|
{
|
||||||
uLong year = (uLong)ptm->tm_year;
|
uLong year = (uLong)ptm->tm_year;
|
||||||
if (year>1980)
|
if (year>1980)
|
||||||
@@ -337,10 +336,10 @@ local int ziplocal_getByte OF((
|
|||||||
voidpf filestream,
|
voidpf filestream,
|
||||||
int *pi));
|
int *pi));
|
||||||
|
|
||||||
local int ziplocal_getByte(pzlib_filefunc_def,filestream,pi)
|
local int ziplocal_getByte(
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream;
|
voidpf filestream,
|
||||||
int *pi;
|
int *pi)
|
||||||
{
|
{
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
|
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
|
||||||
@@ -367,10 +366,10 @@ local int ziplocal_getShort OF((
|
|||||||
voidpf filestream,
|
voidpf filestream,
|
||||||
uLong *pX));
|
uLong *pX));
|
||||||
|
|
||||||
local int ziplocal_getShort (pzlib_filefunc_def,filestream,pX)
|
local int ziplocal_getShort (
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream;
|
voidpf filestream,
|
||||||
uLong *pX;
|
uLong *pX)
|
||||||
{
|
{
|
||||||
uLong x ;
|
uLong x ;
|
||||||
int i;
|
int i;
|
||||||
@@ -395,10 +394,10 @@ local int ziplocal_getLong OF((
|
|||||||
voidpf filestream,
|
voidpf filestream,
|
||||||
uLong *pX));
|
uLong *pX));
|
||||||
|
|
||||||
local int ziplocal_getLong (pzlib_filefunc_def,filestream,pX)
|
local int ziplocal_getLong (
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream;
|
voidpf filestream,
|
||||||
uLong *pX;
|
uLong *pX)
|
||||||
{
|
{
|
||||||
uLong x ;
|
uLong x ;
|
||||||
int i;
|
int i;
|
||||||
@@ -437,9 +436,9 @@ local uLong ziplocal_SearchCentralDir OF((
|
|||||||
const zlib_filefunc_def* pzlib_filefunc_def,
|
const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream));
|
voidpf filestream));
|
||||||
|
|
||||||
local uLong ziplocal_SearchCentralDir(pzlib_filefunc_def,filestream)
|
local uLong ziplocal_SearchCentralDir(
|
||||||
const zlib_filefunc_def* pzlib_filefunc_def;
|
const zlib_filefunc_def* pzlib_filefunc_def,
|
||||||
voidpf filestream;
|
voidpf filestream)
|
||||||
{
|
{
|
||||||
unsigned char* buf;
|
unsigned char* buf;
|
||||||
uLong uSizeFile;
|
uLong uSizeFile;
|
||||||
@@ -496,11 +495,11 @@ local uLong ziplocal_SearchCentralDir(pzlib_filefunc_def,filestream)
|
|||||||
#endif /* !NO_ADDFILEINEXISTINGZIP*/
|
#endif /* !NO_ADDFILEINEXISTINGZIP*/
|
||||||
|
|
||||||
/************************************************************/
|
/************************************************************/
|
||||||
extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc_def)
|
extern zipFile ZEXPORT zipOpen2 (
|
||||||
const char *pathname;
|
const char *pathname,
|
||||||
int append;
|
int append,
|
||||||
zipcharpc* globalcomment;
|
zipcharpc* globalcomment,
|
||||||
zlib_filefunc_def* pzlib_filefunc_def;
|
zlib_filefunc_def* pzlib_filefunc_def)
|
||||||
{
|
{
|
||||||
zip_internal ziinit;
|
zip_internal ziinit;
|
||||||
zip_internal* zi;
|
zip_internal* zi;
|
||||||
@@ -615,7 +614,7 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
|
|||||||
|
|
||||||
if (size_comment>0)
|
if (size_comment>0)
|
||||||
{
|
{
|
||||||
ziinit.globalcomment = ALLOC(size_comment+1);
|
ziinit.globalcomment = (char*)ALLOC(size_comment+1);
|
||||||
if (ziinit.globalcomment)
|
if (ziinit.globalcomment)
|
||||||
{
|
{
|
||||||
size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment);
|
size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment);
|
||||||
@@ -680,35 +679,30 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern zipFile ZEXPORT zipOpen (pathname, append)
|
extern zipFile ZEXPORT zipOpen (
|
||||||
const char *pathname;
|
const char *pathname,
|
||||||
int append;
|
int append)
|
||||||
{
|
{
|
||||||
return zipOpen2(pathname,append,NULL,NULL);
|
return zipOpen2(pathname,append,NULL,NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi,
|
extern int ZEXPORT zipOpenNewFileInZip3 (
|
||||||
extrafield_local, size_extrafield_local,
|
zipFile file,
|
||||||
extrafield_global, size_extrafield_global,
|
const char* filename,
|
||||||
comment, method, level, raw,
|
const zip_fileinfo* zipfi,
|
||||||
windowBits, memLevel, strategy,
|
const void* extrafield_local,
|
||||||
password, crcForCrypting)
|
uInt size_extrafield_local,
|
||||||
zipFile file;
|
const void* extrafield_global,
|
||||||
const char* filename;
|
uInt size_extrafield_global,
|
||||||
const zip_fileinfo* zipfi;
|
const char* comment,
|
||||||
const void* extrafield_local;
|
int method,
|
||||||
uInt size_extrafield_local;
|
int level,
|
||||||
const void* extrafield_global;
|
int raw,
|
||||||
uInt size_extrafield_global;
|
int windowBits,
|
||||||
const char* comment;
|
int memLevel,
|
||||||
int method;
|
int strategy,
|
||||||
int level;
|
const char* password,
|
||||||
int raw;
|
uLong crcForCrypting)
|
||||||
int windowBits;
|
|
||||||
int memLevel;
|
|
||||||
int strategy;
|
|
||||||
const char* password;
|
|
||||||
uLong crcForCrypting;
|
|
||||||
{
|
{
|
||||||
zip_internal* zi;
|
zip_internal* zi;
|
||||||
uInt size_filename;
|
uInt size_filename;
|
||||||
@@ -896,21 +890,18 @@ extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT zipOpenNewFileInZip2(file, filename, zipfi,
|
extern int ZEXPORT zipOpenNewFileInZip2(
|
||||||
extrafield_local, size_extrafield_local,
|
zipFile file,
|
||||||
extrafield_global, size_extrafield_global,
|
const char* filename,
|
||||||
comment, method, level, raw)
|
const zip_fileinfo* zipfi,
|
||||||
zipFile file;
|
const void* extrafield_local,
|
||||||
const char* filename;
|
uInt size_extrafield_local,
|
||||||
const zip_fileinfo* zipfi;
|
const void* extrafield_global,
|
||||||
const void* extrafield_local;
|
uInt size_extrafield_global,
|
||||||
uInt size_extrafield_local;
|
const char* comment,
|
||||||
const void* extrafield_global;
|
int method,
|
||||||
uInt size_extrafield_global;
|
int level,
|
||||||
const char* comment;
|
int raw)
|
||||||
int method;
|
|
||||||
int level;
|
|
||||||
int raw;
|
|
||||||
{
|
{
|
||||||
return zipOpenNewFileInZip3 (file, filename, zipfi,
|
return zipOpenNewFileInZip3 (file, filename, zipfi,
|
||||||
extrafield_local, size_extrafield_local,
|
extrafield_local, size_extrafield_local,
|
||||||
@@ -920,20 +911,17 @@ extern int ZEXPORT zipOpenNewFileInZip2(file, filename, zipfi,
|
|||||||
NULL, 0);
|
NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT zipOpenNewFileInZip (file, filename, zipfi,
|
extern int ZEXPORT zipOpenNewFileInZip (
|
||||||
extrafield_local, size_extrafield_local,
|
zipFile file,
|
||||||
extrafield_global, size_extrafield_global,
|
const char* filename,
|
||||||
comment, method, level)
|
const zip_fileinfo* zipfi,
|
||||||
zipFile file;
|
const void* extrafield_local,
|
||||||
const char* filename;
|
uInt size_extrafield_local,
|
||||||
const zip_fileinfo* zipfi;
|
const void* extrafield_global,
|
||||||
const void* extrafield_local;
|
uInt size_extrafield_global,
|
||||||
uInt size_extrafield_local;
|
const char* comment,
|
||||||
const void* extrafield_global;
|
int method,
|
||||||
uInt size_extrafield_global;
|
int level)
|
||||||
const char* comment;
|
|
||||||
int method;
|
|
||||||
int level;
|
|
||||||
{
|
{
|
||||||
return zipOpenNewFileInZip2 (file, filename, zipfi,
|
return zipOpenNewFileInZip2 (file, filename, zipfi,
|
||||||
extrafield_local, size_extrafield_local,
|
extrafield_local, size_extrafield_local,
|
||||||
@@ -941,8 +929,8 @@ extern int ZEXPORT zipOpenNewFileInZip (file, filename, zipfi,
|
|||||||
comment, method, level, 0);
|
comment, method, level, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
local int zipFlushWriteBuffer(zi)
|
local int zipFlushWriteBuffer(
|
||||||
zip_internal* zi;
|
zip_internal* zi)
|
||||||
{
|
{
|
||||||
int err=ZIP_OK;
|
int err=ZIP_OK;
|
||||||
|
|
||||||
@@ -963,10 +951,10 @@ local int zipFlushWriteBuffer(zi)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT zipWriteInFileInZip (file, buf, len)
|
extern int ZEXPORT zipWriteInFileInZip (
|
||||||
zipFile file;
|
zipFile file,
|
||||||
const void* buf;
|
const void* buf,
|
||||||
unsigned len;
|
unsigned len)
|
||||||
{
|
{
|
||||||
zip_internal* zi;
|
zip_internal* zi;
|
||||||
int err=ZIP_OK;
|
int err=ZIP_OK;
|
||||||
@@ -978,9 +966,9 @@ extern int ZEXPORT zipWriteInFileInZip (file, buf, len)
|
|||||||
if (zi->in_opened_file_inzip == 0)
|
if (zi->in_opened_file_inzip == 0)
|
||||||
return ZIP_PARAMERROR;
|
return ZIP_PARAMERROR;
|
||||||
|
|
||||||
zi->ci.stream.next_in = (void*)buf;
|
zi->ci.stream.next_in = (Bytef*)buf;
|
||||||
zi->ci.stream.avail_in = len;
|
zi->ci.stream.avail_in = len;
|
||||||
zi->ci.crc32 = crc32(zi->ci.crc32,buf,len);
|
zi->ci.crc32 = crc32(zi->ci.crc32,(const Bytef*)buf,len);
|
||||||
|
|
||||||
while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
|
while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
|
||||||
{
|
{
|
||||||
@@ -1028,10 +1016,10 @@ extern int ZEXPORT zipWriteInFileInZip (file, buf, len)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32)
|
extern int ZEXPORT zipCloseFileInZipRaw (
|
||||||
zipFile file;
|
zipFile file,
|
||||||
uLong uncompressed_size;
|
uLong uncompressed_size,
|
||||||
uLong crc32;
|
uLong crc32)
|
||||||
{
|
{
|
||||||
zip_internal* zi;
|
zip_internal* zi;
|
||||||
uLong compressed_size;
|
uLong compressed_size;
|
||||||
@@ -1124,15 +1112,15 @@ extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT zipCloseFileInZip (file)
|
extern int ZEXPORT zipCloseFileInZip (
|
||||||
zipFile file;
|
zipFile file)
|
||||||
{
|
{
|
||||||
return zipCloseFileInZipRaw (file,0,0);
|
return zipCloseFileInZipRaw (file,0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int ZEXPORT zipClose (file, global_comment)
|
extern int ZEXPORT zipClose (
|
||||||
zipFile file;
|
zipFile file,
|
||||||
const char* global_comment;
|
const char* global_comment)
|
||||||
{
|
{
|
||||||
zip_internal* zi;
|
zip_internal* zi;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ filesystem * filesystem::pCurrentFS = NULL;
|
|||||||
std::vector<filesystem::pooledBuffer *> filesystem::m_Buffers;
|
std::vector<filesystem::pooledBuffer *> filesystem::m_Buffers;
|
||||||
|
|
||||||
static const int STORED = 0;
|
static const int STORED = 0;
|
||||||
static const int DEFLATED = 8;
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Construction/Destruction
|
// Construction/Destruction
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ It is highly customizable and allows the player to tweak the rules / create thei
|
|||||||
|
|
||||||
Info, downloads, discussions and more at http://wololo.net/forum/index.php
|
Info, downloads, discussions and more at http://wololo.net/forum/index.php
|
||||||
|
|
||||||
-
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ environment:
|
|||||||
|
|
||||||
# scripts that run after cloning repository
|
# scripts that run after cloning repository
|
||||||
install:
|
install:
|
||||||
- ps: (new-object net.webclient).DownloadFile('https://raw.github.com/pypa/pip/master/contrib/get-pip.py', 'C:/get-pip.py')
|
- ps: (new-object net.webclient).DownloadFile('https://bootstrap.pypa.io/get-pip.py', 'C:/get-pip.py')
|
||||||
- "C:/Python27/python.exe C:/get-pip.py"
|
- "C:/Python27/python.exe C:/get-pip.py"
|
||||||
- "C:/Python27/Scripts/pip.exe install pyjavaproperties"
|
- "C:/Python27/Scripts/pip.exe install pyjavaproperties"
|
||||||
- "C:/Python27/Scripts/pip.exe install github3.py"
|
- "C:/Python27/Scripts/pip.exe install github3.py"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
/gen
|
/gen
|
||||||
/bin
|
/bin
|
||||||
|
/libs
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="0192" android:versionName="@string/app_version" package="net.wagic.app">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="0201" android:versionName="@string/app_version" package="net.wagic.app">
|
||||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
|
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
<application android:debuggable="true" android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
|
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
|
||||||
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:label="@string/app_name" android:name="org.libsdl.app.SDLActivity" android:screenOrientation="sensorLandscape">
|
<activity android:debuggable="false" android:configChanges="keyboard|keyboardHidden|orientation" android:label="@string/app_name" android:name="org.libsdl.app.SDLActivity" android:screenOrientation="sensorLandscape">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:name="com.google.ads.AdActivity" android:screenOrientation="sensorLandscape"/>
|
|
||||||
</application>
|
</application>
|
||||||
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10"/>
|
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10"/>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -11,9 +11,8 @@ SDL_PATH := $(JGE_PATH)/Dependencies/SDL
|
|||||||
BOOST_PATH := $(MY_WAGIC_ROOT)/Boost
|
BOOST_PATH := $(MY_WAGIC_ROOT)/Boost
|
||||||
JPEG_PATH := $(JGE_PATH)/Dependencies/libjpeg
|
JPEG_PATH := $(JGE_PATH)/Dependencies/libjpeg
|
||||||
PNG_PATH := $(JGE_PATH)/Dependencies/libpng
|
PNG_PATH := $(JGE_PATH)/Dependencies/libpng
|
||||||
DEBUG ?= DEBUG
|
|
||||||
|
|
||||||
LOCAL_CFLAGS += -DLINUX -DANDROID -DSDL_CONFIG -D_$(DEBUG)
|
LOCAL_CFLAGS += -DLINUX -DANDROID -DSDL_CONFIG
|
||||||
LOCAL_CFLAGS += -D_STLP_USE_SIMPLE_NODE_ALLOC -DTIXML_USE_STL
|
LOCAL_CFLAGS += -D_STLP_USE_SIMPLE_NODE_ALLOC -DTIXML_USE_STL
|
||||||
LOCAL_CFLAGS += -D__arm__ -D_REENTRANT -D_GLIBCXX__PTHREADS
|
LOCAL_CFLAGS += -D__arm__ -D_REENTRANT -D_GLIBCXX__PTHREADS
|
||||||
LOCAL_STATIC_LIBRARIES := libpng libjpeg
|
LOCAL_STATIC_LIBRARIES := libpng libjpeg
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
APP_PROJECT_PATH := $(call my-dir)/..
|
APP_PROJECT_PATH := $(call my-dir)/..
|
||||||
APP_CPPFLAGS += -frtti -fexceptions
|
APP_CPPFLAGS += -frtti -fexceptions
|
||||||
APP_ABI := armeabi armeabi-v7a
|
APP_ABI := armeabi armeabi-v7a
|
||||||
|
#APP_ABI := x86 # mainly for emulators
|
||||||
APP_STL := gnustl_static
|
APP_STL := gnustl_static
|
||||||
APP_MODULES := libpng libjpeg main SDL
|
APP_MODULES := libpng libjpeg main SDL
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 60 KiB |
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Wagic</string>
|
<string name="app_name">Wagic</string>
|
||||||
<string name="app_version">0.19.2</string>
|
<string name="app_version">0.20.1</string>
|
||||||
<string name="info_text">Wagic v0.19.2\\nAll Rights Reserved.</string>
|
<string name="info_text">Wagic v0.20.1\\nAll Rights Reserved.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -0,0 +1,275 @@
|
|||||||
|
package net.wagic.utils;
|
||||||
|
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
public class DeckImporter
|
||||||
|
{
|
||||||
|
public static String importDeck( File f, String mypath, String activePath )
|
||||||
|
{
|
||||||
|
String message = "";
|
||||||
|
String deck = "";
|
||||||
|
String deckname = "";
|
||||||
|
String prefix = "#SB:";
|
||||||
|
int cardcount = 0;
|
||||||
|
if(f.exists() && !f.isDirectory())
|
||||||
|
{
|
||||||
|
deckname = f.getName();
|
||||||
|
int pos = deckname.lastIndexOf(".");
|
||||||
|
if (pos > 0)
|
||||||
|
{
|
||||||
|
deckname = deckname.substring(0, pos);
|
||||||
|
}
|
||||||
|
deck += "#NAME:"+deckname+"\n";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Scanner scanner = new Scanner(new File(mypath));
|
||||||
|
if (scanner.hasNext())
|
||||||
|
{
|
||||||
|
while (scanner.hasNext())
|
||||||
|
{
|
||||||
|
String line = scanner.nextLine();
|
||||||
|
line = line.trim();
|
||||||
|
if (!line.equals("") && cardcount < 61) // don't write out blank lines
|
||||||
|
{
|
||||||
|
String[] slines = line.split("\\s+");
|
||||||
|
String arranged = "";
|
||||||
|
for (int idx = 1; idx < slines.length; idx++)
|
||||||
|
{
|
||||||
|
arranged += slines[idx] + " ";
|
||||||
|
}
|
||||||
|
if ((isNumeric(slines[0])) && arranged != null)
|
||||||
|
{
|
||||||
|
if (slines[1] != null && slines[1].startsWith("["))
|
||||||
|
{
|
||||||
|
arranged = arranged.substring(5);
|
||||||
|
slines[1] = slines[1].replaceAll("\\[", "").replaceAll("\\]", "");
|
||||||
|
deck += arranged + " (" + renameSet(slines[1]) + ") * " + slines[0] + "\n";
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
deck += arranged + "(*) * " + slines[0] + "\n";
|
||||||
|
}
|
||||||
|
cardcount += Integer.parseInt(slines[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
File profile = new File(activePath + "/Res/settings/options.txt");
|
||||||
|
if (profile.exists() && !profile.isDirectory())
|
||||||
|
{
|
||||||
|
String profileName = getActiveProfile(profile);
|
||||||
|
if (profileName != "Missing!")
|
||||||
|
{
|
||||||
|
File rootProfiles = new File(activePath + "/Res/profiles/" + profileName);
|
||||||
|
if (rootProfiles.exists() && rootProfiles.isDirectory())
|
||||||
|
{
|
||||||
|
//save deck
|
||||||
|
int countdeck = 1;
|
||||||
|
File[] files = rootProfiles.listFiles();
|
||||||
|
for (int i = 0; i < files.length; i++)
|
||||||
|
{//check if there is available deck...
|
||||||
|
if (files[i].getName().startsWith("deck"))
|
||||||
|
countdeck++;
|
||||||
|
}
|
||||||
|
File toSave = new File(rootProfiles + "/deck" + countdeck + ".txt");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
FileOutputStream fop = new FileOutputStream(toSave);
|
||||||
|
|
||||||
|
// if file doesn't exists, then create it
|
||||||
|
if (!toSave.exists())
|
||||||
|
{
|
||||||
|
toSave.createNewFile();
|
||||||
|
}
|
||||||
|
// get the content in bytes
|
||||||
|
byte[] contentInBytes = deck.getBytes();
|
||||||
|
fop.write(contentInBytes);
|
||||||
|
fop.flush();
|
||||||
|
fop.close();
|
||||||
|
message = "Import Deck Success!\n" + cardcount + " total cards in this deck\n\n" + deck;
|
||||||
|
} catch (IOException e)
|
||||||
|
{
|
||||||
|
message = e.getMessage();
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
message = "Missing Folder!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
message = "Invalid Profile!";
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
message = "No errors, and file EMPTY";
|
||||||
|
}
|
||||||
|
} catch (IOException e)
|
||||||
|
{
|
||||||
|
message = e.getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isNumeric(String input)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Integer.parseInt(input);
|
||||||
|
}
|
||||||
|
catch(NumberFormatException ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getActiveProfile(File mypath)
|
||||||
|
{
|
||||||
|
String name = "";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Scanner scanner = new Scanner(new File(mypath.toString()));
|
||||||
|
if (scanner.hasNext())
|
||||||
|
{
|
||||||
|
String line = scanner.nextLine();
|
||||||
|
name = line.substring(8);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "Missing!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(IOException e)
|
||||||
|
{
|
||||||
|
return "Missing!";
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String renameSet(String set)
|
||||||
|
{
|
||||||
|
if (set == "")
|
||||||
|
return "*";
|
||||||
|
if (set == "AL")
|
||||||
|
return "ALL";
|
||||||
|
if (set == "AQ")
|
||||||
|
return "ATQ";
|
||||||
|
if (set == "AP")
|
||||||
|
return "APC";
|
||||||
|
if (set == "AN")
|
||||||
|
return "ARN";
|
||||||
|
if (set == "AE")
|
||||||
|
return "ARC";
|
||||||
|
if (set == "BR")
|
||||||
|
return "BRB";
|
||||||
|
if (set == "BD")
|
||||||
|
return "BTD";
|
||||||
|
if (set == "CH")
|
||||||
|
return "CHR";
|
||||||
|
if (set == "6E")
|
||||||
|
return "6ED";
|
||||||
|
if (set == "CS")
|
||||||
|
return "CSP";
|
||||||
|
if (set == "DS")
|
||||||
|
return "DST";
|
||||||
|
if (set == "D2")
|
||||||
|
return "DD2";
|
||||||
|
if (set == "8E")
|
||||||
|
return "8ED";
|
||||||
|
if (set == "EX")
|
||||||
|
return "EXO";
|
||||||
|
if (set == "FE")
|
||||||
|
return "FEM";
|
||||||
|
if (set == "FD")
|
||||||
|
return "5DN";
|
||||||
|
if (set == "5E")
|
||||||
|
return "5ED";
|
||||||
|
if (set == "4E")
|
||||||
|
return "4ED";
|
||||||
|
if (set == "GP")
|
||||||
|
return "GPT";
|
||||||
|
if (set == "HL")
|
||||||
|
return "HML";
|
||||||
|
if (set == "IA")
|
||||||
|
return "ICE";
|
||||||
|
if (set == "IN")
|
||||||
|
return "INV";
|
||||||
|
if (set == "JU")
|
||||||
|
return "JUD";
|
||||||
|
if (set == "LG")
|
||||||
|
return "LEG";
|
||||||
|
if (set == "LE")
|
||||||
|
return "LGN";
|
||||||
|
if (set == "A")
|
||||||
|
return "LEA";
|
||||||
|
if (set == "B")
|
||||||
|
return "LEB";
|
||||||
|
if (set == "MM")
|
||||||
|
return "MMQ";
|
||||||
|
if (set == "MI")
|
||||||
|
return "MIR";
|
||||||
|
if (set == "MR")
|
||||||
|
return "MRD";
|
||||||
|
if (set == "NE")
|
||||||
|
return "NEM";
|
||||||
|
if (set == "9E")
|
||||||
|
return "9ED";
|
||||||
|
if (set == "OD")
|
||||||
|
return "ODY";
|
||||||
|
if (set == "ON")
|
||||||
|
return "ONS";
|
||||||
|
if (set == "PS")
|
||||||
|
return "PLS";
|
||||||
|
if (set == "PT")
|
||||||
|
return "POR";
|
||||||
|
if (set == "P2")
|
||||||
|
return "P02";
|
||||||
|
if (set == "P3")
|
||||||
|
return "PTK";
|
||||||
|
if (set == "PR")
|
||||||
|
return "PPR";
|
||||||
|
if (set == "PY")
|
||||||
|
return "PCY";
|
||||||
|
if (set == "R")
|
||||||
|
return "RV";
|
||||||
|
if (set == "SC")
|
||||||
|
return "SCG";
|
||||||
|
if (set == "7E")
|
||||||
|
return "7ED";
|
||||||
|
if (set == "ST")
|
||||||
|
return "S99";
|
||||||
|
if (set == "ST2K")
|
||||||
|
return "S00";
|
||||||
|
if (set == "SH")
|
||||||
|
return "STH";
|
||||||
|
if (set == "TE")
|
||||||
|
return "TMP";
|
||||||
|
if (set == "DK")
|
||||||
|
return "DRK";
|
||||||
|
if (set == "TO")
|
||||||
|
return "TOR";
|
||||||
|
if (set == "UG")
|
||||||
|
return "UGL";
|
||||||
|
if (set == "U")
|
||||||
|
return "2ED";
|
||||||
|
if (set == "UD")
|
||||||
|
return "UDS";
|
||||||
|
if (set == "UL")
|
||||||
|
return "ULG";
|
||||||
|
if (set == "US")
|
||||||
|
return "USG";
|
||||||
|
if (set == "VI")
|
||||||
|
return "VIS";
|
||||||
|
if (set == "WL")
|
||||||
|
return "WTH";
|
||||||
|
else
|
||||||
|
return set;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,11 +5,16 @@ import java.io.FileNotFoundException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import android.os.Build;
|
||||||
|
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
public class StorageOptions
|
public class StorageOptions
|
||||||
{
|
{
|
||||||
|
private static final String TAG = StorageOptions.class.getCanonicalName();
|
||||||
private static ArrayList<String> mMounts = new ArrayList<String>();
|
private static ArrayList<String> mMounts = new ArrayList<String>();
|
||||||
private static ArrayList<String> mVold = new ArrayList<String>();
|
private static ArrayList<String> mVold = new ArrayList<String>();
|
||||||
|
|
||||||
@@ -21,8 +26,14 @@ public class StorageOptions
|
|||||||
public static void determineStorageOptions()
|
public static void determineStorageOptions()
|
||||||
{
|
{
|
||||||
initializeMountPoints();
|
initializeMountPoints();
|
||||||
|
if (findForcemount()){
|
||||||
|
readMountsFileTest();
|
||||||
|
}
|
||||||
readMountsFile();
|
readMountsFile();
|
||||||
readVoldFile();
|
readVoldFile();
|
||||||
|
if (findForcemount()){
|
||||||
|
removeDuplicates(mMounts);
|
||||||
|
}
|
||||||
compareMountsWithVold();
|
compareMountsWithVold();
|
||||||
testAndCleanMountsList();
|
testAndCleanMountsList();
|
||||||
setProperties();
|
setProperties();
|
||||||
@@ -40,6 +51,42 @@ public class StorageOptions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void readMountsFileTest()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Test mountpoints storage -kevlahnota
|
||||||
|
*/
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Scanner scanner = new Scanner(new File("/proc/mounts"));
|
||||||
|
while (scanner.hasNext())
|
||||||
|
{
|
||||||
|
String line = scanner.nextLine();
|
||||||
|
if (line.startsWith("/"))
|
||||||
|
{
|
||||||
|
String[] lineElements = line.split("\\s+");
|
||||||
|
if ("vfat".equals(lineElements[2]) || "fuse".equals(lineElements[2]) || "sdcardfs".equals(lineElements[2]))
|
||||||
|
{
|
||||||
|
File mountPoint = new File(lineElements[1]);
|
||||||
|
if (!lineElements[1].equals(defaultMountPoint))
|
||||||
|
if (mountPoint.isDirectory() && mountPoint.canRead())
|
||||||
|
mMounts.add(lineElements[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException fnfex)
|
||||||
|
{
|
||||||
|
// if proc/mount doesn't exist we just use
|
||||||
|
Log.i(TAG, fnfex.getMessage() + ": assuming " + defaultMountPoint + " is the only mount point");
|
||||||
|
mMounts.add(defaultMountPoint);
|
||||||
|
} catch (Exception e)
|
||||||
|
{
|
||||||
|
Log.e(TAG, e.getMessage() + ": unknown exception while reading mounts file");
|
||||||
|
mMounts.add(defaultMountPoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void readMountsFile()
|
private static void readMountsFile()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@@ -65,11 +112,11 @@ public class StorageOptions
|
|||||||
} catch (FileNotFoundException fnfex)
|
} catch (FileNotFoundException fnfex)
|
||||||
{
|
{
|
||||||
// if proc/mount doesn't exist we just use
|
// if proc/mount doesn't exist we just use
|
||||||
Log.i(StorageOptions.class.getCanonicalName(), fnfex.getMessage() + ": assuming " + defaultMountPoint + " is the only mount point");
|
Log.i(TAG, fnfex.getMessage() + ": assuming " + defaultMountPoint + " is the only mount point");
|
||||||
mMounts.add(defaultMountPoint);
|
mMounts.add(defaultMountPoint);
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.e(StorageOptions.class.getCanonicalName(), e.getMessage() + ": unknown exception while reading mounts file");
|
Log.e(TAG, e.getMessage() + ": unknown exception while reading mounts file");
|
||||||
mMounts.add(defaultMountPoint);
|
mMounts.add(defaultMountPoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,15 +145,32 @@ public class StorageOptions
|
|||||||
} catch (FileNotFoundException fnfex)
|
} catch (FileNotFoundException fnfex)
|
||||||
{
|
{
|
||||||
// if vold.fstab doesn't exist we use the value gathered from the Environment
|
// if vold.fstab doesn't exist we use the value gathered from the Environment
|
||||||
Log.i(StorageOptions.class.getCanonicalName(), fnfex.getMessage() + ": assuming " + defaultMountPoint + " is the only mount point");
|
Log.i(TAG, fnfex.getMessage() + ": assuming " + defaultMountPoint + " is the only mount point");
|
||||||
mMounts.add(defaultMountPoint);
|
mMounts.add(defaultMountPoint);
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.e(StorageOptions.class.getCanonicalName(), e.getMessage() + ": unknown exception while reading mounts file");
|
Log.e(TAG, e.getMessage() + ": unknown exception while reading vold.fstab file");
|
||||||
mMounts.add(defaultMountPoint);
|
mMounts.add(defaultMountPoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static ArrayList<String> removeDuplicates(ArrayList<String> list)
|
||||||
|
{
|
||||||
|
ArrayList<String> result = new ArrayList<String>();
|
||||||
|
|
||||||
|
HashSet<String> set = new HashSet<String>();
|
||||||
|
|
||||||
|
for (String item : list)
|
||||||
|
{
|
||||||
|
if (!set.contains(item))
|
||||||
|
{
|
||||||
|
result.add(item);
|
||||||
|
set.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static void compareMountsWithVold()
|
private static void compareMountsWithVold()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@@ -115,12 +179,15 @@ public class StorageOptions
|
|||||||
* Compare the two lists together and remove items that are not in both lists.
|
* Compare the two lists together and remove items that are not in both lists.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (mVold.size() > 0)
|
||||||
|
{
|
||||||
for (int i = 0; i < mMounts.size(); i++)
|
for (int i = 0; i < mMounts.size(); i++)
|
||||||
{
|
{
|
||||||
String mount = mMounts.get(i);
|
String mount = mMounts.get(i);
|
||||||
if (!mVold.contains(mount))
|
if (!mVold.contains(mount))
|
||||||
mMounts.remove(i--);
|
mMounts.remove(i--);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// don't need this anymore, clear the vold list to reduce memory
|
// don't need this anymore, clear the vold list to reduce memory
|
||||||
// use and to prepare it for the next time it's needed.
|
// use and to prepare it for the next time it's needed.
|
||||||
@@ -132,18 +199,60 @@ public class StorageOptions
|
|||||||
/*
|
/*
|
||||||
* Now that we have a cleaned list of mount paths Test each one to make sure it's a valid and available path. If it is not, remove it from the list.
|
* Now that we have a cleaned list of mount paths Test each one to make sure it's a valid and available path. If it is not, remove it from the list.
|
||||||
*/
|
*/
|
||||||
|
int t = 0;
|
||||||
for (int i = 0; i < mMounts.size(); i++)
|
for (int i = 0; i < mMounts.size(); i++)
|
||||||
{
|
{
|
||||||
|
t++;
|
||||||
String mount = mMounts.get(i);
|
String mount = mMounts.get(i);
|
||||||
File root = new File(mount);
|
File root = new File(mount);
|
||||||
if (!root.exists() || !root.isDirectory() || !root.canWrite())
|
if (!root.exists() || !root.isDirectory() || !root.canWrite())
|
||||||
mMounts.remove(i--);
|
mMounts.remove(i--);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (t == 0 && Build.VERSION.SDK_INT >= 16 && findForcemount())
|
||||||
|
{
|
||||||
|
//if none is found lets force it for Jellybean and above...
|
||||||
|
if (System.getenv("EXTERNAL_STORAGE") != null)
|
||||||
|
{
|
||||||
|
File root = new File(System.getenv("EXTERNAL_STORAGE"));
|
||||||
|
if (root.exists() && root.isDirectory() && root.canWrite())
|
||||||
|
{
|
||||||
|
if(!isRooted())
|
||||||
|
{
|
||||||
|
File folder = new File(System.getenv("EXTERNAL_STORAGE")+"/Android/data/net.wagic.app/files");
|
||||||
|
folder.mkdirs();
|
||||||
|
mMounts.add(folder.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mMounts.add(System.getenv("EXTERNAL_STORAGE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (System.getenv("SECONDARY_STORAGE") != null)
|
||||||
|
{
|
||||||
|
File root = new File(System.getenv("SECONDARY_STORAGE"));
|
||||||
|
if (root.exists() && root.isDirectory() && root.canWrite())
|
||||||
|
{
|
||||||
|
if(!isRooted())
|
||||||
|
{
|
||||||
|
File folder = new File(System.getenv("SECONDARY_STORAGE")+"/Android/data/net.wagic.app/files");
|
||||||
|
folder.mkdirs();
|
||||||
|
mMounts.add(folder.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mMounts.add(System.getenv("SECONDARY_STORAGE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setProperties()
|
private static void setProperties()
|
||||||
{
|
{
|
||||||
|
Log.d(TAG, "setProperties()");
|
||||||
/*
|
/*
|
||||||
* At this point all the paths in the list should be valid. Build the public properties.
|
* At this point all the paths in the list should be valid. Build the public properties.
|
||||||
*/
|
*/
|
||||||
@@ -151,13 +260,28 @@ public class StorageOptions
|
|||||||
ArrayList<String> mLabels = new ArrayList<String>();
|
ArrayList<String> mLabels = new ArrayList<String>();
|
||||||
|
|
||||||
int i = 1;
|
int i = 1;
|
||||||
|
if(findForcemount()){
|
||||||
for (String path : mMounts)
|
for (String path : mMounts)
|
||||||
{ // TODO: /mnt/sdcard is assumed to always mean internal storage. Use this comparison until there is a better way to do this
|
{//with forcemount menu
|
||||||
|
if ("/mnt/sdcard".equalsIgnoreCase(path) || "/storage/sdcard0".equalsIgnoreCase(path))
|
||||||
|
mLabels.add("Internal SD " + "[" + path + "]");
|
||||||
|
else if (path.contains("emulated"))
|
||||||
|
mLabels.add("Emulated SD " + " [" + path + "]");
|
||||||
|
else
|
||||||
|
mLabels.add("External SD " + " [" + path + "]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (String path : mMounts)
|
||||||
|
{
|
||||||
|
// TODO: /mnt/sdcard is assumed to always mean internal storage. Use this comparison until there is a better way to do this
|
||||||
if ("/mnt/sdcard".equalsIgnoreCase(path))
|
if ("/mnt/sdcard".equalsIgnoreCase(path))
|
||||||
mLabels.add("Built-in Storage");
|
mLabels.add("Built-in Storage");
|
||||||
else
|
else
|
||||||
mLabels.add("External SD Card " + i++);
|
mLabels.add("External SD Card " + i++);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
labels = new String[mLabels.size()];
|
labels = new String[mLabels.size()];
|
||||||
mLabels.toArray(labels);
|
mLabels.toArray(labels);
|
||||||
@@ -171,4 +295,119 @@ public class StorageOptions
|
|||||||
// use and to prepare it for the next time it's needed.
|
// use and to prepare it for the next time it's needed.
|
||||||
mMounts.clear();
|
mMounts.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isExternalStorageReadOnly() {
|
||||||
|
String extStorageState = Environment.getExternalStorageState();
|
||||||
|
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isExternalStorageAvailable() {
|
||||||
|
String extStorageState = Environment.getExternalStorageState();
|
||||||
|
if (Environment.MEDIA_MOUNTED.equals(extStorageState)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the device is rooted.
|
||||||
|
*
|
||||||
|
* @return <code>true</code> if the device is rooted, <code>false</code> otherwise.
|
||||||
|
*/
|
||||||
|
public static boolean isRooted()
|
||||||
|
{
|
||||||
|
// get from build info
|
||||||
|
String buildTags = android.os.Build.TAGS;
|
||||||
|
if (buildTags != null && buildTags.contains("test-keys"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if /system/app/Superuser.apk is present
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File file = new File("/system/app/Superuser.apk");
|
||||||
|
if (file.exists())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e1)
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File file = new File("/system/app/Superuser/Superuser.apk");
|
||||||
|
if (file.exists())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e1)
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
//SuperSU
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File file = new File("/system/app/SuperSU.apk");
|
||||||
|
if (file.exists())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e1)
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File file = new File("/system/app/SuperSU/SuperSU.apk");
|
||||||
|
if (file.exists())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e1)
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
// try executing commands
|
||||||
|
return canExecuteCommand("/system/xbin/which su")
|
||||||
|
|| canExecuteCommand("/system/bin/which su") || canExecuteCommand("which su");
|
||||||
|
}
|
||||||
|
|
||||||
|
// executes a command on the system
|
||||||
|
private static boolean canExecuteCommand(String command)
|
||||||
|
{
|
||||||
|
boolean executedSuccesfully;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Runtime.getRuntime().exec(command);
|
||||||
|
executedSuccesfully = true;
|
||||||
|
} catch (Exception e)
|
||||||
|
{
|
||||||
|
executedSuccesfully = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return executedSuccesfully;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean findForcemount()
|
||||||
|
{
|
||||||
|
Log.d(TAG, "findForcemount()");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File file = new File(System.getenv("EXTERNAL_STORAGE") + "/forcemount");
|
||||||
|
if (file.exists())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e)
|
||||||
|
{
|
||||||
|
Log.w(TAG, e.getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,18 @@
|
|||||||
package org.libsdl.app;
|
package org.libsdl.app;
|
||||||
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
import javax.microedition.khronos.egl.EGL10;
|
import javax.microedition.khronos.egl.EGL10;
|
||||||
import javax.microedition.khronos.egl.EGLConfig;
|
import javax.microedition.khronos.egl.EGLConfig;
|
||||||
@@ -16,6 +22,7 @@ import javax.microedition.khronos.egl.EGLSurface;
|
|||||||
|
|
||||||
import net.wagic.app.R;
|
import net.wagic.app.R;
|
||||||
import net.wagic.utils.StorageOptions;
|
import net.wagic.utils.StorageOptions;
|
||||||
|
import net.wagic.utils.DeckImporter;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
@@ -59,9 +66,11 @@ import android.widget.FrameLayout.LayoutParams;
|
|||||||
*/
|
*/
|
||||||
public class SDLActivity extends Activity implements OnKeyListener
|
public class SDLActivity extends Activity implements OnKeyListener
|
||||||
{
|
{
|
||||||
|
private static final String TAG = SDLActivity.class.getCanonicalName();
|
||||||
|
|
||||||
// TAG used for debugging in DDMS
|
//import deck globals
|
||||||
public static String TAG = Activity.class.getCanonicalName();
|
public ArrayList<String> myresult = new ArrayList<String>();
|
||||||
|
public String myclickedItem = "";
|
||||||
|
|
||||||
// Main components
|
// Main components
|
||||||
private static SDLActivity mSingleton;
|
private static SDLActivity mSingleton;
|
||||||
@@ -201,6 +210,59 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
setStorage.create().show();
|
setStorage.create().show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void importDeckOptions()
|
||||||
|
{
|
||||||
|
AlertDialog.Builder importDeck = new AlertDialog.Builder(this);
|
||||||
|
importDeck.setTitle("Choose Deck to Import:");
|
||||||
|
File root = new File(System.getenv("EXTERNAL_STORAGE")+"/Download");
|
||||||
|
File[] files = root.listFiles();
|
||||||
|
for( File f : files)
|
||||||
|
{
|
||||||
|
if( !myresult.contains(f.toString()) && (f.toString().contains(".txt")||f.toString().contains(".dck")||f.toString().contains(".dec")))
|
||||||
|
myresult.add(f.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
//get first item?
|
||||||
|
if(!myresult.isEmpty())
|
||||||
|
myclickedItem = myresult.get(0).toString();
|
||||||
|
|
||||||
|
importDeck.setSingleChoiceItems(myresult.toArray(new String[myresult.size()]), 0, new DialogInterface.OnClickListener()
|
||||||
|
{
|
||||||
|
public void onClick(DialogInterface dialog, int item)
|
||||||
|
{
|
||||||
|
myclickedItem = myresult.get(item).toString();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
importDeck.setPositiveButton("Import Deck", new DialogInterface.OnClickListener()
|
||||||
|
{
|
||||||
|
public void onClick(DialogInterface dialog, int which)
|
||||||
|
{
|
||||||
|
processSelectedDeck( myclickedItem );
|
||||||
|
if (mSurface == null)
|
||||||
|
mSingleton.initializeGame();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
importDeck.create().show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processSelectedDeck(String mypath)
|
||||||
|
{
|
||||||
|
AlertDialog.Builder infoDialog = new AlertDialog.Builder(this);
|
||||||
|
infoDialog.setTitle("Imported Deck:");
|
||||||
|
String activePath = sdcardPath;
|
||||||
|
if(activePath == ""){
|
||||||
|
activePath = internalPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
File f = new File(mypath);
|
||||||
|
//Call the deck importer....
|
||||||
|
String state = DeckImporter.importDeck(f, mypath, activePath);
|
||||||
|
infoDialog.setMessage(state);
|
||||||
|
infoDialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
private void checkStorageLocationPreference()
|
private void checkStorageLocationPreference()
|
||||||
{
|
{
|
||||||
SharedPreferences settings = getSharedPreferences(kWagicSharedPreferencesKey, MODE_PRIVATE);
|
SharedPreferences settings = getSharedPreferences(kWagicSharedPreferencesKey, MODE_PRIVATE);
|
||||||
@@ -287,7 +349,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
updateStorageLocations();
|
updateStorageLocations();
|
||||||
} catch (Exception ioex)
|
} catch (Exception ioex)
|
||||||
{
|
{
|
||||||
Log.e("SDL", "An error occurred in setting up the storage locations.");
|
Log.e(TAG, "An error occurred in setting up the storage locations.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -334,7 +396,8 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
public boolean onCreateOptionsMenu(Menu menu)
|
public boolean onCreateOptionsMenu(Menu menu)
|
||||||
{
|
{
|
||||||
SubMenu settingsMenu = menu.addSubMenu(Menu.NONE, 1, 1, "Settings");
|
SubMenu settingsMenu = menu.addSubMenu(Menu.NONE, 1, 1, "Settings");
|
||||||
menu.add(Menu.NONE, 2, 2, "About");
|
menu.add(Menu.NONE, 2, 2, "Import");
|
||||||
|
menu.add(Menu.NONE, 3, 3, "About");
|
||||||
settingsMenu.add(kStorageDataOptionsMenuId, kStorageDataOptionsMenuId, Menu.NONE, "Storage Data Options");
|
settingsMenu.add(kStorageDataOptionsMenuId, kStorageDataOptionsMenuId, Menu.NONE, "Storage Data Options");
|
||||||
// buildStorageOptionsMenu(settingsMenu);
|
// buildStorageOptionsMenu(settingsMenu);
|
||||||
|
|
||||||
@@ -350,6 +413,9 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
{
|
{
|
||||||
displayStorageOptions();
|
displayStorageOptions();
|
||||||
} else if (itemId == 2)
|
} else if (itemId == 2)
|
||||||
|
{
|
||||||
|
importDeckOptions();
|
||||||
|
} else if (itemId == 3)
|
||||||
{
|
{
|
||||||
// display some info about the app
|
// display some info about the app
|
||||||
AlertDialog.Builder infoDialog = new AlertDialog.Builder(this);
|
AlertDialog.Builder infoDialog = new AlertDialog.Builder(this);
|
||||||
@@ -428,14 +494,12 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState)
|
protected void onCreate(Bundle savedInstanceState)
|
||||||
{
|
{
|
||||||
// Log.v("SDL", "onCreate()");
|
//Log.d(TAG, "onCreate()");
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
// So we can call stuff from static callbacks
|
// So we can call stuff from static callbacks
|
||||||
mSingleton = this;
|
mSingleton = this;
|
||||||
mContext = this.getApplicationContext();
|
mContext = this.getApplicationContext();
|
||||||
// get the current version of the app to set the core filename
|
|
||||||
String versionCodeString = getApplicationCode();
|
|
||||||
RES_FILENAME = getResourceName();
|
RES_FILENAME = getResourceName();
|
||||||
|
|
||||||
StorageOptions.determineStorageOptions();
|
StorageOptions.determineStorageOptions();
|
||||||
@@ -463,7 +527,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
@Override
|
@Override
|
||||||
protected void onPause()
|
protected void onPause()
|
||||||
{
|
{
|
||||||
// Log.v("SDL", "onPause()");
|
// Log.d(TAG, "onPause()");
|
||||||
super.onPause();
|
super.onPause();
|
||||||
SDLActivity.nativePause();
|
SDLActivity.nativePause();
|
||||||
}
|
}
|
||||||
@@ -471,7 +535,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
@Override
|
@Override
|
||||||
protected void onResume()
|
protected void onResume()
|
||||||
{
|
{
|
||||||
// Log.v("SDL", "onResume()");
|
// Log.d(TAG, "onResume()");
|
||||||
super.onResume();
|
super.onResume();
|
||||||
SDLActivity.nativeResume();
|
SDLActivity.nativeResume();
|
||||||
}
|
}
|
||||||
@@ -479,8 +543,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
@Override
|
@Override
|
||||||
public void onDestroy()
|
public void onDestroy()
|
||||||
{
|
{
|
||||||
// Log.v("SDL", "onDestroy()");
|
// Log.d(TAG, "onDestroy()");
|
||||||
|
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
mSurface.onDestroy();
|
mSurface.onDestroy();
|
||||||
}
|
}
|
||||||
@@ -591,7 +654,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
int audioFormat = is16Bit ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT;
|
int audioFormat = is16Bit ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT;
|
||||||
int frameSize = (isStereo ? 2 : 1) * (is16Bit ? 2 : 1);
|
int frameSize = (isStereo ? 2 : 1) * (is16Bit ? 2 : 1);
|
||||||
|
|
||||||
// Log.v("SDL", "SDL audio: wanted " + (isStereo ? "stereo" : "mono") + " " + (is16Bit ? "16-bit" : "8-bit") + " " + ((float)sampleRate / 1000f) + "kHz, " + desiredFrames + " frames buffer");
|
// Log.d(TAG, "SDL audio: wanted " + (isStereo ? "stereo" : "mono") + " " + (is16Bit ? "16-bit" : "8-bit") + " " + ((float)sampleRate / 1000f) + "kHz, " + desiredFrames + " frames buffer");
|
||||||
|
|
||||||
// Let the user pick a larger buffer if they really want -- but ye
|
// Let the user pick a larger buffer if they really want -- but ye
|
||||||
// gods they probably shouldn't, the minimums are horrifyingly high
|
// gods they probably shouldn't, the minimums are horrifyingly high
|
||||||
@@ -602,7 +665,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
|
|
||||||
audioStartThread();
|
audioStartThread();
|
||||||
|
|
||||||
// Log.v("SDL", "SDL audio: got " + ((mAudioTrack.getChannelCount() >= 2) ? "stereo" : "mono") + " " + ((mAudioTrack.getAudioFormat() == AudioFormat.ENCODING_PCM_16BIT) ? "16-bit" : "8-bit") + " " + ((float)mAudioTrack.getSampleRate() / 1000f) +
|
// Log.d(TAG, "SDL audio: got " + ((mAudioTrack.getChannelCount() >= 2) ? "stereo" : "mono") + " " + ((mAudioTrack.getAudioFormat() == AudioFormat.ENCODING_PCM_16BIT) ? "16-bit" : "8-bit") + " " + ((float)mAudioTrack.getSampleRate() / 1000f) +
|
||||||
// "kHz, " + desiredFrames + " frames buffer");
|
// "kHz, " + desiredFrames + " frames buffer");
|
||||||
|
|
||||||
if (is16Bit)
|
if (is16Bit)
|
||||||
@@ -650,7 +713,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
Log.w("SDL", "SDL audio: error return from write(short)");
|
Log.w(TAG, "SDL audio: error return from write(short)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -675,7 +738,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
Log.w("SDL", "SDL audio: error return from write(short)");
|
Log.w(TAG, "SDL audio: error return from write(short)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -690,11 +753,11 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
mAudioThread.join();
|
mAudioThread.join();
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.v("SDL", "Problem stopping audio thread: " + e);
|
Log.e(TAG, "Problem stopping audio thread: " + e);
|
||||||
}
|
}
|
||||||
mAudioThread = null;
|
mAudioThread = null;
|
||||||
|
|
||||||
// Log.v("SDL", "Finished waiting for audio thread");
|
// Log.d(TAG, "Finished waiting for audio thread");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mAudioTrack != null)
|
if (mAudioTrack != null)
|
||||||
@@ -706,7 +769,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
|
|
||||||
class DownloadFileAsync extends AsyncTask<String, Integer, Long>
|
class DownloadFileAsync extends AsyncTask<String, Integer, Long>
|
||||||
{
|
{
|
||||||
final String TAG1 = DownloadFileAsync.class.getCanonicalName();
|
private final String TAG = DownloadFileAsync.class.getCanonicalName();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPreExecute()
|
protected void onPreExecute()
|
||||||
@@ -725,7 +788,6 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
//
|
//
|
||||||
// Prepare the sdcard folders in order to download the resource file
|
// Prepare the sdcard folders in order to download the resource file
|
||||||
//
|
//
|
||||||
@@ -746,7 +808,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
conexion.connect();
|
conexion.connect();
|
||||||
|
|
||||||
int lengthOfFile = conexion.getContentLength();
|
int lengthOfFile = conexion.getContentLength();
|
||||||
// Log.d("Wagic - " + TAG1, " Length of file: " + lengthOfFile);
|
// Log.d(TAG, " Length of file: " + lengthOfFile);
|
||||||
|
|
||||||
input = new BufferedInputStream(url.openStream());
|
input = new BufferedInputStream(url.openStream());
|
||||||
// create a File object for the output file
|
// create a File object for the output file
|
||||||
@@ -769,8 +831,8 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
{
|
{
|
||||||
String errorMessage = "An error happened while downloading the resources. It could be that our server is temporarily down, that your device is not connected to a network, or that we cannot write to " + mSingleton.getSystemStorageLocation() + ". Please check your phone settings and try again. For more help please go to http://wagic.net";
|
String errorMessage = "An error happened while downloading the resources. It could be that our server is temporarily down, that your device is not connected to a network, or that we cannot write to " + mSingleton.getSystemStorageLocation() + ". Please check your phone settings and try again. For more help please go to http://wagic.net";
|
||||||
mSingleton.downloadError(errorMessage);
|
mSingleton.downloadError(errorMessage);
|
||||||
Log.e(TAG1, errorMessage);
|
Log.e(TAG, errorMessage);
|
||||||
Log.e(TAG1, e.getMessage());
|
Log.e(TAG, e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return Long.valueOf(totalBytes);
|
return Long.valueOf(totalBytes);
|
||||||
@@ -780,7 +842,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
{
|
{
|
||||||
if (progress[0] != mProgressDialog.getProgress())
|
if (progress[0] != mProgressDialog.getProgress())
|
||||||
{
|
{
|
||||||
// Log.d("Wagic - " + TAG1, "current progress : " + progress[0]);
|
// Log.d(TAG, "current progress : " + progress[0]);
|
||||||
mProgressDialog.setProgress(progress[0]);
|
mProgressDialog.setProgress(progress[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -853,6 +915,7 @@ public class SDLActivity extends Activity implements OnKeyListener
|
|||||||
*/
|
*/
|
||||||
class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnKeyListener, View.OnTouchListener, SensorEventListener
|
class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnKeyListener, View.OnTouchListener, SensorEventListener
|
||||||
{
|
{
|
||||||
|
private static final String TAG = SDLSurface.class.getCanonicalName();
|
||||||
|
|
||||||
// This is what SDL runs in. It invokes SDL_main(), eventually
|
// This is what SDL runs in. It invokes SDL_main(), eventually
|
||||||
private Thread mSDLThread;
|
private Thread mSDLThread;
|
||||||
@@ -892,7 +955,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
|
|
||||||
SDLActivity.nativeQuit();
|
SDLActivity.nativeQuit();
|
||||||
|
|
||||||
Log.v("SDL", "SDL thread terminated");
|
Log.d(TAG, "SDL thread terminated");
|
||||||
|
|
||||||
// On exit, tear everything down for a fresh restart next time.
|
// On exit, tear everything down for a fresh restart next time.
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
@@ -919,7 +982,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
// Called when we have a valid drawing surface
|
// Called when we have a valid drawing surface
|
||||||
public void surfaceCreated(SurfaceHolder holder)
|
public void surfaceCreated(SurfaceHolder holder)
|
||||||
{
|
{
|
||||||
Log.v("SDL", "surfaceCreated()");
|
//Log.d(TAG, "surfaceCreated()");
|
||||||
|
|
||||||
enableSensor(Sensor.TYPE_ACCELEROMETER, true);
|
enableSensor(Sensor.TYPE_ACCELEROMETER, true);
|
||||||
}
|
}
|
||||||
@@ -939,18 +1002,18 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
mSDLThread.join();
|
mSDLThread.join();
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.v("SDL", "Problem stopping thread: " + e);
|
Log.e(TAG, "Problem stopping thread: " + e);
|
||||||
}
|
}
|
||||||
mSDLThread = null;
|
mSDLThread = null;
|
||||||
|
|
||||||
// Log.v("SDL", "Finished waiting for SDL thread");
|
// Log.d(TAG, "Finished waiting for SDL thread");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when we lose the surface
|
// Called when we lose the surface
|
||||||
public void surfaceDestroyed(SurfaceHolder holder)
|
public void surfaceDestroyed(SurfaceHolder holder)
|
||||||
{
|
{
|
||||||
Log.v("SDL", "surfaceDestroyed()");
|
Log.d(TAG, "surfaceDestroyed()");
|
||||||
synchronized (mSemSurface)
|
synchronized (mSemSurface)
|
||||||
{
|
{
|
||||||
mSurfaceValid = false;
|
mSurfaceValid = false;
|
||||||
@@ -962,51 +1025,51 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
// Called when the surface is resized
|
// Called when the surface is resized
|
||||||
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
|
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
|
||||||
{
|
{
|
||||||
Log.d("SDL", "surfaceChanged()");
|
Log.d(TAG, "surfaceChanged()");
|
||||||
|
|
||||||
int sdlFormat = 0x85151002; // SDL_PIXELFORMAT_RGB565 by default
|
int sdlFormat = 0x85151002; // SDL_PIXELFORMAT_RGB565 by default
|
||||||
switch (format)
|
switch (format)
|
||||||
{
|
{
|
||||||
case PixelFormat.A_8:
|
case PixelFormat.A_8:
|
||||||
Log.d("SDL", "pixel format A_8");
|
Log.d("TAG", "pixel format A_8");
|
||||||
break;
|
break;
|
||||||
case PixelFormat.LA_88:
|
case PixelFormat.LA_88:
|
||||||
Log.d("SDL", "pixel format LA_88");
|
Log.d("TAG", "pixel format LA_88");
|
||||||
break;
|
break;
|
||||||
case PixelFormat.L_8:
|
case PixelFormat.L_8:
|
||||||
Log.d("SDL", "pixel format L_8");
|
Log.d("TAG", "pixel format L_8");
|
||||||
break;
|
break;
|
||||||
case PixelFormat.RGBA_4444:
|
case PixelFormat.RGBA_4444:
|
||||||
Log.d("SDL", "pixel format RGBA_4444");
|
Log.d("TAG", "pixel format RGBA_4444");
|
||||||
sdlFormat = 0x85421002; // SDL_PIXELFORMAT_RGBA4444
|
sdlFormat = 0x85421002; // SDL_PIXELFORMAT_RGBA4444
|
||||||
break;
|
break;
|
||||||
case PixelFormat.RGBA_5551:
|
case PixelFormat.RGBA_5551:
|
||||||
Log.d("SDL", "pixel format RGBA_5551");
|
Log.d(TAG, "pixel format RGBA_5551");
|
||||||
sdlFormat = 0x85441002; // SDL_PIXELFORMAT_RGBA5551
|
sdlFormat = 0x85441002; // SDL_PIXELFORMAT_RGBA5551
|
||||||
break;
|
break;
|
||||||
case PixelFormat.RGBA_8888:
|
case PixelFormat.RGBA_8888:
|
||||||
Log.d("SDL", "pixel format RGBA_8888");
|
Log.d(TAG, "pixel format RGBA_8888");
|
||||||
sdlFormat = 0x86462004; // SDL_PIXELFORMAT_RGBA8888
|
sdlFormat = 0x86462004; // SDL_PIXELFORMAT_RGBA8888
|
||||||
break;
|
break;
|
||||||
case PixelFormat.RGBX_8888:
|
case PixelFormat.RGBX_8888:
|
||||||
Log.d("SDL", "pixel format RGBX_8888");
|
Log.d(TAG, "pixel format RGBX_8888");
|
||||||
sdlFormat = 0x86262004; // SDL_PIXELFORMAT_RGBX8888
|
sdlFormat = 0x86262004; // SDL_PIXELFORMAT_RGBX8888
|
||||||
break;
|
break;
|
||||||
case PixelFormat.RGB_332:
|
case PixelFormat.RGB_332:
|
||||||
Log.d("SDL", "pixel format RGB_332");
|
Log.d(TAG, "pixel format RGB_332");
|
||||||
sdlFormat = 0x84110801; // SDL_PIXELFORMAT_RGB332
|
sdlFormat = 0x84110801; // SDL_PIXELFORMAT_RGB332
|
||||||
break;
|
break;
|
||||||
case PixelFormat.RGB_565:
|
case PixelFormat.RGB_565:
|
||||||
Log.d("SDL", "pixel format RGB_565");
|
Log.d(TAG, "pixel format RGB_565");
|
||||||
sdlFormat = 0x85151002; // SDL_PIXELFORMAT_RGB565
|
sdlFormat = 0x85151002; // SDL_PIXELFORMAT_RGB565
|
||||||
break;
|
break;
|
||||||
case PixelFormat.RGB_888:
|
case PixelFormat.RGB_888:
|
||||||
Log.d("SDL", "pixel format RGB_888");
|
Log.d(TAG, "pixel format RGB_888");
|
||||||
// Not sure this is right, maybe SDL_PIXELFORMAT_RGB24 instead?
|
// Not sure this is right, maybe SDL_PIXELFORMAT_RGB24 instead?
|
||||||
sdlFormat = 0x86161804; // SDL_PIXELFORMAT_RGB888
|
sdlFormat = 0x86161804; // SDL_PIXELFORMAT_RGB888
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Log.d("SDL", "pixel format unknown " + format);
|
Log.d(TAG, "pixel format unknown " + format);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SDLActivity.onNativeResize(width, height, sdlFormat);
|
SDLActivity.onNativeResize(width, height, sdlFormat);
|
||||||
@@ -1023,11 +1086,10 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
// EGL functions
|
// EGL functions
|
||||||
public boolean initEGL(int majorVersion, int minorVersion)
|
public boolean initEGL(int majorVersion, int minorVersion)
|
||||||
{
|
{
|
||||||
Log.d("SDL", "Starting up OpenGL ES " + majorVersion + "." + minorVersion);
|
Log.d(TAG, "Starting up OpenGL ES " + majorVersion + "." + minorVersion);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
EGL10 egl = (EGL10) EGLContext.getEGL();
|
EGL10 egl = (EGL10) EGLContext.getEGL();
|
||||||
|
|
||||||
EGLDisplay dpy = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
|
EGLDisplay dpy = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
|
||||||
@@ -1053,7 +1115,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
int[] num_config = new int[1];
|
int[] num_config = new int[1];
|
||||||
if (!egl.eglChooseConfig(dpy, configSpec, configs, 1, num_config) || num_config[0] == 0)
|
if (!egl.eglChooseConfig(dpy, configSpec, configs, 1, num_config) || num_config[0] == 0)
|
||||||
{
|
{
|
||||||
Log.e("SDL", "No EGL config available");
|
Log.e(TAG, "No EGL config available");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
mEGLConfig = configs[0];
|
mEGLConfig = configs[0];
|
||||||
@@ -1061,7 +1123,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
EGLContext ctx = egl.eglCreateContext(dpy, mEGLConfig, EGL10.EGL_NO_CONTEXT, null);
|
EGLContext ctx = egl.eglCreateContext(dpy, mEGLConfig, EGL10.EGL_NO_CONTEXT, null);
|
||||||
if (ctx == EGL10.EGL_NO_CONTEXT)
|
if (ctx == EGL10.EGL_NO_CONTEXT)
|
||||||
{
|
{
|
||||||
Log.e("SDL", "Couldn't create context");
|
Log.e(TAG, "Couldn't create context");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1075,10 +1137,10 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
|
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.e("SDL", e + "");
|
Log.e(TAG, e + "");
|
||||||
for (StackTraceElement s : e.getStackTrace())
|
for (StackTraceElement s : e.getStackTrace())
|
||||||
{
|
{
|
||||||
Log.e("SDL", s.toString());
|
Log.e(TAG, s.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1093,7 +1155,6 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
EGL10 egl = (EGL10) EGLContext.getEGL();
|
EGL10 egl = (EGL10) EGLContext.getEGL();
|
||||||
if (mEGLSurface != null)
|
if (mEGLSurface != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unbind and destroy the old EGL surface, if there is one.
|
* Unbind and destroy the old EGL surface, if there is one.
|
||||||
*/
|
*/
|
||||||
@@ -1107,7 +1168,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
mEGLSurface = egl.eglCreateWindowSurface(mEGLDisplay, mEGLConfig, holder, null);
|
mEGLSurface = egl.eglCreateWindowSurface(mEGLDisplay, mEGLConfig, holder, null);
|
||||||
if (mEGLSurface == EGL10.EGL_NO_SURFACE)
|
if (mEGLSurface == EGL10.EGL_NO_SURFACE)
|
||||||
{
|
{
|
||||||
Log.e("SDL", "Couldn't create surface");
|
Log.e(TAG, "Couldn't create surface");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1116,7 +1177,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
*/
|
*/
|
||||||
if (!egl.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext))
|
if (!egl.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext))
|
||||||
{
|
{
|
||||||
Log.e("SDL", "Couldn't make context current");
|
Log.e(TAG, "Couldn't make context current");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1128,7 +1189,6 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
// EGL buffer flip
|
// EGL buffer flip
|
||||||
public void flipEGL()
|
public void flipEGL()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!mSurfaceValid)
|
if (!mSurfaceValid)
|
||||||
{
|
{
|
||||||
createSurface(this.getHolder());
|
createSurface(this.getHolder());
|
||||||
@@ -1138,7 +1198,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
{
|
{
|
||||||
EGL10 egl = (EGL10) EGLContext.getEGL();
|
EGL10 egl = (EGL10) EGLContext.getEGL();
|
||||||
|
|
||||||
egl.eglWaitNative(EGL10.EGL_NATIVE_RENDERABLE, null);
|
egl.eglWaitNative(EGL10.EGL_CORE_NATIVE_ENGINE, null);
|
||||||
|
|
||||||
// drawing here
|
// drawing here
|
||||||
|
|
||||||
@@ -1148,13 +1208,12 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
|
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.e("SDL", "flipEGL(): " + e);
|
Log.e(TAG, "flipEGL(): " + e);
|
||||||
for (StackTraceElement s : e.getStackTrace())
|
for (StackTraceElement s : e.getStackTrace())
|
||||||
{
|
{
|
||||||
Log.e("SDL", s.toString());
|
Log.e(TAG, s.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Key events
|
// Key events
|
||||||
@@ -1165,14 +1224,15 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
|
|
||||||
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
|
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (event.getAction() == KeyEvent.ACTION_DOWN)
|
if (event.getAction() == KeyEvent.ACTION_DOWN)
|
||||||
{
|
{
|
||||||
// Log.d("SDL", "key down: " + keyCode);
|
// Log.d(TAG, "key down: " + keyCode);
|
||||||
SDLActivity.onNativeKeyDown(keyCode);
|
SDLActivity.onNativeKeyDown(keyCode);
|
||||||
return true;
|
return true;
|
||||||
} else if (event.getAction() == KeyEvent.ACTION_UP)
|
} else if (event.getAction() == KeyEvent.ACTION_UP)
|
||||||
{
|
{
|
||||||
// Log.d("SDL", "key up: " + keyCode);
|
// Log.d(TAG, "key up: " + keyCode);
|
||||||
SDLActivity.onNativeKeyUp(keyCode);
|
SDLActivity.onNativeKeyUp(keyCode);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1183,7 +1243,6 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
// Touch events
|
// Touch events
|
||||||
public boolean onTouch(View v, MotionEvent event)
|
public boolean onTouch(View v, MotionEvent event)
|
||||||
{
|
{
|
||||||
|
|
||||||
for (int index = 0; index < event.getPointerCount(); ++index)
|
for (int index = 0; index < event.getPointerCount(); ++index)
|
||||||
{
|
{
|
||||||
int action = event.getActionMasked();
|
int action = event.getActionMasked();
|
||||||
@@ -1250,3 +1309,4 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ endif
|
|||||||
|
|
||||||
ifeq ($(TARGET_ARCHITECTURE),psp)
|
ifeq ($(TARGET_ARCHITECTURE),psp)
|
||||||
DEFAULT_RULE = 3xx
|
DEFAULT_RULE = 3xx
|
||||||
TARGET_ARCHITECTURE = psp
|
|
||||||
PSP_FW_VERSION=371
|
PSP_FW_VERSION=371
|
||||||
BUILD_PRX = 1
|
BUILD_PRX = 1
|
||||||
SIGN_PRX = 1
|
SIGN_PRX = 1
|
||||||
@@ -74,19 +73,36 @@ PSP_EBOOT_PIC1 = pic1.png
|
|||||||
INCDIR = ../../JGE/include ../../JGE/src/zipFS ../../JGE/include/psp ../../JGE/include/psp/freetype2 ../../JGE/src ../../projects/mtg/include ../../Boost
|
INCDIR = ../../JGE/include ../../JGE/src/zipFS ../../JGE/include/psp ../../JGE/include/psp/freetype2 ../../JGE/src ../../projects/mtg/include ../../Boost
|
||||||
LIBDIR = ../../JGE/lib/psp
|
LIBDIR = ../../JGE/lib/psp
|
||||||
CFLAGS = -O2 -G0 -DPSPFW3XX -DDEVHOOK -DUSE_PRECOMPILED_HEADERS=1 -DPSP -DTIXML_USE_STL
|
CFLAGS = -O2 -G0 -DPSPFW3XX -DDEVHOOK -DUSE_PRECOMPILED_HEADERS=1 -DPSP -DTIXML_USE_STL
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
ifeq ($(MAKECMDGOALS),x11)
|
||||||
|
|
||||||
|
OBJS += objs/TestSuiteAI.o
|
||||||
|
INCDIR = -I../../JGE/include -I../../JGE/src -I/usr/X11/include -I../../projects/mtg/include -I/usr/include/boost -I../../JGE/src/zipFS
|
||||||
|
LIBDIR = -L../../JGE/lib/linux -L../../JGE -L/usr/X11/lib
|
||||||
|
LIBS = -ljge -lfreetype -ljpeg -lgif -lpng -lz -lm -lstdc++ -lhgetools -lGL -lGLU -lX11 -lpthread $(FMOD)
|
||||||
|
CFLAGS = $(INCDIR) -DLINUX -DUSE_PRECOMPILED_HEADERS=1 -DTIXML_USE_STL -Wno-nonnull-compare
|
||||||
|
|
||||||
|
ASFLAGS = $(CXXFLAGS)
|
||||||
|
|
||||||
|
all: $(DEFAULT_RULE)
|
||||||
|
else
|
||||||
|
|
||||||
OBJS += objs/TestSuiteAI.o
|
OBJS += objs/TestSuiteAI.o
|
||||||
INCDIR = -I../../JGE/include -I../../JGE/src -I/usr/X11/include -I../../projects/mtg/include -I../../Boost -I../../JGE/src/zipFS
|
INCDIR = -I../../JGE/include -I../../JGE/src -I/usr/X11/include -I../../projects/mtg/include -I../../Boost -I../../JGE/src/zipFS
|
||||||
LIBDIR = -L../../JGE/lib/linux -L../../JGE -L/usr/X11/lib -L../../Boost/lib
|
LIBDIR = -L../../JGE/lib/linux -L../../JGE -L/usr/X11/lib -L../../Boost/lib
|
||||||
LIBS = -ljge -lfreetype -ljpeg -lgif -lpng -lz -lm -lstdc++ -lhgetools -lGL -lGLU -lX11 -lboost_thread $(FMOD)
|
LIBS = -ljge -lfreetype -ljpeg -lgif -lpng -lz -lm -lstdc++ -lhgetools -lGL -lGLU -lX11 -lboost_thread $(FMOD)
|
||||||
CFLAGS = $(INCDIR) -DLINUX -DUSE_PRECOMPILED_HEADERS=1
|
CFLAGS = $(INCDIR) -DLINUX -DUSE_PRECOMPILED_HEADERS=1 -Wno-nonnull-compare
|
||||||
|
|
||||||
ASFLAGS = $(CXXFLAGS)
|
ASFLAGS = $(CXXFLAGS)
|
||||||
|
|
||||||
all: $(DEFAULT_RULE)
|
all: $(DEFAULT_RULE)
|
||||||
|
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS := -Wall -W -Wno-unused $(CFLAGS)
|
CFLAGS := -Wall -W -Werror -Wno-unused -Wno-deprecated-declarations $(CFLAGS)
|
||||||
CXXFLAGS += $(CFLAGS)
|
CXXFLAGS += $(CFLAGS)
|
||||||
# -fno-exceptions
|
# -fno-exceptions
|
||||||
|
|
||||||
@@ -110,8 +126,6 @@ debug: all
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(TARGET): Makefile.$(TARGET_ARCHITECTURE) $(OBJS) ../../JGE/lib/linux/libjge.a
|
$(TARGET): Makefile.$(TARGET_ARCHITECTURE) $(OBJS) ../../JGE/lib/linux/libjge.a
|
||||||
$(CXX) -o $(TARGET) $(OBJS) $(LIBS) $(LIBDIR)
|
$(CXX) -o $(TARGET) $(OBJS) $(LIBS) $(LIBDIR)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
#NAME:Kill by Numbers
|
#NAME:Kill by Numbers
|
||||||
#DESC:They just keep multiplying.
|
#DESC:They just keep multiplying.
|
||||||
|
#HINT:castpriority(enchantment,instant,sorcery,artifact,creature)
|
||||||
|
#HINT:dontattackwith(Rhys the Redeemed)
|
||||||
|
#HINT:dontblockwith(Rhys the Redeemed)
|
||||||
|
#HINT:dontattackwith(Kazandu Tuskcaller)
|
||||||
|
#HINT:dontblockwith(Kazandu Tuskcaller)
|
||||||
|
|
||||||
Mox Emerald (LEA) *2
|
Mox Emerald (LEA) *2
|
||||||
Mox Pearl (LEA) *2
|
Mox Pearl (LEA) *2
|
||||||
Forest (LEA) *15
|
Forest (LEA) *15
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#NAME:Etched Affinity
|
#NAME:Etched Affinity
|
||||||
#DESC:Modern URB Aggro
|
#DESC:Modern URB Aggro
|
||||||
#HINT:dontattackwith(creature[power<=0])
|
#HINT:dontattackwith(creature[power<=0])
|
||||||
#HINT:combo hold(Glimmervoid|myhand)^until(artifact|mybattlefield)^cast(Glimmervoid|myhand)^totalmananeeded({0})
|
|
||||||
#HINT:combo hold(Galvanic Blast|myhand)^cast(Galvanic Blast|myhand)^restriction{type(artifact|mybattlefield)~morethan~2,turn:3}^totalmananeeded({R})
|
#HINT:combo hold(Galvanic Blast|myhand)^cast(Galvanic Blast|myhand)^restriction{type(artifact|mybattlefield)~morethan~2,turn:3}^totalmananeeded({R})
|
||||||
|
|
||||||
#25 creatures
|
#25 creatures
|
||||||
|
|||||||
@@ -23,23 +23,23 @@
|
|||||||
369072
|
369072
|
||||||
|
|
||||||
#4 x Armada Wurm (RTR), {2}{g}{g}{w}{w}, Creature Wurm, 5/5, trample;
|
#4 x Armada Wurm (RTR), {2}{g}{g}{w}{w}, Creature Wurm, 5/5, trample;
|
||||||
999009
|
253587
|
||||||
999009
|
253587
|
||||||
999009
|
253587
|
||||||
999009
|
253587
|
||||||
|
|
||||||
#2 x Precinct Captain (RTR), {w}{w}, Creature Human Soldier, 2/2, first strike;
|
#2 x Precinct Captain (RTR), {w}{w}, Creature Human Soldier, 2/2, first strike;
|
||||||
999171
|
270792
|
||||||
999171
|
270792
|
||||||
|
|
||||||
#4 x Wayfaring Temple (RTR), {1}{g}{w}, Creature Elemental, 0/0,
|
#4 x Wayfaring Temple (RTR), {1}{g}{w}, Creature Elemental, 0/0,
|
||||||
999260
|
253539
|
||||||
999260
|
253539
|
||||||
999260
|
253539
|
||||||
999260
|
253539
|
||||||
|
|
||||||
#1 x Worldspine Wurm (RTR), {8}{g}{g}{g}, Creature Wurm, 15/15, trample;
|
#1 x Worldspine Wurm (RTR), {8}{g}{g}{g}, Creature Wurm, 15/15, trample;
|
||||||
999262
|
253575
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -57,14 +57,14 @@
|
|||||||
369060
|
369060
|
||||||
|
|
||||||
#2 x Chromatic Lantern (RTR), {3}, Artifact,
|
#2 x Chromatic Lantern (RTR), {3}, Artifact,
|
||||||
999039
|
290542
|
||||||
999039
|
290542
|
||||||
|
|
||||||
#4 x Growing Ranks (RTR), {2}{g/w}{g/w}, Enchantment,
|
#4 x Growing Ranks (RTR), {2}{g/w}{g/w}, Enchantment,
|
||||||
999106
|
270957
|
||||||
999106
|
270957
|
||||||
999106
|
270957
|
||||||
999106
|
270957
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -84,26 +84,26 @@
|
|||||||
369018
|
369018
|
||||||
|
|
||||||
#4 x Forest (RTR), Basic Land Forest,
|
#4 x Forest (RTR), Basic Land Forest,
|
||||||
999086
|
289326
|
||||||
999086
|
289326
|
||||||
999086
|
289326
|
||||||
999086
|
289326
|
||||||
|
|
||||||
#4 x Plains (RTR), Basic Land Plains,
|
#4 x Plains (RTR), Basic Land Plains,
|
||||||
999168
|
289310
|
||||||
999168
|
289310
|
||||||
999168
|
289310
|
||||||
999168
|
289310
|
||||||
|
|
||||||
#2 x Temple Garden (RTR), Land Forest Plains,
|
#2 x Temple Garden (RTR), Land Forest Plains,
|
||||||
999238
|
253681
|
||||||
999238
|
253681
|
||||||
|
|
||||||
#4 x Plains (RTR), Basic Land Plains,
|
#4 x Plains (RTR), Basic Land Plains,
|
||||||
999265
|
289309
|
||||||
999265
|
289309
|
||||||
999265
|
289309
|
||||||
999265
|
289309
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 522 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 233 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 117 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 405 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 489 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 514 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 514 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 514 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 514 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 514 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 514 KiB |
@@ -5,7 +5,6 @@ wallpapers/wagic1.jpg
|
|||||||
wallpapers/kaioshin_garruk.jpg
|
wallpapers/kaioshin_garruk.jpg
|
||||||
wallpapers/kaioshin_jace.jpg
|
wallpapers/kaioshin_jace.jpg
|
||||||
graphics/shop.jpg
|
graphics/shop.jpg
|
||||||
themes/Classic/backdrop.jpg
|
|
||||||
wallpapers/kaioshin_ravager.jpg
|
wallpapers/kaioshin_ravager.jpg
|
||||||
wallpapers/kaioshin_elsXIII.jpg
|
wallpapers/kaioshin_elsXIII.jpg
|
||||||
wallpapers/kaioshin_sorin.jpg
|
wallpapers/kaioshin_sorin.jpg
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
[card]
|
||||||
|
name=Aura Graft
|
||||||
|
text=Gain control of target Aura that's attached to a permanent. Attach it to another permanent it can enchant.
|
||||||
|
mana={1}{U}
|
||||||
|
type=Instant
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Coat of Arms
|
||||||
|
text=Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Goblin Warriors and a Goblin Shaman are on the battlefield, each gets +2/+2.)
|
||||||
|
mana={5}
|
||||||
|
type=Artifact
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Cone of Flame
|
||||||
|
text=Cone of Flame deals 1 damage to target creature or player, 2 damage to another target creature or player, and 3 damage to a third target creature or player.
|
||||||
|
mana={3}{R}{R}
|
||||||
|
type=Sorcery
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Furnace of Rath
|
||||||
|
text=If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead.
|
||||||
|
mana={1}{R}{R}{R}
|
||||||
|
type=Enchantment
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Gaea's Herald
|
||||||
|
text=Creature spells can't be countered.
|
||||||
|
mana={1}{G}
|
||||||
|
type=Creature
|
||||||
|
subtype=Elf
|
||||||
|
power=1
|
||||||
|
toughness=1
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Guerrilla Tactics
|
||||||
|
text=Guerrilla Tactics deals 2 damage to target creature or player. -- When a spell or ability an opponent controls causes you to discard Guerrilla Tactics, Guerrilla Tactics deals 4 damage to target creature or player.
|
||||||
|
mana={1}{R}
|
||||||
|
type=Instant
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Hail of Arrows
|
||||||
|
text=Hail of Arrows deals X damage divided as you choose among any number of target attacking creatures.
|
||||||
|
mana={X}{W}
|
||||||
|
type=Instant
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=High Ground
|
||||||
|
text=Each creature you control can block an additional creature.
|
||||||
|
mana={W}
|
||||||
|
type=Enchantment
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Kjeldoran Royal Guard
|
||||||
|
text={T}: All combat damage that would be dealt to you by unblocked creatures this turn is dealt to Kjeldoran Royal Guard instead.
|
||||||
|
mana={3}{W}{W}
|
||||||
|
type=Creature
|
||||||
|
subtype=Human Soldier
|
||||||
|
power=2
|
||||||
|
toughness=5
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Knight of Dusk
|
||||||
|
text={B}{B}: Destroy target creature blocking Knight of Dusk.
|
||||||
|
mana={1}{B}{B}
|
||||||
|
type=Creature
|
||||||
|
subtype=Human Knight
|
||||||
|
power=2
|
||||||
|
toughness=2
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Mind Bend
|
||||||
|
text=Change the text of target permanent by replacing all instances of one color word with another or one basic land type with another. (For example, you may change "nonblack creature" to "nongreen creature" or "forestwalk" to "islandwalk." This effect lasts indefinitely.)
|
||||||
|
mana={U}
|
||||||
|
type=Instant
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Pariah
|
||||||
|
text=Enchant creature -- All damage that would be dealt to you is dealt to enchanted creature instead.
|
||||||
|
mana={2}{W}
|
||||||
|
type=Enchantment
|
||||||
|
subtype=Aura
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Pithing Needle
|
||||||
|
text=As Pithing Needle enters the battlefield, name a card. -- Activated abilities of sources with the chosen name can't be activated unless they're mana abilities.
|
||||||
|
mana={1}
|
||||||
|
type=Artifact
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Rootwater Matriarch
|
||||||
|
text={T}: Gain control of target creature for as long as that creature is enchanted.
|
||||||
|
mana={2}{U}{U}
|
||||||
|
type=Creature
|
||||||
|
subtype=Merfolk
|
||||||
|
power=2
|
||||||
|
toughness=3
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Shunt
|
||||||
|
text=Change the target of target spell with a single target.
|
||||||
|
mana={1}{R}{R}
|
||||||
|
type=Instant
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Story Circle
|
||||||
|
text=As Story Circle enters the battlefield, choose a color. -- {W}: The next time a source of your choice of the chosen color would deal damage to you this turn, prevent that damage.
|
||||||
|
mana={1}{W}{W}
|
||||||
|
type=Enchantment
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Telepathy
|
||||||
|
text=Your opponents play with their hands revealed.
|
||||||
|
mana={U}
|
||||||
|
type=Enchantment
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Time Stop
|
||||||
|
text=End the turn. (Exile all spells and abilities on the stack, including this card. The player whose turn it is discards down to his or her maximum hand size. Damage wears off, and "this turn" and "until end of turn" effects end.)
|
||||||
|
mana={4}{U}{U}
|
||||||
|
type=Instant
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
name=Warp World
|
||||||
|
text=Each player shuffles all permanents he or she owns into his or her library, then reveals that many cards from the top of his or her library. Each player puts all artifact, creature, and land cards revealed this way onto the battlefield, then does the same for enchantment cards, then puts all cards revealed this way that weren't put onto the battlefield on the bottom of his or her library.
|
||||||
|
mana={5}{R}{R}{R}
|
||||||
|
type=Sorcery
|
||||||
|
[/card]
|
||||||