Compare commits
1225 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d7838829ad | |||
| cea45370a6 | |||
| 2234a508c3 | |||
| 37ce334688 | |||
| 2abb218164 | |||
| c8f763173d | |||
| 81d4b3d84f | |||
| 8d740c6bc1 | |||
| d3379c9c08 | |||
| 89cdeead88 | |||
| 17d6860505 | |||
| bc9142ad6e | |||
| 6c9c770f2d | |||
| ed330fa70c | |||
| 7bce2a19e2 | |||
| 60ca9e05c0 | |||
| f383d0b8a5 | |||
| b17eb2c870 | |||
| d3c0e397b6 | |||
| a72c35a693 | |||
| d0d7554b1d | |||
| cf9f6ed474 | |||
| eb8da4d4b2 | |||
| a858ed405f | |||
| 8f432718cf | |||
| f1ee227b84 | |||
| 8c031585cf | |||
| 74ddb33239 | |||
| a00919cc02 | |||
| 6fe1e4d351 | |||
| f6274dc914 | |||
| 783bcf1142 | |||
| b9d6410aba | |||
| b35e503a0f | |||
| 024e015dfc | |||
| dd844fc25e | |||
| c60f8787d1 | |||
| 4bdc1fdfe1 | |||
| f6199719fd | |||
| 2b7baf7fc8 | |||
| 5184132e8b | |||
| 3a38e7f4ab | |||
| 17fdc5bc9f | |||
| 0b5f375df6 | |||
| f982124209 | |||
| 177541b30c | |||
| 2ff2d4ac79 | |||
| 77c48dc1d5 | |||
| 91d19e2852 | |||
| 69885cf90a | |||
| 6229de7c55 | |||
| 7c8b634086 | |||
| 7a6c4b2c15 | |||
| eaaa4d783b | |||
| 4c00dfb3b6 | |||
| fe1a89e67a | |||
| 5dbe6f8c9c | |||
| 0fce1c591f | |||
| d9e3101212 | |||
| 21b5308420 | |||
| 0d31ec5b21 | |||
| 65bf650868 | |||
| e3aff3c23a | |||
| 1444ed6b7c | |||
| 1f98173197 | |||
| b7c6725b44 | |||
| f9e0746e1c | |||
| b2c55e307c | |||
| 99033e3fb2 | |||
| 053f202f32 | |||
| 991625dea4 | |||
| 0ca310da54 | |||
| d40d6f319e | |||
| 3a8d70ff27 | |||
| 1aed1c1517 | |||
| a801069a3a | |||
| e67078355a | |||
| 0d2e4af2a3 | |||
| 3e7ef8c77c | |||
| b09763d89e | |||
| bf3d35463f | |||
| a753bb0c1b | |||
| d2ea81bdbc | |||
| d4b663220f | |||
| f4353fb0e9 | |||
| 3ec955bf2c | |||
| 68d21ddd23 | |||
| 16e6df9503 | |||
| 7c696ac213 | |||
| d18232df10 | |||
| d6a1a8eda8 | |||
| ced2c85076 | |||
| 6ef9ecc147 | |||
| c704dfbfb2 | |||
| d751ed3540 | |||
| 1202ea609e | |||
| 252e66736a | |||
| 42f2c34a46 | |||
| c78e90a5b5 | |||
| a52cd305b7 | |||
| 6a00c0ad1d | |||
| e6c1f652db | |||
| 48bdc6c951 | |||
| 939dc20855 | |||
| 8c39eac856 | |||
| 272199dced | |||
| cab90b8fe2 | |||
| d5a8b80f5a | |||
| 4f3a179be4 | |||
| 519c90dd9d | |||
| 3d46b41efc | |||
| fbf1f9e1e0 | |||
| d0cd6e8b21 | |||
| 90c51fbb2d | |||
| edf7714f0c | |||
| 77241ee496 | |||
| ad0e8383e4 | |||
| 795debeb0d | |||
| b7a7efd9db | |||
| d005aefdc7 | |||
| 30647615f2 | |||
| 3ee3aaf7d8 | |||
| a2403e4eee | |||
| 3e618c062a | |||
| b1bc13cb0d | |||
| fe60f5fe81 | |||
| 7bf463c7ea | |||
| e1df4e5072 | |||
| 1b860218e0 | |||
| 75347a2f37 | |||
| 29985718a7 | |||
| 8cf2b7ab69 | |||
| a99eaac35d | |||
| c4eb931192 | |||
| a6a053e10e | |||
| ad26450151 | |||
| e4f5d7784a | |||
| 023816aa65 | |||
| bf6439db00 | |||
| 1b320d5325 | |||
| 6d872ed176 | |||
| 00ce669edb | |||
| 61dc3013f4 | |||
| c4ba879382 | |||
| 495e5f1429 | |||
| 827f5a71bc | |||
| 573c72f72d | |||
| 612be9737d | |||
| 4bc339e82b | |||
| 668fc41862 | |||
| 457b8c3bf2 | |||
| 135f2a1e45 | |||
| 2d9cab915a | |||
| 22d8d16b71 | |||
| 453906e350 | |||
| 5e16e0d1ba | |||
| 1c09918225 | |||
| 251e1634f7 | |||
| 727d4579a0 | |||
| 52e3177ef2 | |||
| fc40971dc7 | |||
| ccc26f400d | |||
| 210a250dce | |||
| a2594f1fb7 | |||
| 587155353c | |||
| 2b398b425d | |||
| 67c7102687 | |||
| 6212af0f48 | |||
| 5688b28981 | |||
| c162eff8cf | |||
| 60e6d314e0 | |||
| 7cf722114b | |||
| 8645cb9e1e | |||
| 275eb9e06e | |||
| 60b4bb31f5 | |||
| a5eb2eba37 | |||
| a00cf2a1d1 | |||
| b863188c3c | |||
| 21778de9fb | |||
| c81eecf6d2 | |||
| 402323a990 | |||
| 75b335e59c | |||
| 9f69336c94 | |||
| 331e54a732 | |||
| 3d25630dd6 | |||
| 5b652ba688 | |||
| c60df6c99d | |||
| 8bef671a70 | |||
| 9df8e90ab6 | |||
| 45d7cecaf3 | |||
| 730c8479f9 | |||
| 1dca08a33b | |||
| 233cec7a9f | |||
| 08f69dc832 | |||
| 464a6ff1b8 | |||
| c664760359 | |||
| f180b8cc56 | |||
| 044bbb3d4b | |||
| c4884e4715 | |||
| 253be9e9bd | |||
| db517858fa | |||
| 923a8e8fd9 | |||
| 8d395620a1 | |||
| a547591608 | |||
| 601a4432dc | |||
| ca7c8f5cf9 | |||
| f44ad43413 | |||
| 1ec448daef | |||
| adee84d60f | |||
| a46786eb28 | |||
| 5c7b4b7618 | |||
| bdcb10a54f | |||
| 6083ad76d6 | |||
| b66674492b | |||
| 0f0e627cf5 | |||
| 83e7bfffd0 | |||
| 28b1c0e86f | |||
| d0e4aa635b | |||
| a82a2e3571 | |||
| 68161b2aaa | |||
| 4e7463c77e | |||
| 8ab7212aa2 | |||
| 16d989e8ca | |||
| 0c8e51693a | |||
| 9f4e7fb7b2 | |||
| 9dd5807cae | |||
| 7441ae2e8b | |||
| c8869f4048 | |||
| 21440c977d | |||
| 06ccc923ea | |||
| c82fc3b5ce | |||
| 7a19ae8f40 | |||
| 43be15e832 | |||
| 4ce2a5c36e | |||
| 82e53a8c39 | |||
| dcc7e23b84 | |||
| 54e4d881a7 | |||
| 83f8d1c5d7 | |||
| cf738e76d3 | |||
| 744e380df9 | |||
| 8970fa673b | |||
| 88e09bbd05 | |||
| 7d86578152 | |||
| 6fd6f9061c | |||
| ba918b27ee | |||
| 0b90a471d6 | |||
| 24fd17ecf8 | |||
| 06ec97676e | |||
| 4e4752856b | |||
| bc79115985 | |||
| 6ecd762d18 | |||
| 0fa1f04e71 | |||
| 225be4d9aa | |||
| 29b89ba562 | |||
| 7d51b985a6 | |||
| 91bfa11a4f | |||
| 46834a6ee9 | |||
| 07119b88f6 | |||
| 95af76a3b2 | |||
| 0132f7aa5e | |||
| 4df34c82c2 | |||
| 50d49e47e7 | |||
| b29c37eb25 | |||
| c7d09d8389 | |||
| 87ce6df145 | |||
| f5a20110c4 | |||
| 264183a42a | |||
| af0de566fe | |||
| 480adfe83a | |||
| ce5b07b5b1 | |||
| 09098893e6 | |||
| 414d99525d | |||
| 4f42ddadb5 | |||
| 901a7ca984 | |||
| d3feccff75 | |||
| ccd17d32d0 | |||
| 5c67d11aa6 | |||
| 7a529bac6d | |||
| 2c62cfd487 | |||
| a27216c317 | |||
| 8315acbe86 | |||
| 7a2f23db45 | |||
| 711f52e5ce | |||
| 91f50009e1 | |||
| 0cf8c1a970 | |||
| 2750b34b4f | |||
| b023dd89b6 | |||
| 9504027fdc | |||
| 5c7528dbcf | |||
| e856538259 | |||
| 1749330e8a | |||
| 893e64e4f7 | |||
| 169467158a | |||
| ab0a5496b0 | |||
| 0c4deea3ed | |||
| dd785a872e | |||
| c8603204ac | |||
| ae81568463 | |||
| 2fe9924fe5 | |||
| 818233213e | |||
| d9019c0808 | |||
| fdaed6503a | |||
| e10213a373 | |||
| 34732a5f54 | |||
| d8d6025652 | |||
| 01117f4cb7 | |||
| a25448cde7 | |||
| ef4b18b394 | |||
| 683b2fbed8 | |||
| cdfadec38b | |||
| 7b434f33e8 | |||
| 29f1420abc | |||
| 39884d9711 | |||
| a5c9f877f7 | |||
| c603765908 | |||
| a0b4a1f77c | |||
| e0a2a45037 | |||
| 4c6f5126a6 | |||
| 50da2fef42 | |||
| 9dfd513ad3 | |||
| 30622010df | |||
| f4d9de9490 | |||
| 1092d4121a | |||
| 2ec4b78a8a | |||
| 1b88f7d3f9 | |||
| 2ac3ec6f09 | |||
| 73138d2176 | |||
| 7cb0d8b843 | |||
| 1dc5c48ff6 | |||
| 42754fd83c | |||
| 301de0f6f7 | |||
| 9be1d44788 | |||
| 7328c45013 | |||
| 3d9526a1dd | |||
| 1b8157ef0e | |||
| 8d20fd6483 | |||
| 66741957c3 | |||
| eb7d8850f4 | |||
| 934b9d2856 | |||
| 0af443b753 | |||
| 41e160ae34 | |||
| 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 | |||
| 37987ddb57 | |||
| 9568fe7d4d |
@@ -1,4 +1,5 @@
|
|||||||
language: cpp
|
language: cpp
|
||||||
|
dist: trusty
|
||||||
branches:
|
branches:
|
||||||
except:
|
except:
|
||||||
- latest-master
|
- latest-master
|
||||||
@@ -9,16 +10,16 @@ before_install:
|
|||||||
- export BUILD_Qt=YES
|
- export BUILD_Qt=YES
|
||||||
- export BUILD_MAC=NO
|
- export BUILD_MAC=NO
|
||||||
# Only building on Mac when not handling pull request
|
# Only building on Mac when not handling pull request
|
||||||
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
# - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||||
export BUILD_MAC=YES;
|
# export BUILD_MAC=YES;
|
||||||
fi
|
# 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://superb-sea2.dl.sourceforge.net/project/minpspw/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma;
|
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
|
fi
|
||||||
# Building for Qt here
|
# Building for Qt here
|
||||||
- if [ "$BUILD_Qt" == "YES" ]; then
|
- if [ "$BUILD_Qt" == "YES" ]; then
|
||||||
@@ -31,9 +32,11 @@ before_install:
|
|||||||
# 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
|
||||||
wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv &&
|
sudo dpkg --add-architecture i386 && sudo apt-get update &&
|
||||||
wget http://dl.google.com/android/android-sdk_r24.3.4-linux.tgz -nv;
|
sudo apt-get install -qq --force-yes libgd2-xpm-dev libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 jq ant; fi &&
|
||||||
|
wget https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip -nv &&
|
||||||
|
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz -nv;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@@ -41,21 +44,16 @@ install:
|
|||||||
tar -x --xz -f sdk.lzma;
|
tar -x --xz -f sdk.lzma;
|
||||||
fi
|
fi
|
||||||
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
||||||
tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 &&
|
unzip android-ndk-r22-linux-x86_64.zip &&
|
||||||
tar -zxf android-sdk_r24.3.4-linux.tgz &&
|
tar -zxf android-sdk_r24.4.1-linux.tgz &&
|
||||||
$ANDROID list sdk --extended -a &&
|
$ANDROID list sdk --extended -a &&
|
||||||
echo yes | $ANDROID update sdk -a -t tools,platform-tools,build-tools-23.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-23 --no-ui --force --no-https;
|
||||||
fi
|
fi
|
||||||
|
- sudo python -m easy_install --upgrade pyOpenSSL
|
||||||
- sudo pip install pyjavaproperties
|
- sudo pip install pyjavaproperties
|
||||||
- sudo pip install github3.py
|
- sudo pip install github3.py
|
||||||
- sudo pip install cpp-coveralls
|
- sudo pip install cpp-coveralls
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- secure: "EBzr1+qjQsOhn0s+tcFmXR1jP9B0xiOSXuXbRXWZ1OEHNvp8+A5/pS84LYVFlaZqmxr5dApxvPtwhgLIUbQ3EPXm8LpC3KgSD4dS+9/QMbxhe5TK4oczgFRGcDTMJQZsCzhOh7hp3tbcbJg5Gp+VT7aFjFQSHDGwhzSJXsXwh/8="
|
|
||||||
- secure: "X5dTQfofqAutnXxmu11Ep2MQ5QYnMN8m0AITRtwymhEF2UclcOudI1+skPtuhAGbWQnSO+lhunV3cvMfw2/Ml3k/VDz6VdFSKFrzAu7ja1VLJfcxr7chi0s8q30pVBb66tGydjIBac3B+RQyqgmZQW1frbRrhC/kPFQ6wPWOJdQ="
|
|
||||||
- secure: "T97NUPnxCpVZ/c5HH0zfo0FO3DPSRMSmze58ubW5EUTZOjAMtEt+OFdsrNZvUTCugUj2M1agtonZbAbczpaAL+lgZcHDgXgWMkfO0pMnsWX1yyCNqMuE/iTMpJr/xsLQeyWlftWjJLsseQU45abZsd1XVmda/G+ZhrDLF1y55SA="
|
|
||||||
|
|
||||||
script: "tools/travis-script.sh"
|
script: "tools/travis-script.sh"
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
@@ -63,3 +61,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
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace boost {
|
|||||||
|
|
||||||
enum xtime_clock_types
|
enum xtime_clock_types
|
||||||
{
|
{
|
||||||
TIME_UTC=1
|
TIME_UTC_=1
|
||||||
// TIME_TAI,
|
// TIME_TAI,
|
||||||
// TIME_MONOTONIC,
|
// TIME_MONOTONIC,
|
||||||
// TIME_PROCESS,
|
// TIME_PROCESS,
|
||||||
@@ -68,7 +68,7 @@ inline xtime get_xtime(boost::system_time const& abs_time)
|
|||||||
|
|
||||||
inline int xtime_get(struct xtime* xtp, int clock_type)
|
inline int xtime_get(struct xtime* xtp, int clock_type)
|
||||||
{
|
{
|
||||||
if (clock_type == TIME_UTC)
|
if (clock_type == TIME_UTC_)
|
||||||
{
|
{
|
||||||
*xtp=get_xtime(get_system_time());
|
*xtp=get_xtime(get_system_time());
|
||||||
return clock_type;
|
return clock_type;
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ namespace boost
|
|||||||
cond.timed_wait(lock, xt);
|
cond.timed_wait(lock, xt);
|
||||||
# endif
|
# endif
|
||||||
xtime cur;
|
xtime cur;
|
||||||
xtime_get(&cur, TIME_UTC);
|
xtime_get(&cur, TIME_UTC_);
|
||||||
if (xtime_cmp(xt, cur) <= 0)
|
if (xtime_cmp(xt, cur) <= 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -365,7 +365,7 @@ namespace boost
|
|||||||
BOOST_VERIFY(!pthread_yield());
|
BOOST_VERIFY(!pthread_yield());
|
||||||
# else
|
# else
|
||||||
xtime xt;
|
xtime xt;
|
||||||
xtime_get(&xt, TIME_UTC);
|
xtime_get(&xt, TIME_UTC_);
|
||||||
sleep(xt);
|
sleep(xt);
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ const int NANOSECONDS_PER_MICROSECOND = 1000;
|
|||||||
inline void to_time(int milliseconds, boost::xtime& xt)
|
inline void to_time(int milliseconds, boost::xtime& xt)
|
||||||
{
|
{
|
||||||
int res = 0;
|
int res = 0;
|
||||||
res = boost::xtime_get(&xt, boost::TIME_UTC);
|
res = boost::xtime_get(&xt, boost::TIME_UTC_);
|
||||||
BOOST_ASSERT(res == boost::TIME_UTC);
|
BOOST_ASSERT(res == boost::TIME_UTC_);
|
||||||
|
|
||||||
xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
|
xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
|
||||||
xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
|
xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
|
||||||
@@ -57,8 +57,8 @@ inline void to_timespec_duration(const boost::xtime& xt, timespec& ts)
|
|||||||
{
|
{
|
||||||
boost::xtime cur;
|
boost::xtime cur;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
res = boost::xtime_get(&cur, boost::TIME_UTC);
|
res = boost::xtime_get(&cur, boost::TIME_UTC_);
|
||||||
BOOST_ASSERT(res == boost::TIME_UTC);
|
BOOST_ASSERT(res == boost::TIME_UTC_);
|
||||||
|
|
||||||
if (boost::xtime_cmp(xt, cur) <= 0)
|
if (boost::xtime_cmp(xt, cur) <= 0)
|
||||||
{
|
{
|
||||||
@@ -88,8 +88,8 @@ inline void to_duration(boost::xtime xt, int& milliseconds)
|
|||||||
{
|
{
|
||||||
boost::xtime cur;
|
boost::xtime cur;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
res = boost::xtime_get(&cur, boost::TIME_UTC);
|
res = boost::xtime_get(&cur, boost::TIME_UTC_);
|
||||||
BOOST_ASSERT(res == boost::TIME_UTC);
|
BOOST_ASSERT(res == boost::TIME_UTC_);
|
||||||
|
|
||||||
if (boost::xtime_cmp(xt, cur) <= 0)
|
if (boost::xtime_cmp(xt, cur) <= 0)
|
||||||
milliseconds = 0;
|
milliseconds = 0;
|
||||||
@@ -110,8 +110,8 @@ inline void to_microduration(boost::xtime xt, int& microseconds)
|
|||||||
{
|
{
|
||||||
boost::xtime cur;
|
boost::xtime cur;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
res = boost::xtime_get(&cur, boost::TIME_UTC);
|
res = boost::xtime_get(&cur, boost::TIME_UTC_);
|
||||||
BOOST_ASSERT(res == boost::TIME_UTC);
|
BOOST_ASSERT(res == boost::TIME_UTC_);
|
||||||
|
|
||||||
if (boost::xtime_cmp(xt, cur) <= 0)
|
if (boost::xtime_cmp(xt, cur) <= 0)
|
||||||
microseconds = 0;
|
microseconds = 0;
|
||||||
|
|||||||
@@ -1,6 +1,37 @@
|
|||||||
# 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
|
#### 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:* Sorted Primitives and Cleanup Tabs [#\727] (https://github.com/WagicProject/wagic/pull/719) ([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__
|
||||||
|
|||||||
@@ -474,7 +474,7 @@
|
|||||||
|
|
||||||
#ifndef PNG_VERSION_INFO_ONLY
|
#ifndef PNG_VERSION_INFO_ONLY
|
||||||
/* include the compression library's header */
|
/* include the compression library's header */
|
||||||
#include "zlib.h"
|
#include "../include/zlib.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* include all user configurable info, including optional assembler routines */
|
/* include all user configurable info, including optional assembler routines */
|
||||||
|
|||||||
@@ -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,8 +83,8 @@ 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 -DNETWORK_SUPPORT $(FMOD)
|
||||||
CXXFLAGS += $(INCDIR)
|
CXXFLAGS += $(INCDIR)
|
||||||
LIBDIR = lib/linux
|
LIBDIR = lib/linux
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ using namespace std;
|
|||||||
template <class T>
|
template <class T>
|
||||||
std::string ToHex(T* pointer)
|
std::string ToHex(T* pointer)
|
||||||
{
|
{
|
||||||
std::ostringstream stream;
|
std::ostringstream stream;
|
||||||
stream << hex << showbase << setfill('0') << setw(8) << (uint64_t) pointer;
|
stream << hex << showbase << setfill('0') << setw(8) << (uint64_t) pointer;
|
||||||
return stream.str();
|
return stream.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
@@ -42,9 +42,9 @@ std::string ToHex(T* pointer)
|
|||||||
#else // CAPTURE_STDERR
|
#else // CAPTURE_STDERR
|
||||||
#define DebugTrace(inString) \
|
#define DebugTrace(inString) \
|
||||||
{ \
|
{ \
|
||||||
std::ostringstream stream; \
|
std::ostringstream stream; \
|
||||||
stream << inString; \
|
stream << inString; \
|
||||||
qDebug("%s", stream.str().c_str()); \
|
qDebug("%s", stream.str().c_str()); \
|
||||||
}
|
}
|
||||||
#endif // CAPTURE_STDERR
|
#endif // CAPTURE_STDERR
|
||||||
|
|
||||||
@@ -52,16 +52,16 @@ std::string ToHex(T* pointer)
|
|||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
#define DebugTrace(inString) \
|
#define DebugTrace(inString) \
|
||||||
{ \
|
{ \
|
||||||
std::ostringstream stream; \
|
std::ostringstream stream; \
|
||||||
stream << inString; \
|
stream << inString; \
|
||||||
__android_log_write(ANDROID_LOG_DEBUG, "Wagic", stream.str().c_str());\
|
__android_log_write(ANDROID_LOG_DEBUG, "Wagic", stream.str().c_str());\
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define DebugTrace(inString) \
|
#define DebugTrace(inString) \
|
||||||
{ \
|
{ \
|
||||||
std::ostringstream stream; \
|
std::ostringstream stream; \
|
||||||
stream << inString << std::endl; \
|
stream << inString << std::endl; \
|
||||||
OutputDebugStringA(stream.str().c_str()); \
|
OutputDebugStringA(stream.str().c_str()); \
|
||||||
}
|
}
|
||||||
#endif // QT_CONFIG
|
#endif // QT_CONFIG
|
||||||
#endif // Win32, Linux
|
#endif // Win32, Linux
|
||||||
@@ -71,7 +71,7 @@ std::string ToHex(T* pointer)
|
|||||||
#ifndef DebugTrace
|
#ifndef DebugTrace
|
||||||
#define DebugTrace(inString) \
|
#define DebugTrace(inString) \
|
||||||
{ \
|
{ \
|
||||||
std::cerr << inString << std::endl; \
|
std::cerr << inString << std::endl; \
|
||||||
}
|
}
|
||||||
#endif //DEBUG
|
#endif //DEBUG
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -394,6 +394,7 @@ class JGE
|
|||||||
void SetJNIEnv(JNIEnv * env, jclass cls);
|
void SetJNIEnv(JNIEnv * env, jclass cls);
|
||||||
void sendJNICommand(std::string command);
|
void sendJNICommand(std::string command);
|
||||||
std::string getFileSystemLocation();
|
std::string getFileSystemLocation();
|
||||||
|
std::string getFileUserFolderPath();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ const int kInfoMenuID = -200;
|
|||||||
const int kRandomPlayerMenuID = -11;
|
const int kRandomPlayerMenuID = -11;
|
||||||
const int kRandomAIPlayerMenuID = -12;
|
const int kRandomAIPlayerMenuID = -12;
|
||||||
const int kEvilTwinMenuID = -14;
|
const int kEvilTwinMenuID = -14;
|
||||||
|
const int kCommanderMenuID = -33;
|
||||||
|
|
||||||
class JGuiListener
|
class JGuiListener
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -126,10 +131,11 @@ JFileSystem::JFileSystem(const string & _userPath, const string & _systemPath)
|
|||||||
systemPath = [[documentsDirectory stringByAppendingString: @"/Res/"] cStringUsingEncoding:1];
|
systemPath = [[documentsDirectory stringByAppendingString: @"/Res/"] cStringUsingEncoding:1];
|
||||||
|
|
||||||
#elif defined (ANDROID)
|
#elif defined (ANDROID)
|
||||||
userPath = JGE::GetInstance()->getFileSystemLocation();
|
userPath = JGE::GetInstance()->getFileUserFolderPath();
|
||||||
systemPath = "";
|
systemPath = JGE::GetInstance()->getFileSystemLocation();
|
||||||
|
|
||||||
DebugTrace("User path " << userPath);
|
DebugTrace("User path " << userPath);
|
||||||
|
DebugTrace("System path " << systemPath);
|
||||||
#elif defined (QT_CONFIG)
|
#elif defined (QT_CONFIG)
|
||||||
|
|
||||||
QDir sysDir(RESDIR);
|
QDir sysDir(RESDIR);
|
||||||
@@ -254,6 +260,7 @@ void JFileSystem::clearZipCache()
|
|||||||
|
|
||||||
bool JFileSystem::AttachZipFile(const string &zipfile, char *password /* = NULL */)
|
bool JFileSystem::AttachZipFile(const string &zipfile, char *password /* = NULL */)
|
||||||
{
|
{
|
||||||
|
#ifndef WIN32
|
||||||
if (mZipAvailable && mZipFile.is_open())
|
if (mZipAvailable && mZipFile.is_open())
|
||||||
{
|
{
|
||||||
if (mZipFileName != zipfile)
|
if (mZipFileName != zipfile)
|
||||||
@@ -261,7 +268,7 @@ bool JFileSystem::AttachZipFile(const string &zipfile, char *password /* = NULL
|
|||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
mZipFileName = zipfile;
|
mZipFileName = zipfile;
|
||||||
mPassword = password;
|
mPassword = password;
|
||||||
|
|
||||||
|
|||||||
@@ -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,7 +257,8 @@ u32 JGE::UnbindKey(LocalKeySym sym, JButton button)
|
|||||||
keyBinds.erase(er);
|
keyBinds.erase(er);
|
||||||
}
|
}
|
||||||
else ++it;
|
else ++it;
|
||||||
return keyBinds.size();
|
}
|
||||||
|
return keyBinds.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 JGE::UnbindKey(LocalKeySym sym)
|
u32 JGE::UnbindKey(LocalKeySym sym)
|
||||||
@@ -666,7 +668,7 @@ string JGE::getFileSystemLocation()
|
|||||||
if (env == NULL)
|
if (env == NULL)
|
||||||
{
|
{
|
||||||
DebugTrace("An Error Occurred in getting the JNI Environment whie trying to get the system folder location. Defaulting to /mnt/sdcard/net.wagic.app/Wagic");
|
DebugTrace("An Error Occurred in getting the JNI Environment whie trying to get the system folder location. Defaulting to /mnt/sdcard/net.wagic.app/Wagic");
|
||||||
return "/mnt/sdcard/Wagic";
|
return "/mnt/sdcard/Wagic/Res";
|
||||||
};
|
};
|
||||||
|
|
||||||
jclass jniClass = env->FindClass("org/libsdl/app/SDLActivity");
|
jclass jniClass = env->FindClass("org/libsdl/app/SDLActivity");
|
||||||
@@ -675,7 +677,36 @@ string JGE::getFileSystemLocation()
|
|||||||
if (methodId == 0)
|
if (methodId == 0)
|
||||||
{
|
{
|
||||||
DebugTrace("An Error Occurred in getting the JNI methodID for getSystemFolderPath. Defaulting to /mnt/sdcard/Wagic");
|
DebugTrace("An Error Occurred in getting the JNI methodID for getSystemFolderPath. Defaulting to /mnt/sdcard/Wagic");
|
||||||
return "/mnt/sdcard/Wagic";
|
return "/mnt/sdcard/Wagic/Res";
|
||||||
|
};
|
||||||
|
|
||||||
|
jstring systemPath = (jstring) env->CallStaticObjectMethod(jniClass, methodId);
|
||||||
|
|
||||||
|
// Now convert the Java String to C++ char array
|
||||||
|
const char* cstr = env->GetStringUTFChars(systemPath, 0);
|
||||||
|
string retVal (cstr);
|
||||||
|
env->ReleaseStringUTFChars(systemPath, cstr);
|
||||||
|
env->DeleteLocalRef(systemPath);
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
string JGE::getFileUserFolderPath()
|
||||||
|
{
|
||||||
|
JNIEnv * env = getJNIEnv();
|
||||||
|
if (env == NULL)
|
||||||
|
{
|
||||||
|
DebugTrace("An Error Occurred in getting the JNI Environment whie trying to get the system folder location. Defaulting to /mnt/sdcard/net.wagic.app/Wagic");
|
||||||
|
return "/mnt/sdcard/Wagic/User";
|
||||||
|
};
|
||||||
|
|
||||||
|
jclass jniClass = env->FindClass("org/libsdl/app/SDLActivity");
|
||||||
|
jmethodID methodId = env->GetStaticMethodID( jniClass, "getUserFolderPath", "()Ljava/lang/String;");
|
||||||
|
|
||||||
|
if (methodId == 0)
|
||||||
|
{
|
||||||
|
DebugTrace("An Error Occurred in getting the JNI methodID for getSystemFolderPath. Defaulting to /mnt/sdcard/Wagic");
|
||||||
|
return "/mnt/sdcard/Wagic/User";
|
||||||
};
|
};
|
||||||
|
|
||||||
jstring systemPath = (jstring) env->CallStaticObjectMethod(jniClass, methodId);
|
jstring systemPath = (jstring) env->CallStaticObjectMethod(jniClass, methodId);
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ bool JGuiController::CheckUserInput(JButton key)
|
|||||||
mObjects[mCurr]->Entering();
|
mObjects[mCurr]->Entering();
|
||||||
}
|
}
|
||||||
mEngine->LeftClickedProcessed();
|
mEngine->LeftClickedProcessed();
|
||||||
mEngine->ResetInput();
|
mEngine->ResetInput();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
mEngine->LeftClickedProcessed();
|
mEngine->LeftClickedProcessed();
|
||||||
|
|||||||
@@ -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/");
|
||||||
|
|||||||
@@ -18,6 +18,11 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#ifndef WIN32
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#if (defined FORCE_GLES)
|
#if (defined FORCE_GLES)
|
||||||
#undef GL_ES_VERSION_2_0
|
#undef GL_ES_VERSION_2_0
|
||||||
@@ -53,6 +58,7 @@ JGameLauncher* g_launcher = NULL;
|
|||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
JNIEnv * mJNIEnv = NULL;
|
JNIEnv * mJNIEnv = NULL;
|
||||||
jclass * mJNIClass = NULL;
|
jclass * mJNIClass = NULL;
|
||||||
|
int SDL_ResumeSyncTime = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class SdlApp;
|
class SdlApp;
|
||||||
@@ -78,6 +84,7 @@ extern "C" void Java_org_libsdl_app_SDLActivity_nativeResume(
|
|||||||
{
|
{
|
||||||
if (!g_engine)
|
if (!g_engine)
|
||||||
return;
|
return;
|
||||||
|
SDL_ResumeSyncTime = 100000;
|
||||||
g_engine->Resume();
|
g_engine->Resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,8 +143,16 @@ public:
|
|||||||
if(!g_engine->IsPaused())
|
if(!g_engine->IsPaused())
|
||||||
OnEvent(&Event);
|
OnEvent(&Event);
|
||||||
}
|
}
|
||||||
if(!g_engine->IsPaused())
|
if(!g_engine->IsPaused()){
|
||||||
|
#ifdef ANDROID
|
||||||
|
// Fix for SDL crash on resuming Android app from background.
|
||||||
|
if(SDL_ResumeSyncTime){
|
||||||
|
usleep(SDL_ResumeSyncTime);
|
||||||
|
SDL_ResumeSyncTime = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
OnUpdate();
|
OnUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,17 +308,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:
|
||||||
|
|||||||
@@ -184,7 +184,13 @@ JMusic *JSoundSystem::LoadMusic(const char *fileName)
|
|||||||
const SLboolean req[2] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
|
const SLboolean req[2] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
|
||||||
result = (*engineEngine)->CreateAudioPlayer(engineEngine, &music->playerObject, &audioSrc, &audioSnk, 2, ids, req);
|
result = (*engineEngine)->CreateAudioPlayer(engineEngine, &music->playerObject, &audioSrc, &audioSnk, 2, ids, req);
|
||||||
DebugTrace("result " << result);
|
DebugTrace("result " << result);
|
||||||
|
|
||||||
|
if(result == SL_RESULT_MEMORY_FAILURE){
|
||||||
|
delete music;
|
||||||
|
mCurrentMusic = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// realize the player
|
// realize the player
|
||||||
result = (*music->playerObject)->Realize(music->playerObject, SL_BOOLEAN_FALSE);
|
result = (*music->playerObject)->Realize(music->playerObject, SL_BOOLEAN_FALSE);
|
||||||
DebugTrace("result " << result);
|
DebugTrace("result " << result);
|
||||||
@@ -303,6 +309,12 @@ JSample *JSoundSystem::LoadSample(const char *fileName)
|
|||||||
1, ids, req);
|
1, ids, req);
|
||||||
DebugTrace("result " << result);
|
DebugTrace("result " << result);
|
||||||
|
|
||||||
|
if(result == SL_RESULT_MEMORY_FAILURE){
|
||||||
|
delete sample;
|
||||||
|
mCurrentSample = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// realize the player
|
// realize the player
|
||||||
result = (*sample->playerObject)->Realize(sample->playerObject, SL_BOOLEAN_FALSE);
|
result = (*sample->playerObject)->Realize(sample->playerObject, SL_BOOLEAN_FALSE);
|
||||||
DebugTrace("result " << result);
|
DebugTrace("result " << result);
|
||||||
|
|||||||
@@ -96,7 +96,8 @@ hgeParticleSystem::hgeParticleSystem(hgeParticleSystemInfo *psi)
|
|||||||
{
|
{
|
||||||
//hge=hgeCreate(HGE_VERSION);
|
//hge=hgeCreate(HGE_VERSION);
|
||||||
|
|
||||||
memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
if (psi)
|
||||||
|
memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
||||||
|
|
||||||
vecLocation.x=vecPrevLocation.x=0.0f;
|
vecLocation.x=vecPrevLocation.x=0.0f;
|
||||||
vecLocation.y=vecPrevLocation.y=0.0f;
|
vecLocation.y=vecPrevLocation.y=0.0f;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,9 @@ JSocket::JSocket(string ipAddr)
|
|||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
unsigned int addr_dest = inet_addr(ipAddr.c_str());
|
unsigned int addr_dest = inet_addr(ipAddr.c_str());
|
||||||
hostentptr=gethostbyaddr((char*) &addr_dest, 4, AF_INET);
|
hostentptr = gethostbyaddr((char*) &addr_dest, 4, AF_INET);
|
||||||
|
if (hostentptr == NULL)
|
||||||
|
hostentptr = gethostbyname(ipAddr.c_str()); // Fix for Windows if IP Address cannot be resolved.
|
||||||
#elif LINUX
|
#elif LINUX
|
||||||
hostentptr = gethostbyname(ipAddr.c_str());
|
hostentptr = gethostbyname(ipAddr.c_str());
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -631,8 +631,8 @@ streamoff filesystem::CentralDirZipped(std::istream & File, std::streamoff begin
|
|||||||
std::streamoff eof = begin + size;
|
std::streamoff eof = begin + size;
|
||||||
|
|
||||||
// Look for the "end of central dir" header. Start minimum 22 bytes before end.
|
// Look for the "end of central dir" header. Start minimum 22 bytes before end.
|
||||||
if (! File.seekg(eof - 22, ios::beg))
|
if (! File.seekg(eof - 22, ios::beg))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
streamoff EndPos;
|
streamoff EndPos;
|
||||||
streamoff StartPos = File.tellg();
|
streamoff StartPos = File.tellg();
|
||||||
|
|||||||
@@ -258,8 +258,8 @@ inline void izfstream::open(const char * FilePath, filesystem * pFS) {
|
|||||||
if (pFS)
|
if (pFS)
|
||||||
m_pFS = pFS;
|
m_pFS = pFS;
|
||||||
|
|
||||||
if (m_pFS != NULL)
|
if (m_pFS != NULL)
|
||||||
m_pFS->Open(* this, FilePath);
|
m_pFS->Open(* this, FilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void izfstream::close() {
|
inline void izfstream::close() {
|
||||||
|
|||||||
@@ -76,8 +76,8 @@ bool zbuffer::use(std::streamoff Offset, std::streamoff Size)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
//Don't use a buffer already used;
|
//Don't use a buffer already used;
|
||||||
if (m_Used)
|
if (m_Used)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// adjust file position
|
// adjust file position
|
||||||
if (! m_ZipFile.seekg(Offset, ios::beg))
|
if (! m_ZipFile.seekg(Offset, ios::beg))
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#Wagic the Homebrew
|
#Wagic the Homebrew
|
||||||
|
|
||||||
|
|
||||||
[](https://travis-ci.org/WagicProject/wagic)
|
[](https://travis-ci.com/WagicProject/wagic)
|
||||||
[](https://ci.appveyor.com/project/xawotihs/wagic/branch/master)
|
[](https://ci.appveyor.com/project/xawotihs/wagic/branch/master)
|
||||||
[](https://coveralls.io/r/WagicProject/wagic?branch=master)
|
[](https://coveralls.io/r/WagicProject/wagic?branch=master)
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|
||||||
-
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
/gen
|
/gen
|
||||||
/bin
|
/bin
|
||||||
|
/libs
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,28 @@
|
|||||||
<?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="0201" android:versionName="@string/app_version" package="net.wagic.app">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
|
android:versionCode="0231"
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
android:installLocation="preferExternal"
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
android:versionName="@string/app_version"
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
package="net.wagic.app">
|
||||||
<application android:debuggable="false" android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
|
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
|
||||||
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:label="@string/app_name" android:name="org.libsdl.app.SDLActivity" android:screenOrientation="sensorLandscape">
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<intent-filter>
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<application android:icon="@drawable/icon"
|
||||||
</intent-filter>
|
android:label="@string/app_name"
|
||||||
</activity>
|
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
|
||||||
|
|
||||||
<activity android:configChanges="keyboard|keyboardHidden|orientation" android:name="com.google.ads.AdActivity" android:screenOrientation="sensorLandscape"/>
|
<activity android:debuggable="false"
|
||||||
</application>
|
android:configChanges="keyboard|keyboardHidden|orientation"
|
||||||
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10"/>
|
android:label="@string/app_name"
|
||||||
</manifest>
|
android:name="org.libsdl.app.SDLActivity"
|
||||||
|
android:screenOrientation="sensorLandscape">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
<uses-sdk android:minSdkVersion="10"
|
||||||
|
android:targetSdkVersion="29" />
|
||||||
|
</manifest>
|
||||||
|
|||||||
@@ -8,4 +8,4 @@
|
|||||||
# project structure.
|
# project structure.
|
||||||
|
|
||||||
# Project target.
|
# Project target.
|
||||||
target=android-10
|
target=android-23
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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
|
||||||
|
|
||||||
LOCAL_CFLAGS += -DLINUX -DANDROID -DSDL_CONFIG
|
LOCAL_CFLAGS += -DLINUX -DANDROID -DSDL_CONFIG -DNETWORK_SUPPORT
|
||||||
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
|
||||||
@@ -133,6 +133,7 @@ LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \
|
|||||||
$(MTG_PATH)/src/WFilter.cpp \
|
$(MTG_PATH)/src/WFilter.cpp \
|
||||||
$(MTG_PATH)/src/WFont.cpp \
|
$(MTG_PATH)/src/WFont.cpp \
|
||||||
$(MTG_PATH)/src/WGui.cpp \
|
$(MTG_PATH)/src/WGui.cpp \
|
||||||
|
$(MTG_PATH)/src/WParsedInt.cpp \
|
||||||
$(MTG_PATH)/src/WResourceManager.cpp \
|
$(MTG_PATH)/src/WResourceManager.cpp \
|
||||||
$(MTG_PATH)/src/DeckView.cpp \
|
$(MTG_PATH)/src/DeckView.cpp \
|
||||||
$(MTG_PATH)/src/CarouselDeckView.cpp \
|
$(MTG_PATH)/src/CarouselDeckView.cpp \
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
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-v7a
|
||||||
APP_STL := gnustl_static
|
#APP_ABI := x86 # mainly for emulators
|
||||||
|
APP_STL := c++_static
|
||||||
APP_MODULES := libpng libjpeg main SDL
|
APP_MODULES := libpng libjpeg main SDL
|
||||||
|
|
||||||
#APP_OPTIM is 'release' by default
|
#APP_OPTIM is 'release' by default
|
||||||
|
|||||||
@@ -11,4 +11,4 @@
|
|||||||
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
||||||
|
|
||||||
# Project target.
|
# Project target.
|
||||||
target=android-10
|
target=android-23
|
||||||
|
|||||||
|
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 |
@@ -4,6 +4,7 @@
|
|||||||
android:id="@+id/mainLayout"
|
android:id="@+id/mainLayout"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
|
android:keepScreenOn="true"
|
||||||
>
|
>
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
|
|||||||
@@ -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.20.1</string>
|
<string name="app_version">0.23.1</string>
|
||||||
<string name="info_text">Wagic v0.20.1\\nAll Rights Reserved.</string>
|
<string name="info_text">All Rights Reserved.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -11,14 +11,13 @@ import android.util.Log;
|
|||||||
|
|
||||||
public class DeckImporter
|
public class DeckImporter
|
||||||
{
|
{
|
||||||
|
|
||||||
public static String importDeck( File f, String mypath, String activePath )
|
public static String importDeck( File f, String mypath, String activePath )
|
||||||
{
|
{
|
||||||
String message = "";
|
String message = "";
|
||||||
String deck = "";
|
String deck = "";
|
||||||
String deckname = "";
|
String deckname = "";
|
||||||
String prefix = "#SB:";
|
String prefix = "";
|
||||||
int cardcount = 0;
|
int cardcount = 0;
|
||||||
if(f.exists() && !f.isDirectory())
|
if(f.exists() && !f.isDirectory())
|
||||||
{
|
{
|
||||||
deckname = f.getName();
|
deckname = f.getName();
|
||||||
@@ -36,91 +35,90 @@ public class DeckImporter
|
|||||||
while (scanner.hasNext())
|
while (scanner.hasNext())
|
||||||
{
|
{
|
||||||
String line = scanner.nextLine();
|
String line = scanner.nextLine();
|
||||||
line = line.trim();
|
line = line.trim();
|
||||||
if (!line.equals("") && cardcount < 61) // don't write out blank lines
|
if (line.equals("")) {
|
||||||
{
|
line = scanner.nextLine();
|
||||||
String[] slines = line.split("\\s+");
|
if (line.equals("")) {
|
||||||
String arranged = "";
|
line = scanner.nextLine();
|
||||||
for(int idx = 1; idx < slines.length; idx++)
|
prefix = "#SB:"; // Sideboard started from next card (we assumed that there are 2 blank lines from main deck and sideboard).
|
||||||
{
|
}
|
||||||
arranged += slines[idx] + " ";
|
}
|
||||||
}
|
if (!line.equals("")) // don't write out blank lines
|
||||||
if ((isNumeric(slines[0])) && arranged != null)
|
{
|
||||||
{
|
String[] slines = line.split("\\s+");
|
||||||
if (slines[1] != null && slines[1].startsWith("["))
|
String arranged = "";
|
||||||
{
|
for (int idx = 1; idx < slines.length; idx++)
|
||||||
arranged = arranged.substring(5);
|
{
|
||||||
slines[1] = slines[1].replaceAll("\\[", "").replaceAll("\\]","");
|
arranged += slines[idx] + " ";
|
||||||
deck += arranged + " (" + renameSet(slines[1]) + ") * " + slines[0] + "\n";
|
}
|
||||||
}
|
if ((isNumeric(slines[0])) && arranged != null)
|
||||||
else
|
{
|
||||||
{
|
if (slines[1] != null && slines[1].startsWith("["))
|
||||||
deck += arranged + "(*) * " + slines[0] + "\n";
|
{
|
||||||
}
|
arranged = arranged.substring(5);
|
||||||
cardcount += Integer.parseInt(slines[0]);
|
slines[1] = slines[1].replaceAll("\\[", "").replaceAll("\\]", "");
|
||||||
}
|
deck += prefix + arranged + " (" + renameSet(slines[1]) + ") * " + slines[0] + "\n";
|
||||||
}
|
} else
|
||||||
}
|
{
|
||||||
File profile = new File(activePath+"/Res/settings/options.txt");
|
deck += prefix + arranged + "(*) * " + slines[0] + "\n";
|
||||||
if(profile.exists() && !profile.isDirectory())
|
}
|
||||||
{
|
cardcount += Integer.parseInt(slines[0]);
|
||||||
String profileName = getActiveProfile(profile);
|
}
|
||||||
if(profileName != "Missing!")
|
}
|
||||||
{
|
}
|
||||||
File rootProfiles = new File(activePath+"/Res/profiles/"+profileName);
|
File profile = new File(activePath + "/User/settings/options.txt");
|
||||||
if(rootProfiles.exists() && rootProfiles.isDirectory())
|
String profileName = "Default";
|
||||||
{
|
if (profile.exists() && !profile.isDirectory())
|
||||||
//save deck
|
profileName = getActiveProfile(profile);
|
||||||
int countdeck = 1;
|
File rootDecks = null;
|
||||||
File[] files = rootProfiles.listFiles();
|
if (!profileName.equalsIgnoreCase("Default"))
|
||||||
for (int i = 0; i < files.length; i++)
|
rootDecks = new File(activePath + "/User/profiles/" + profileName);
|
||||||
{//check if there is available deck...
|
else
|
||||||
if(files[i].getName().startsWith("deck"))
|
rootDecks = new File(activePath + "/User/player/");
|
||||||
countdeck++;
|
if (rootDecks.exists() && rootDecks.isDirectory())
|
||||||
}
|
{
|
||||||
File toSave = new File(rootProfiles+"/deck"+countdeck+".txt");
|
//save deck
|
||||||
try
|
int countdeck = 1;
|
||||||
{
|
File[] files = rootDecks.listFiles();
|
||||||
FileOutputStream fop = new FileOutputStream(toSave);
|
for (int i = 0; i < files.length; i++)
|
||||||
|
{//check if there is available deck...
|
||||||
// if file doesn't exists, then create it
|
if (files[i].getName().startsWith("deck"))
|
||||||
if (!toSave.exists()) {
|
countdeck++;
|
||||||
toSave.createNewFile();
|
}
|
||||||
}
|
File toSave = new File(rootDecks + "/deck" + countdeck + ".txt");
|
||||||
// get the content in bytes
|
try
|
||||||
byte[] contentInBytes = deck.getBytes();
|
{
|
||||||
fop.write(contentInBytes);
|
FileOutputStream fop = new FileOutputStream(toSave);
|
||||||
fop.flush();
|
|
||||||
fop.close();
|
// if file doesn't exists, then create it
|
||||||
message = "Import Deck Success!\n"+cardcount+" total cards in this deck\n\n"+deck;
|
if (!toSave.exists())
|
||||||
}
|
{
|
||||||
catch (IOException e)
|
toSave.createNewFile();
|
||||||
{
|
}
|
||||||
message = e.getMessage();
|
// get the content in bytes
|
||||||
}
|
byte[] contentInBytes = deck.getBytes();
|
||||||
}
|
fop.write(contentInBytes);
|
||||||
else
|
fop.flush();
|
||||||
{
|
fop.close();
|
||||||
message = "Missing Folder!";
|
message = "The deck has been successfully imported as: " + toSave.getName() + "\n" + cardcount + " total cards in this deck\n\n" + deck;
|
||||||
}
|
} catch (IOException e)
|
||||||
}
|
{
|
||||||
}
|
message = e.getMessage();
|
||||||
else
|
}
|
||||||
{
|
} else
|
||||||
message = "Invalid Profile!";
|
{
|
||||||
}
|
message = "Problem opening decks folder: " + rootDecks.getAbsolutePath();
|
||||||
}
|
}
|
||||||
else
|
} else
|
||||||
{
|
{
|
||||||
message = "No errors, and file EMPTY";
|
message = "No errors, and file EMPTY";
|
||||||
}
|
}
|
||||||
}
|
} catch (IOException e)
|
||||||
catch(IOException e)
|
{
|
||||||
{
|
message = e.getMessage();
|
||||||
message = e.getMessage();
|
}
|
||||||
}
|
}
|
||||||
}
|
return message;
|
||||||
return message;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isNumeric(String input)
|
private static boolean isNumeric(String input)
|
||||||
@@ -135,7 +133,7 @@ public class DeckImporter
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getActiveProfile(File mypath)
|
private static String getActiveProfile(File mypath)
|
||||||
{
|
{
|
||||||
String name = "";
|
String name = "";
|
||||||
@@ -149,16 +147,16 @@ public class DeckImporter
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return "Missing!";
|
return "Default";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(IOException e)
|
catch(IOException e)
|
||||||
{
|
{
|
||||||
return "Missing!";
|
return "Default";
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String renameSet(String set)
|
private static String renameSet(String set)
|
||||||
{
|
{
|
||||||
if (set == "")
|
if (set == "")
|
||||||
@@ -278,5 +276,4 @@ public class DeckImporter
|
|||||||
else
|
else
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ 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>();
|
||||||
|
|
||||||
@@ -22,7 +23,7 @@ public class StorageOptions
|
|||||||
public static int count = 0;
|
public static int count = 0;
|
||||||
public static String defaultMountPoint;
|
public static String defaultMountPoint;
|
||||||
|
|
||||||
public static void determineStorageOptions()
|
public static void determineStorageOptions(android.content.Context mContext)
|
||||||
{
|
{
|
||||||
initializeMountPoints();
|
initializeMountPoints();
|
||||||
if (findForcemount()){
|
if (findForcemount()){
|
||||||
@@ -35,6 +36,16 @@ public class StorageOptions
|
|||||||
}
|
}
|
||||||
compareMountsWithVold();
|
compareMountsWithVold();
|
||||||
testAndCleanMountsList();
|
testAndCleanMountsList();
|
||||||
|
File[] externalStorageVolumes = mContext.getExternalFilesDirs("");
|
||||||
|
for(int i = 0; i < externalStorageVolumes.length; i++){
|
||||||
|
mMounts.add(externalStorageVolumes[i].getAbsolutePath());
|
||||||
|
}
|
||||||
|
for(int i = 0; i < mMounts.size(); i++){
|
||||||
|
for(int j = 0; j < mMounts.size(); j++){
|
||||||
|
if(i!=j && mMounts.get(i).startsWith(mMounts.get(j)))
|
||||||
|
mMounts.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
setProperties();
|
setProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,11 +88,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,11 +122,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,11 +155,11 @@ 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -174,15 +185,18 @@ public class StorageOptions
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Sometimes the two lists of mount points will be different. We only want those mount points that are in both list.
|
* Sometimes the two lists of mount points will be different. We only want those mount points that are in both list.
|
||||||
*
|
*
|
||||||
* 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.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (int i = 0; i < mMounts.size(); i++)
|
if (mVold.size() > 0)
|
||||||
{
|
{
|
||||||
String mount = mMounts.get(i);
|
for (int i = 0; i < mMounts.size(); i++)
|
||||||
if (!mVold.contains(mount))
|
{
|
||||||
mMounts.remove(i--);
|
String mount = mMounts.get(i);
|
||||||
|
if (!mVold.contains(mount))
|
||||||
|
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
|
||||||
@@ -204,9 +218,10 @@ public class StorageOptions
|
|||||||
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 (t == 0 && Build.VERSION.SDK_INT >= 16 && findForcemount())
|
||||||
{//if none is found lets force it for Jellybean and above...
|
{
|
||||||
|
//if none is found lets force it for Jellybean and above...
|
||||||
if (System.getenv("EXTERNAL_STORAGE") != null)
|
if (System.getenv("EXTERNAL_STORAGE") != null)
|
||||||
{
|
{
|
||||||
File root = new File(System.getenv("EXTERNAL_STORAGE"));
|
File root = new File(System.getenv("EXTERNAL_STORAGE"));
|
||||||
@@ -224,7 +239,7 @@ public class StorageOptions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (System.getenv("SECONDARY_STORAGE") != null)
|
if (System.getenv("SECONDARY_STORAGE") != null)
|
||||||
{
|
{
|
||||||
File root = new File(System.getenv("SECONDARY_STORAGE"));
|
File root = new File(System.getenv("SECONDARY_STORAGE"));
|
||||||
@@ -247,6 +262,7 @@ public class StorageOptions
|
|||||||
|
|
||||||
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.
|
||||||
*/
|
*/
|
||||||
@@ -258,21 +274,22 @@ public class StorageOptions
|
|||||||
for (String path : mMounts)
|
for (String path : mMounts)
|
||||||
{//with forcemount menu
|
{//with forcemount menu
|
||||||
if ("/mnt/sdcard".equalsIgnoreCase(path) || "/storage/sdcard0".equalsIgnoreCase(path))
|
if ("/mnt/sdcard".equalsIgnoreCase(path) || "/storage/sdcard0".equalsIgnoreCase(path))
|
||||||
mLabels.add("Internal SD " + "[" + path + "]");
|
mLabels.add("Internal SD " + "[" + path + "/]");
|
||||||
else if (path.contains("emulated"))
|
else if (path.contains("emulated"))
|
||||||
mLabels.add("Emulated SD " + " [" + path + "]");
|
mLabels.add("Emulated SD " + " [" + path + "/]");
|
||||||
else
|
else
|
||||||
mLabels.add("External SD " + " [" + path + "]");
|
mLabels.add("External SD " + " [" + path + "/]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
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
|
{
|
||||||
if ("/mnt/sdcard".equalsIgnoreCase(path))
|
// TODO: /mnt/sdcard and emulated are assumed to always mean internal storage. Use this comparison until there is a better way to do this
|
||||||
mLabels.add("Built-in Storage");
|
if ("/mnt/sdcard".equalsIgnoreCase(path) || path.contains("emulated"))
|
||||||
|
mLabels.add("Built-in Storage " + "[" + path + "/]");
|
||||||
else
|
else
|
||||||
mLabels.add("External SD Card " + i++);
|
mLabels.add("External SD Card " + "[" + path + "/]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,84 +327,97 @@ public class StorageOptions
|
|||||||
*
|
*
|
||||||
* @return <code>true</code> if the device is rooted, <code>false</code> otherwise.
|
* @return <code>true</code> if the device is rooted, <code>false</code> otherwise.
|
||||||
*/
|
*/
|
||||||
public static boolean isRooted() {
|
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(){
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
File file = new File(System.getenv("EXTERNAL_STORAGE")+"/forcemount");
|
// get from build info
|
||||||
if (file.exists())
|
String buildTags = android.os.Build.TAGS;
|
||||||
|
if (buildTags != null && buildTags.contains("test-keys"))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch (Exception e1)
|
// 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;
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ OBJS = objs/InteractiveButton.o objs/AbilityParser.o objs/ActionElement.o\
|
|||||||
objs/ThisDescriptor.o objs/Token.o objs/Translate.o objs/TranslateKeys.o\
|
objs/ThisDescriptor.o objs/Token.o objs/Translate.o objs/TranslateKeys.o\
|
||||||
objs/Trash.o objs/utils.o objs/WEvent.o objs/WResourceManager.o\
|
objs/Trash.o objs/utils.o objs/WEvent.o objs/WResourceManager.o\
|
||||||
objs/WCachedResource.o objs/WDataSrc.o objs/WGui.o objs/WFilter.o objs/Tasks.o\
|
objs/WCachedResource.o objs/WDataSrc.o objs/WGui.o objs/WFilter.o objs/Tasks.o\
|
||||||
objs/WFont.o objs/CarouselDeckView.o objs/GridDeckView.o objs/DeckView.o
|
objs/WFont.o objs/WParsedInt.o objs/CarouselDeckView.o objs/GridDeckView.o objs/DeckView.o
|
||||||
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
|
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
|
||||||
|
|
||||||
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
|
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
|
||||||
@@ -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 -DNETWORK_SUPPORT -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 -DNETWORK_SUPPORT -DUSE_PRECOMPILED_HEADERS=1 -Wno-nonnull-compare
|
||||||
|
|
||||||
ASFLAGS = $(CXXFLAGS)
|
ASFLAGS = $(CXXFLAGS)
|
||||||
|
|
||||||
all: $(DEFAULT_RULE)
|
all: $(DEFAULT_RULE)
|
||||||
|
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS := -Wall -W -Werror -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,19 +1,19 @@
|
|||||||
#NAME:Herdsmen
|
#NAME:Herdsmen
|
||||||
Aurochs (ICE) *4
|
Aurochs (ICE) *4
|
||||||
Brushwagg (MIR) *2
|
Brushwagg (MIR) *2
|
||||||
Birds of Paradise (7ED) *4
|
Birds of Paradise (7ED) *4
|
||||||
Snorting Gahr (MRQ) *1
|
Snorting Gahr (MRQ) *1
|
||||||
Aggressive Urge (INV) *4
|
Aggressive Urge (INV) *4
|
||||||
Blanchwood Armor (8ED) *4
|
Blanchwood Armor (8ED) *4
|
||||||
Bull Aurochs (CSP) *4
|
Bull Aurochs (CSP) *4
|
||||||
Boreal Druid (CSP) *4
|
Boreal Druid (CSP) *4
|
||||||
Aurochs Herd (CSP) *4
|
Aurochs Herd (CSP) *4
|
||||||
Timbermaw Larva (ZEN) *4
|
Timbermaw Larva (ZEN) *4
|
||||||
Bramble Creeper (M10) *2
|
Bramble Creeper (M10) *2
|
||||||
Awakening Zone (ROE) *4
|
Awakening Zone (ROE) *4
|
||||||
Beastmaster Ascension (ZEN) *4
|
Beastmaster Ascension (ZEN) *4
|
||||||
Forest (M11) *4
|
Forest (M11) *4
|
||||||
Forest (SOM) *4
|
Forest (SOM) *4
|
||||||
Forest (SOM) *4
|
Forest (SOM) *4
|
||||||
Forest (SOM) *4
|
Forest (SOM) *4
|
||||||
Forest (SOM) *4
|
Forest (SOM) *4
|
||||||
|
|||||||
@@ -1,26 +1,26 @@
|
|||||||
#NAME:The KOR
|
#NAME:The KOR
|
||||||
#DESC:The Kor never stand down.Golem-Skin Gauntlets (MRD) *1
|
#DESC:The Kor never stand down.Golem-Skin Gauntlets (MRD) *1
|
||||||
Plains (8ED) *4
|
Plains (8ED) *4
|
||||||
Plains (8ED) *4
|
Plains (8ED) *4
|
||||||
Bonesplitter (MRD) *2
|
Bonesplitter (MRD) *2
|
||||||
Vulshok Battlegear (MRD) *1
|
Vulshok Battlegear (MRD) *1
|
||||||
Plains (MRD) *4
|
Plains (MRD) *4
|
||||||
Plains (MRD) *4
|
Plains (MRD) *4
|
||||||
Plains (MRD) *4
|
Plains (MRD) *4
|
||||||
Cranial Plating (5DN) *2
|
Cranial Plating (5DN) *2
|
||||||
Skyhunter Skirmisher (5DN) *2
|
Skyhunter Skirmisher (5DN) *2
|
||||||
Paradise Mantle (5DN) *2
|
Paradise Mantle (5DN) *2
|
||||||
Shuko (BOK) *2
|
Shuko (BOK) *2
|
||||||
Umezawa's Jitte (BOK) *2
|
Umezawa's Jitte (BOK) *2
|
||||||
Kor Duelist (ZEN) *2
|
Kor Duelist (ZEN) *2
|
||||||
Spidersilk Net (ZEN) *1
|
Spidersilk Net (ZEN) *1
|
||||||
Bone Saw (CFX) *2
|
Bone Saw (CFX) *2
|
||||||
Armament Master (ZEN) *3
|
Armament Master (ZEN) *3
|
||||||
Lone Missionary (ROE) *2
|
Lone Missionary (ROE) *2
|
||||||
Pennon Blade (ROE) *1
|
Pennon Blade (ROE) *1
|
||||||
Kor Line-Slinger (ROE) *2
|
Kor Line-Slinger (ROE) *2
|
||||||
Kitesail Apprentice (WWK) *2
|
Kitesail Apprentice (WWK) *2
|
||||||
Stoneforge Mystic (WWK) *2
|
Stoneforge Mystic (WWK) *2
|
||||||
Accorder's Shield (SOM) *2
|
Accorder's Shield (SOM) *2
|
||||||
Swords to Plowshares (EVT) *2
|
Swords to Plowshares (EVT) *2
|
||||||
Kor Hookmaster (EVT) *2
|
Kor Hookmaster (EVT) *2
|
||||||
|
|||||||
@@ -1,37 +1,37 @@
|
|||||||
#NAME:Smoke and mirrors
|
#NAME:Smoke and mirrors
|
||||||
Order of the Ebon Hand (FEM) *2
|
Order of the Ebon Hand (FEM) *2
|
||||||
Combat Medic (FEM) *1
|
Combat Medic (FEM) *1
|
||||||
Combat Medic (FEM) *1
|
Combat Medic (FEM) *1
|
||||||
Combat Medic (FEM) *1
|
Combat Medic (FEM) *1
|
||||||
Sanctum Custodian (USG) *2
|
Sanctum Custodian (USG) *2
|
||||||
False Prophet (UDS) *1
|
False Prophet (UDS) *1
|
||||||
Revered Elder (MRQ) *1
|
Revered Elder (MRQ) *1
|
||||||
Hallowed Healer (ODY) *1
|
Hallowed Healer (ODY) *1
|
||||||
Beloved Chaplain (ODY) *2
|
Beloved Chaplain (ODY) *2
|
||||||
Ancestor's Chosen (JUD) *1
|
Ancestor's Chosen (JUD) *1
|
||||||
Battlefield Medic (ONS) *1
|
Battlefield Medic (ONS) *1
|
||||||
Rotlung Reanimator (ONS) *4
|
Rotlung Reanimator (ONS) *4
|
||||||
Doubtless One (ONS) *2
|
Doubtless One (ONS) *2
|
||||||
Glowrider (LGN) *2
|
Glowrider (LGN) *2
|
||||||
Aven Redeemer (LGN) *1
|
Aven Redeemer (LGN) *1
|
||||||
Edgewalker (SCG) *2
|
Edgewalker (SCG) *2
|
||||||
Vile Deacon (LGN) *2
|
Vile Deacon (LGN) *2
|
||||||
Master Healer (8ED) *1
|
Master Healer (8ED) *1
|
||||||
Auriok Champion (5DN) *2
|
Auriok Champion (5DN) *2
|
||||||
Swamp (UNH) *3
|
Swamp (UNH) *3
|
||||||
Master Healer (9ED) *1
|
Master Healer (9ED) *1
|
||||||
Godless Shrine (GPT) *3
|
Godless Shrine (GPT) *3
|
||||||
Disciple of Tevesh Szat (CSP) *2
|
Disciple of Tevesh Szat (CSP) *2
|
||||||
Blightspeaker (PLC) *2
|
Blightspeaker (PLC) *2
|
||||||
True Believer (10E) *1
|
True Believer (10E) *1
|
||||||
Soul Warden (10E) *1
|
Soul Warden (10E) *1
|
||||||
Icatian Priest (10E) *1
|
Icatian Priest (10E) *1
|
||||||
Platinum Angel (10E) *1
|
Platinum Angel (10E) *1
|
||||||
Soul's Attendant (ROE) *1
|
Soul's Attendant (ROE) *1
|
||||||
Plains (ZEN) *3
|
Plains (ZEN) *3
|
||||||
Plains (ZEN) *2
|
Plains (ZEN) *2
|
||||||
Plains (ZEN) *2
|
Plains (ZEN) *2
|
||||||
Plains (ZEN) *3
|
Plains (ZEN) *3
|
||||||
Swamp (ZEN) *3
|
Swamp (ZEN) *3
|
||||||
Swamp (ZEN) *3
|
Swamp (ZEN) *3
|
||||||
Shepherd of Rot (HOP) *2
|
Shepherd of Rot (HOP) *2
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
#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:castpriority(enchantment,instant,sorcery,artifact,creature)
|
||||||
#HINT:dontattackwith(Rhys the Redeemed)
|
#HINT:dontattackwith(Rhys the Redeemed)
|
||||||
#HINT:dontblockwith(Rhys the Redeemed)
|
#HINT:dontblockwith(Rhys the Redeemed)
|
||||||
#HINT:dontattackwith(Kazandu Tuskcaller)
|
#HINT:dontattackwith(Kazandu Tuskcaller)
|
||||||
#HINT:dontblockwith(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
|
||||||
Plains (LEA) *8
|
Plains (LEA) *8
|
||||||
Marble Diamond (MIR) *2
|
Marble Diamond (MIR) *2
|
||||||
Blazing Archon (*) *2
|
Blazing Archon (*) *2
|
||||||
Serra's Sanctum (USG) *1
|
Serra's Sanctum (USG) *1
|
||||||
Gaea's Cradle (USG) *2
|
Gaea's Cradle (USG) *2
|
||||||
Rofellos, Llanowar Emissary (UDS) *2
|
Rofellos, Llanowar Emissary (UDS) *2
|
||||||
Beacon of Creation (5DN) *2
|
Beacon of Creation (5DN) *2
|
||||||
Honden of Life's Web (CHK) *2
|
Honden of Life's Web (CHK) *2
|
||||||
Kabira Vindicator (*) *2
|
Kabira Vindicator (*) *2
|
||||||
Rhys the Redeemed (SHM) *2
|
Rhys the Redeemed (SHM) *2
|
||||||
Fable of Wolf and Owl (EVE) *2
|
Fable of Wolf and Owl (EVE) *2
|
||||||
Murkfiend Liege (EVE) *2
|
Murkfiend Liege (EVE) *2
|
||||||
Creakwood Liege (EVE) *2
|
Creakwood Liege (EVE) *2
|
||||||
Spawnwrithe (SHM) *2
|
Spawnwrithe (SHM) *2
|
||||||
Awakening Zone (ROE) *3
|
Awakening Zone (ROE) *3
|
||||||
Kazandu Tuskcaller (ROE) *2
|
Kazandu Tuskcaller (ROE) *2
|
||||||
Conqueror's Pledge (ZEN) *2
|
Conqueror's Pledge (ZEN) *2
|
||||||
Bestial Menace (WWK) *2
|
Bestial Menace (WWK) *2
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
#NAME:Infected wounds
|
#NAME:Infected wounds
|
||||||
Forest (UGL) *4
|
Forest (UGL) *4
|
||||||
Forest (ALA) *1
|
Forest (ALA) *1
|
||||||
Forest (ALA) *1
|
Forest (ALA) *1
|
||||||
Forest (M10) *1
|
Forest (M10) *1
|
||||||
Forest (M10) *1
|
Forest (M10) *1
|
||||||
Necropede (SOM) *2
|
Necropede (SOM) *2
|
||||||
Contagious Nim (SOM) *2
|
Contagious Nim (SOM) *2
|
||||||
Blight Mamba (SOM) *2
|
Blight Mamba (SOM) *2
|
||||||
Ichor Rats (SOM) *2
|
Ichor Rats (SOM) *2
|
||||||
Ichorclaw Myr (SOM) *4
|
Ichorclaw Myr (SOM) *4
|
||||||
Blackcleave Goblin (SOM) *2
|
Blackcleave Goblin (SOM) *2
|
||||||
Corpse Cur (SOM) *2
|
Corpse Cur (SOM) *2
|
||||||
Forest (ZEN) *4
|
Forest (ZEN) *4
|
||||||
Forest (ZEN) *3
|
Forest (ZEN) *3
|
||||||
Forest (ZEN) *4
|
Forest (ZEN) *4
|
||||||
Forest (ZEN) *2
|
Forest (ZEN) *2
|
||||||
Swamp (HOP) *3
|
Swamp (HOP) *3
|
||||||
Cystbearer (SOM) *2
|
Cystbearer (SOM) *2
|
||||||
Tel-Jilad Fallen (SOM) *2
|
Tel-Jilad Fallen (SOM) *2
|
||||||
Swamp (ROE) *4
|
Swamp (ROE) *4
|
||||||
Swamp (ROE) *3
|
Swamp (ROE) *3
|
||||||
Swamp (ROE) *4
|
Swamp (ROE) *4
|
||||||
Putrefax (SOM) *2
|
Putrefax (SOM) *2
|
||||||
Plague Stinger (SOM) *2
|
Plague Stinger (SOM) *2
|
||||||
Relic Putrescence (SOM) *2
|
Relic Putrescence (SOM) *2
|
||||||
Skithiryx, the Blight Dragon (SOM) *2
|
Skithiryx, the Blight Dragon (SOM) *2
|
||||||
Hand of the Praetors (SOM) *2
|
Hand of the Praetors (SOM) *2
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
#NAME:Painful Dream
|
#NAME:Painful Dream
|
||||||
Traumatize (ODY) *2
|
Traumatize (ODY) *2
|
||||||
Island (UNH) *4
|
Island (UNH) *4
|
||||||
Followed Footsteps (RAV) *4
|
Followed Footsteps (RAV) *4
|
||||||
Howling Mine (10E) *4
|
Howling Mine (10E) *4
|
||||||
Dreamborn Muse (10E) *4
|
Dreamborn Muse (10E) *4
|
||||||
Forced Fruition (LRW) *4
|
Forced Fruition (LRW) *4
|
||||||
Memory Erosion (ALA) *4
|
Memory Erosion (ALA) *4
|
||||||
Hedron Crab (ZEN) *4
|
Hedron Crab (ZEN) *4
|
||||||
Font of Mythos (CFX) *4
|
Font of Mythos (CFX) *4
|
||||||
Tome Scour (M10) *4
|
Tome Scour (M10) *4
|
||||||
Island (ZEN) *4
|
Island (ZEN) *4
|
||||||
Island (ZEN) *4
|
Island (ZEN) *4
|
||||||
Island (ZEN) *4
|
Island (ZEN) *4
|
||||||
Island (ZEN) *4
|
Island (ZEN) *4
|
||||||
Platinum Angel (M11) *1
|
Platinum Angel (M11) *1
|
||||||
Sword of Body and Mind (SOM) *2
|
Sword of Body and Mind (SOM) *2
|
||||||
Seat of the Synod (EVT) *4
|
Seat of the Synod (EVT) *4
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,109 +1,109 @@
|
|||||||
#NAME:Synthetic
|
#NAME:Synthetic
|
||||||
#DESC:Selesnya Guild
|
#DESC:Selesnya Guild
|
||||||
########################################
|
########################################
|
||||||
# Creatures #
|
# Creatures #
|
||||||
########################################
|
########################################
|
||||||
#1 x Giant Adephage (GTC), {5}{g}{g}, Creature Insect, 7/7, trample;
|
#1 x Giant Adephage (GTC), {5}{g}{g}, Creature Insect, 7/7, trample;
|
||||||
366394
|
366394
|
||||||
|
|
||||||
#2 x Rubblebelt Raiders (GTC), {1}{r/g}{r/g}{r/g}, Creature Human Warrior, 3/3,
|
#2 x Rubblebelt Raiders (GTC), {1}{r/g}{r/g}{r/g}, Creature Human Warrior, 3/3,
|
||||||
366462
|
366462
|
||||||
366462
|
366462
|
||||||
|
|
||||||
#4 x Voice of Resurgence (DGM), {g}{w}, Creature Elemental, 2/2,
|
#4 x Voice of Resurgence (DGM), {g}{w}, Creature Elemental, 2/2,
|
||||||
368951
|
368951
|
||||||
368951
|
368951
|
||||||
368951
|
368951
|
||||||
368951
|
368951
|
||||||
|
|
||||||
#4 x Trostani's Summoner (DGM), {5}{g}{w}, Creature Elf Shaman, 1/1,
|
#4 x Trostani's Summoner (DGM), {5}{g}{w}, Creature Elf Shaman, 1/1,
|
||||||
369072
|
369072
|
||||||
369072
|
369072
|
||||||
369072
|
369072
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# Spells #
|
# Spells #
|
||||||
########################################
|
########################################
|
||||||
#4 x Advent of the Wurm (DGM), {1}{g}{g}{w}, Instant,
|
#4 x Advent of the Wurm (DGM), {1}{g}{g}{w}, Instant,
|
||||||
369036
|
369036
|
||||||
369036
|
369036
|
||||||
369036
|
369036
|
||||||
369036
|
369036
|
||||||
|
|
||||||
#2 x Selesnya Cluestone (DGM), {3}, Artifact,
|
#2 x Selesnya Cluestone (DGM), {3}, Artifact,
|
||||||
369060
|
369060
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# Lands #
|
# Lands #
|
||||||
########################################
|
########################################
|
||||||
#4 x Forest (GVL), Basic Land Forest,
|
#4 x Forest (GVL), Basic Land Forest,
|
||||||
204967
|
204967
|
||||||
204967
|
204967
|
||||||
204967
|
204967
|
||||||
204967
|
204967
|
||||||
|
|
||||||
#4 x Selesnya Guildgate (DGM), Land Gate,
|
#4 x Selesnya Guildgate (DGM), Land Gate,
|
||||||
369018
|
369018
|
||||||
369018
|
369018
|
||||||
369018
|
369018
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 50 KiB |
@@ -1,126 +1,126 @@
|
|||||||
#Wagic 0.12.1 电脑套牌说明 简体中文语言文件 by linshier and Phantom
|
#Wagic 0.12.1 电脑套牌说明 简体中文语言文件 by linshier and Phantom
|
||||||
|
|
||||||
#翻译者须知:
|
#翻译者须知:
|
||||||
# - 中文标点采用全角格式
|
# - 中文标点采用全角格式
|
||||||
# - 翻译词条左侧的英文大小写敏感
|
# - 翻译词条左侧的英文大小写敏感
|
||||||
# - 套牌说明部分词条按英文字母排序
|
# - 套牌说明部分词条按英文字母排序
|
||||||
# - 本文件采用GB2312编码格式,使用非该字符集的汉字,游戏将无法显示
|
# - 本文件采用GB2312编码格式,使用非该字符集的汉字,游戏将无法显示
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# DECK EDITOR #
|
# DECK EDITOR #
|
||||||
##########################
|
##########################
|
||||||
|
|
||||||
Filter By...=定位你要寻找的卡牌。
|
Filter By...=定位你要寻找的卡牌。
|
||||||
Switch Decks=放弃对当前套牌的修改,@以查看其他套牌。
|
Switch Decks=放弃对当前套牌的修改,@以查看其他套牌。
|
||||||
Rename Deck=更改套牌名称。
|
Rename Deck=更改套牌名称。
|
||||||
Save & Quit Editor=保存对当前套牌的修改,@并返回主菜单。
|
Save & Quit Editor=保存对当前套牌的修改,@并返回主菜单。
|
||||||
Save As AI Deck=所有的改变将成定居。
|
Save As AI Deck=所有的改变将成定居。
|
||||||
Quit Editor=放弃对当前套牌的修改,@并返回主菜单。
|
Quit Editor=放弃对当前套牌的修改,@并返回主菜单。
|
||||||
Cancel=关闭该菜单。
|
Cancel=关闭该菜单。
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# AI DECK #
|
# AI DECK #
|
||||||
##########################
|
##########################
|
||||||
|
|
||||||
Air Sea Battle=准备面对仙灵和人鱼的恐怖吧。
|
Air Sea Battle=准备面对仙灵和人鱼的恐怖吧。
|
||||||
Alliance=在班特城堡,亚莎的祷者@发出战斗的号召。@请准备面对班特之光吧!
|
Alliance=在班特城堡,亚莎的祷者@发出战斗的号召。@请准备面对班特之光吧!
|
||||||
Allied Warriors=作为一支山地,森林,@海洋,天空的联合军队@@"统一战线是我们的力量"
|
Allied Warriors=作为一支山地,森林,@海洋,天空的联合军队@@"统一战线是我们的力量"
|
||||||
Allies=虽然单个很弱,@但是一起,我们就不可阻挡。@@如果你还觉得将三个臭皮匠@顶不了一个诸葛亮,@那就再想想!
|
Allies=虽然单个很弱,@但是一起,我们就不可阻挡。@@如果你还觉得将三个臭皮匠@顶不了一个诸葛亮,@那就再想想!
|
||||||
Angelism=天使的大军将掠过你的防线,@而你的士兵只能束手就擒。
|
Angelism=天使的大军将掠过你的防线,@而你的士兵只能束手就擒。
|
||||||
AshenmoorCohort=我你听你问道:@死亡的感觉如何?@@很痛苦。@火烧一样。@@死亡让你……@……让你想回到这个世界。
|
AshenmoorCohort=我你听你问道:@死亡的感觉如何?@@很痛苦。@火烧一样。@@死亡让你……@……让你想回到这个世界。
|
||||||
Bad Dreams=等你遇到它们的时候@你再想自己是否做过噩梦吧……
|
Bad Dreams=等你遇到它们的时候@你再想自己是否做过噩梦吧……
|
||||||
Badlands=危险的敌人正等待着你。@不死生物,鬼怪和憎恨兽@将给你带来疯狂的进攻。
|
Badlands=危险的敌人正等待着你。@不死生物,鬼怪和憎恨兽@将给你带来疯狂的进攻。
|
||||||
Bad Moon=夜幕降临,噩梦袭来。@邪恶的幽灵将把你拖入黑暗的深渊!
|
Bad Moon=夜幕降临,噩梦袭来。@邪恶的幽灵将把你拖入黑暗的深渊!
|
||||||
Balefire Blast=纯粹的狂热力量@可以将秩序和混乱联合在一起。
|
Balefire Blast=纯粹的狂热力量@可以将秩序和混乱联合在一起。
|
||||||
Ball Lightning=在我看来@你除了可以当燃料@别的什么都不是!
|
Ball Lightning=在我看来@你除了可以当燃料@别的什么都不是!
|
||||||
Barbarians=成为野蛮人确凿无疑,千真万确很难。@人们认为我们想做只是粗野地喊着@"我是野蛮人!你脸让我作呕!",@然后将他狠狠打倒。@@这是大错特错了!@在那人被我们痛扁前,@我们实际上能完整地把一句话说完。
|
Barbarians=成为野蛮人确凿无疑,千真万确很难。@人们认为我们想做只是粗野地喊着@"我是野蛮人!你脸让我作呕!",@然后将他狠狠打倒。@@这是大错特错了!@在那人被我们痛扁前,@我们实际上能完整地把一句话说完。
|
||||||
Bleeding Megrim=而它将告诉你@胜利的第二天@就像失败的第二天一样@空洞。
|
Bleeding Megrim=而它将告诉你@胜利的第二天@就像失败的第二天一样@空洞。
|
||||||
Blind Faith=对我们正在迎战的这支军队而言@黑暗和光明不多不少
|
Blind Faith=对我们正在迎战的这支军队而言@黑暗和光明不多不少
|
||||||
Bloodhall Ooze=第114号样本笔记:@在使用活和腐烂的有机物培养后,@流浆的成长已经超出了我们预计。@事实上,当我看到它狂暴地用触角拍打@关住它的玻璃容器时,我不禁它@是否会成为实验室的安全隐患……@ (法师实验室废墟中发现的残页)
|
Bloodhall Ooze=第114号样本笔记:@在使用活和腐烂的有机物培养后,@流浆的成长已经超出了我们预计。@事实上,当我看到它狂暴地用触角拍打@关住它的玻璃容器时,我不禁它@是否会成为实验室的安全隐患……@ (法师实验室废墟中发现的残页)
|
||||||
Boar's Tusks=请准备遭遇一支有强大军队吧,@它们拥有着火与自然系的力量。
|
Boar's Tusks=请准备遭遇一支有强大军队吧,@它们拥有着火与自然系的力量。
|
||||||
Burning=欲点燃午夜的油灯,@最好提前准备。@莽撞的鬼怪@让你愤怒@伴随微弱的火焰@而你的生命将就此终结……
|
Burning=欲点燃午夜的油灯,@最好提前准备。@莽撞的鬼怪@让你愤怒@伴随微弱的火焰@而你的生命将就此终结……
|
||||||
Corruption=我们会毁掉你。@我们会破坏你。@我们会消灭你。@当你除了一具死亡和空洞的壳@再一无所剩时,仙女们@将在你的残骸上跳舞庆祝。
|
Corruption=我们会毁掉你。@我们会破坏你。@我们会消灭你。@当你除了一具死亡和空洞的壳@再一无所剩时,仙女们@将在你的残骸上跳舞庆祝。
|
||||||
Creaky Wood=死亡@一直是自然的一部分。@我们拥抱它来@增强自己的力量。
|
Creaky Wood=死亡@一直是自然的一部分。@我们拥抱它来@增强自己的力量。
|
||||||
Create your Deck!=强烈推荐!@来获得本游戏的完整体验吧!
|
Create your Deck!=强烈推荐!@来获得本游戏的完整体验吧!
|
||||||
Death=我们挥霍般撒下死亡的种子。@当战斗胜利时,@我们收获那些死尸。
|
Death=我们挥霍般撒下死亡的种子。@当战斗胜利时,@我们收获那些死尸。
|
||||||
Deep Blue=你确定要召唤这只强大的生物@入场吗?可能你觉得它足够强大,@可以助你结束战斗。但是,@别怪我没警告过你注意回镖……
|
Deep Blue=你确定要召唤这只强大的生物@入场吗?可能你觉得它足够强大,@可以助你结束战斗。但是,@别怪我没警告过你注意回镖……
|
||||||
Depletion=矿井的嚎叫,@梦生谬思的低语,@噬殁兽的吐息,@让无数法师发疯,@真实的底密尔公馆在等待你去发现。
|
Depletion=矿井的嚎叫,@梦生谬思的低语,@噬殁兽的吐息,@让无数法师发疯,@真实的底密尔公馆在等待你去发现。
|
||||||
Destroy=我将摧毁你的土地,@你的军队,@最后是你。
|
Destroy=我将摧毁你的土地,@你的军队,@最后是你。
|
||||||
Disciplination=我的军队在纪律处分中未能幸存,@尽管是我极不情愿发起的。@于是,我看到你为我带来了增援。@真心感想你,你是个好人!
|
Disciplination=我的军队在纪律处分中未能幸存,@尽管是我极不情愿发起的。@于是,我看到你为我带来了增援。@真心感想你,你是个好人!
|
||||||
Dragons=龙是力量和意志的狂乱。@龙是焰的艺术家,@将世界涂上火的色彩。
|
Dragons=龙是力量和意志的狂乱。@龙是焰的艺术家,@将世界涂上火的色彩。
|
||||||
Elfball=在源源不断的法术力支持下,@由妖精勇士组成的洪流将彻底击败你。@赶紧逃跑吧!你没有任何胜算!
|
Elfball=在源源不断的法术力支持下,@由妖精勇士组成的洪流将彻底击败你。@赶紧逃跑吧!你没有任何胜算!
|
||||||
Elfolk=面对一支侏儒和树妖的联军。@你能同时承受树的强壮力量和@侏儒的繁殖能力吗?
|
Elfolk=面对一支侏儒和树妖的联军。@你能同时承受树的强壮力量和@侏儒的繁殖能力吗?
|
||||||
Elves=你也许认为这段林中旅行会很惬意……@但是谁说只有鬼怪会令人生厌呢?
|
Elves=你也许认为这段林中旅行会很惬意……@但是谁说只有鬼怪会令人生厌呢?
|
||||||
Enchanted Coatl=当心!魔女找到了一只新宠物!@她们正痴迷于让它不断变强@直到无人能挡。
|
Enchanted Coatl=当心!魔女找到了一只新宠物!@她们正痴迷于让它不断变强@直到无人能挡。
|
||||||
Enchanted=谨防任何斗士穿上盔甲或面具。@@装备精良,他们将战无不胜。
|
Enchanted=谨防任何斗士穿上盔甲或面具。@@装备精良,他们将战无不胜。
|
||||||
Enchantresses=请敬畏魔女的力量吧!@当你一不小心,@她们将会接二连三地施放咒语@并且化身成为强大的战士。
|
Enchantresses=请敬畏魔女的力量吧!@当你一不小心,@她们将会接二连三地施放咒语@并且化身成为强大的战士。
|
||||||
Eviscerator=如果你动,你会伤害你自己。@当然,如果你不动,我也会伤害你。
|
Eviscerator=如果你动,你会伤害你自己。@当然,如果你不动,我也会伤害你。
|
||||||
Faeries=注意,这不是蝴蝶!@或者应把它看作危险的品种……
|
Faeries=注意,这不是蝴蝶!@或者应把它看作危险的品种……
|
||||||
Fairy Archmage=现在我们在这里@现在我们在那里@现在我们走了@现在我们回来了@@而你的守军出什么事了吗?
|
Fairy Archmage=现在我们在这里@现在我们在那里@现在我们走了@现在我们回来了@@而你的守军出什么事了吗?
|
||||||
Giants!=对巨人的攻击事实上很难落空,@你甚至用不着瞄准。@但是如何将巨人置入己方有效的@攻击范围确是一件难事。
|
Giants!=对巨人的攻击事实上很难落空,@你甚至用不着瞄准。@但是如何将巨人置入己方有效的@攻击范围确是一件难事。
|
||||||
Goblin Spike=呼?瓦达尔亚-叶琳,法师?@不明白你及招来的电火!@等等,让我读读你的唇语:@要……要……啊……啊什么?@@(一个鬼怪战士最后的言语,@在它被焚化前的那一刻)
|
Goblin Spike=呼?瓦达尔亚-叶琳,法师?@不明白你及招来的电火!@等等,让我读读你的唇语:@要……要……啊……啊什么?@@(一个鬼怪战士最后的言语,@在它被焚化前的那一刻)
|
||||||
Good Knight=该睡觉了。@@小心!骑士来了!@在他们的颂歌的激励下,@他们走上东征之路,@捍卫他们的荣誉。
|
Good Knight=该睡觉了。@@小心!骑士来了!@在他们的颂歌的激励下,@他们走上东征之路,@捍卫他们的荣誉。
|
||||||
Heartmender=无论是谁@无论是什么@我们治愈它@无论是善还是恶@是理性还是狂乱@是生者还是死物@我们都将治愈它。
|
Heartmender=无论是谁@无论是什么@我们治愈它@无论是善还是恶@是理性还是狂乱@是生者还是死物@我们都将治愈它。
|
||||||
Hot & Hasty=即使在你动之前,@我们的炙热将燃烧你!
|
Hot & Hasty=即使在你动之前,@我们的炙热将燃烧你!
|
||||||
Howlings=愤怒的鬼怪@在元素的帮助下沿山而下@企图征服大地。
|
Howlings=愤怒的鬼怪@在元素的帮助下沿山而下@企图征服大地。
|
||||||
Inquisitor=神器大军已经做好准备,@暗黑老虎钳和象牙塔会等待你,@它们计划完全阻挡你的脚步,@并将你折磨至死。
|
Inquisitor=神器大军已经做好准备,@暗黑老虎钳和象牙塔会等待你,@它们计划完全阻挡你的脚步,@并将你折磨至死。
|
||||||
Jihad=它们看起来不堪一击,@但是放手不管,@壮大起来,@你的军队将被它们击溃。
|
Jihad=它们看起来不堪一击,@但是放手不管,@壮大起来,@你的军队将被它们击溃。
|
||||||
Jungle=山岭,丛林和平原的@生物已经做好了复仇的准备。
|
Jungle=山岭,丛林和平原的@生物已经做好了复仇的准备。
|
||||||
Justice=率领狂热的信徒击败法律,@每个罪犯应该接受正义怒火的制裁。
|
Justice=率领狂热的信徒击败法律,@每个罪犯应该接受正义怒火的制裁。
|
||||||
Kinsb. Cavalier=骑士骑着他们的战马@骑士从天上而来@为了荣誉@团结在它们的城堡里
|
Kinsb. Cavalier=骑士骑着他们的战马@骑士从天上而来@为了荣誉@团结在它们的城堡里
|
||||||
Kithkin=在仕绅的率领下,@在纺思的团结下,@挑战只有一个,@那就是金牧地的王者,@而你就将要面对这支力量。
|
Kithkin=在仕绅的率领下,@在纺思的团结下,@挑战只有一个,@那就是金牧地的王者,@而你就将要面对这支力量。
|
||||||
Kobold Overlord=也许你觉得我们不堪一击@也许我们确实如此@但是我们有时会请到强大的雇佣兵!
|
Kobold Overlord=也许你觉得我们不堪一击@也许我们确实如此@但是我们有时会请到强大的雇佣兵!
|
||||||
Lafiel=遭遇由十一皇女拉斐尔率领的亲卫队时,@千万不要被她们的美貌所蒙蔽,@否则你失去的@将不只是你的魂魄那么简单!
|
Lafiel=遭遇由十一皇女拉斐尔率领的亲卫队时,@千万不要被她们的美貌所蒙蔽,@否则你失去的@将不只是你的魂魄那么简单!
|
||||||
Life & Death=生孕育着死。@死为新生的基础。@@生与死并不矛盾,@而是互为补充。@它们的作用联系,@将成为你力量的源泉。
|
Life & Death=生孕育着死。@死为新生的基础。@@生与死并不矛盾,@而是互为补充。@它们的作用联系,@将成为你力量的源泉。
|
||||||
Magnivore=不要低估这……事儿……@因为它恰好是个幌子。@大意的话,它会成为@你一生最后的错误!
|
Magnivore=不要低估这……事儿……@因为它恰好是个幌子。@大意的话,它会成为@你一生最后的错误!
|
||||||
Master of Ether=被我建造的物件所包围@我的力量将无限的增长。
|
Master of Ether=被我建造的物件所包围@我的力量将无限的增长。
|
||||||
Mermadness=凭借无止境的战士和魔咒的支援,@海洋的骗子们正征服所有的王国。
|
Mermadness=凭借无止境的战士和魔咒的支援,@海洋的骗子们正征服所有的王国。
|
||||||
Might Sliver=注意!小心!@它们无处不在!空中地上@到处都是它们的影子@整个世界都被这些危险的小东西占据了……
|
Might Sliver=注意!小心!@它们无处不在!空中地上@到处都是它们的影子@整个世界都被这些危险的小东西占据了……
|
||||||
Mighty Murk=在森林里的境生物的领导下,@天空和海洋的生物将会攻击你的军队。@不要低估他们壮大的潜力。
|
Mighty Murk=在森林里的境生物的领导下,@天空和海洋的生物将会攻击你的军队。@不要低估他们壮大的潜力。
|
||||||
Millage=你可能觉得自己@有足够多的咒语,神器和生物。@但是在你意识到到它之前,@你的所有将在手里粉碎。
|
Millage=你可能觉得自己@有足够多的咒语,神器和生物。@但是在你意识到到它之前,@你的所有将在手里粉碎。
|
||||||
Mindwracked=是什么呢,是什么呢……@我想告诉你一些东西。@或者你有些事情要告诉我?@啊,我怎么会忘掉呢?@它很重要!也许不重要?@@我到底在想什么?@这不过是我的妄想吗?@我到底是谁?你是谁?@啊,别在意。我会杀掉你的。@@你打断了我的思考。
|
Mindwracked=是什么呢,是什么呢……@我想告诉你一些东西。@或者你有些事情要告诉我?@啊,我怎么会忘掉呢?@它很重要!也许不重要?@@我到底在想什么?@这不过是我的妄想吗?@我到底是谁?你是谁?@啊,别在意。我会杀掉你的。@@你打断了我的思考。
|
||||||
Nightmare=我做了一次又一次的恶梦,@然后获得了胜利。
|
Nightmare=我做了一次又一次的恶梦,@然后获得了胜利。
|
||||||
Noble Predators=我们是猎人。@你是猎物。@逃跑吧。@然后我们会抓住你。
|
Noble Predators=我们是猎人。@你是猎物。@逃跑吧。@然后我们会抓住你。
|
||||||
No Bushwhacker=攻击!治疗!再攻击!再治疗!@一遍又一遍。@多么怀念自己还在鬼怪部队里的日子啊!@现在我需要在战斗中完成两件事情!
|
No Bushwhacker=攻击!治疗!再攻击!再治疗!@一遍又一遍。@多么怀念自己还在鬼怪部队里的日子啊!@现在我需要在战斗中完成两件事情!
|
||||||
Panda Hive=当最后一个生命@死于可怕的枯萎,@黄蜂的嗡鸣扰动着@这沉闷的空气。
|
Panda Hive=当最后一个生命@死于可怕的枯萎,@黄蜂的嗡鸣扰动着@这沉闷的空气。
|
||||||
Persistence=看吧,你的军队沦为了@疯怒和诅咒的牺牲品,@你毫无还击之力,@而我们能不断的攻击到你。
|
Persistence=看吧,你的军队沦为了@疯怒和诅咒的牺牲品,@你毫无还击之力,@而我们能不断的攻击到你。
|
||||||
Plane ofthe Apes=这是否是那块@从猿演变成人的大地,@你将得到答案。
|
Plane ofthe Apes=这是否是那块@从猿演变成人的大地,@你将得到答案。
|
||||||
Plateau=在波洛斯高地,@天使,元素和鬼怪正在准备战斗。@警惕着战争的到来……
|
Plateau=在波洛斯高地,@天使,元素和鬼怪正在准备战斗。@警惕着战争的到来……
|
||||||
Premade G/R=红黑套牌的规则比较简单,@可以方便上手。@我们强烈建议你@创建属于自己的套牌,@来充分享受游戏的乐趣!
|
Premade G/R=红黑套牌的规则比较简单,@可以方便上手。@我们强烈建议你@创建属于自己的套牌,@来充分享受游戏的乐趣!
|
||||||
Rack them all=胜而再胜,@我转动轮子碾过你束缚的肢体。@没有什么你能做。@你不如立刻投降。
|
Rack them all=胜而再胜,@我转动轮子碾过你束缚的肢体。@没有什么你能做。@你不如立刻投降。
|
||||||
Rats!=它们形态各异,@打过狗,杀过猫,@咬死过摇篮中的婴儿,@吃过桶里的奶酪,@舔过厨子勺里的汤羹,@尝过桶装的咸鱼,@男人的太阳帽有它们的巢穴,@妇人们的闲谈常被它们的@叽喳和尖叫打断。
|
Rats!=它们形态各异,@打过狗,杀过猫,@咬死过摇篮中的婴儿,@吃过桶里的奶酪,@舔过厨子勺里的汤羹,@尝过桶装的咸鱼,@男人的太阳帽有它们的巢穴,@妇人们的闲谈常被它们的@叽喳和尖叫打断。
|
||||||
Red Cats=士兵的汗臭将凶猛的野兽@从山上吸引下来。
|
Red Cats=士兵的汗臭将凶猛的野兽@从山上吸引下来。
|
||||||
Red Green Ally=我们或许不相似,@但我们拥有共同的目标。@当笛声响起时,@所有的对手都将颤抖。
|
Red Green Ally=我们或许不相似,@但我们拥有共同的目标。@当笛声响起时,@所有的对手都将颤抖。
|
||||||
Relentless=团结存,分裂亡。
|
Relentless=团结存,分裂亡。
|
||||||
Saproling Surge=大群蠕动的菌类@将击溃你的军队。
|
Saproling Surge=大群蠕动的菌类@将击溃你的军队。
|
||||||
Savannah=为了反抗非瑞克西亚的命运,@德洛马与杰拉尔德的联军@没有任何闲暇来争吵和对抗。
|
Savannah=为了反抗非瑞克西亚的命运,@德洛马与杰拉尔德的联军@没有任何闲暇来争吵和对抗。
|
||||||
Selesnya=你胆敢只身与盟会为敌吗?
|
Selesnya=你胆敢只身与盟会为敌吗?
|
||||||
Shatter=你将看到自己的努力@被正义的怒火@全力击溃。
|
Shatter=你将看到自己的努力@被正义的怒火@全力击溃。
|
||||||
Shocking M'taurs=一道炫目的闪光后,@战斗打响了,@接着就是一阵震耳欲聋的蹄声。
|
Shocking M'taurs=一道炫目的闪光后,@战斗打响了,@接着就是一阵震耳欲聋的蹄声。
|
||||||
SilverBlade=不要担心-@它不会造成多少伤害。@猎狗和鬼怪,猞猁和士兵@就已将你撕成粉碎,@即使在你注意到他们的存在之前。
|
SilverBlade=不要担心-@它不会造成多少伤害。@猎狗和鬼怪,猞猁和士兵@就已将你撕成粉碎,@即使在你注意到他们的存在之前。
|
||||||
Skies of Emeria=所有的陆地行走者当心!@没有人可以徒步来到我们的王国,@所有以其他方式进入的人@都将被消灭。
|
Skies of Emeria=所有的陆地行走者当心!@没有人可以徒步来到我们的王国,@所有以其他方式进入的人@都将被消灭。
|
||||||
Slightly Sligh=莫葛很散漫,@同时也拥有强大的咒语!
|
Slightly Sligh=莫葛很散漫,@同时也拥有强大的咒语!
|
||||||
Snake Pit=赞美我们的曲线@挚爱我们的柔美@享受我们的拥抱@@想要一个香吻?@很快你就要睡着了……
|
Snake Pit=赞美我们的曲线@挚爱我们的柔美@享受我们的拥抱@@想要一个香吻?@很快你就要睡着了……
|
||||||
Soldiers=我们站成一排@一个挨着一个@宛如剑与盾的墙在前行@我们不会停止@我们不会屈服@而且永远不会退缩。
|
Soldiers=我们站成一排@一个挨着一个@宛如剑与盾的墙在前行@我们不会停止@我们不会屈服@而且永远不会退缩。
|
||||||
Spectral Rack=我们将给你洗脑,@你将一无所知,@而我们将更加强大。
|
Spectral Rack=我们将给你洗脑,@你将一无所知,@而我们将更加强大。
|
||||||
Taiga=红绿联盟。@@你能经受它们的夹攻吗?
|
Taiga=红绿联盟。@@你能经受它们的夹攻吗?
|
||||||
Tarmac=让塔莫耶夫舔着的脚底,@赤身绑在在拷架上的滋味如何?
|
Tarmac=让塔莫耶夫舔着的脚底,@赤身绑在在拷架上的滋味如何?
|
||||||
Terror=它们呻吟着,躁动着,@全都站起来了,@它们不言不视,@这匪夷所思,@即使在梦中也是如此,@当你看到这些逝者重生的时候
|
Terror=它们呻吟着,躁动着,@全都站起来了,@它们不言不视,@这匪夷所思,@即使在梦中也是如此,@当你看到这些逝者重生的时候
|
||||||
The Memorial=当你面对一支由异常强大的生物@组成的军队时,@你又能做什么呢?@@膜拜纪念碑给与它们@难以置信的力量。
|
The Memorial=当你面对一支由异常强大的生物@组成的军队时,@你又能做什么呢?@@膜拜纪念碑给与它们@难以置信的力量。
|
||||||
Thistlestings=遇见比洁英更神秘的部落。@你会允许他们迷惑你吗?
|
Thistlestings=遇见比洁英更神秘的部落。@你会允许他们迷惑你吗?
|
||||||
Token Terror=小心!它们来自各个地方!@@使用非常手段征召的混合部队。
|
Token Terror=小心!它们来自各个地方!@@使用非常手段征召的混合部队。
|
||||||
Traveling Party=我们可能看起来像@其他的冒险家团体。@但你不会了解我们能得到多大的帮助,@如果我们真想得到的话。
|
Traveling Party=我们可能看起来像@其他的冒险家团体。@但你不会了解我们能得到多大的帮助,@如果我们真想得到的话。
|
||||||
Treefolk=谁躲藏在这树里?@@长年以来,这些大树饱经元素的怒火。@你真以为自己有一点机会@能抓住它们的树皮吗?
|
Treefolk=谁躲藏在这树里?@@长年以来,这些大树饱经元素的怒火。@你真以为自己有一点机会@能抓住它们的树皮吗?
|
||||||
Tree Planter=即使你不去森林,@森林也会来找你。@今天我们种下的树苗,@将成为明日我们的盔甲。
|
Tree Planter=即使你不去森林,@森林也会来找你。@今天我们种下的树苗,@将成为明日我们的盔甲。
|
||||||
Tsabo=你可能准备好应对一支@从坟墓场里涌出的灵俑大军。@但是如果它们从海里爬出来呢?
|
Tsabo=你可能准备好应对一支@从坟墓场里涌出的灵俑大军。@但是如果它们从海里爬出来呢?
|
||||||
Twin Pricks=牛已经来了。@到喂食的时间了……
|
Twin Pricks=牛已经来了。@到喂食的时间了……
|
||||||
Undead Lords=你能闻到腐肉和碎骨的香味吗?@是的话你应该万分欣喜,@因为你很快就要成为其中的一员了。
|
Undead Lords=你能闻到腐肉和碎骨的香味吗?@是的话你应该万分欣喜,@因为你很快就要成为其中的一员了。
|
||||||
VampireViscounts=啊,这咬下跳动鲜肉的触感!@啊,这畅饮生命烈酒的快感!@在这极乐中狂欢@难道是罪过不成?
|
VampireViscounts=啊,这咬下跳动鲜肉的触感!@啊,这畅饮生命烈酒的快感!@在这极乐中狂欢@难道是罪过不成?
|
||||||
Vanguard'sChosen=瞧那前锋!@它的力量在不断膨胀,@再没有什么能阻止它!
|
Vanguard'sChosen=瞧那前锋!@它的力量在不断膨胀,@再没有什么能阻止它!
|
||||||
Viashino Warrior=用爪子,利剑和火焰@我们牢固的捍卫我们的信仰
|
Viashino Warrior=用爪子,利剑和火焰@我们牢固的捍卫我们的信仰
|
||||||
Vigilant Watch=一个士兵也许会疲倦,@但是小队却不会。@他们机警戒备,@时刻准备迎击到来的敌人。
|
Vigilant Watch=一个士兵也许会疲倦,@但是小队却不会。@他们机警戒备,@时刻准备迎击到来的敌人。
|
||||||
White Blades=遭遇一整支由士兵,骑士,@守卫组成的军队。@@你能阻挡它们吗,@或者你只能在一旁束手无策?
|
White Blades=遭遇一整支由士兵,骑士,@守卫组成的军队。@@你能阻挡它们吗,@或者你只能在一旁束手无策?
|
||||||
Wraith's Feast=我的军队只会恐吓你,@而我对生的饥渴则会杀死你。
|
Wraith's Feast=我的军队只会恐吓你,@而我对生的饥渴则会杀死你。
|
||||||
Wrath=痛苦的快乐@这是否是终结@这美丽新世界
|
Wrath=痛苦的快乐@这是否是终结@这美丽新世界
|
||||||
Yavimaya=丛林和大海的猛兽正在集结,@准备战斗。
|
Yavimaya=丛林和大海的猛兽正在集结,@准备战斗。
|
||||||
Zuberi's Flock=为了正义与荣耀@展翅的战士们@越过裂隙@准备复仇
|
Zuberi's Flock=为了正义与荣耀@展翅的战士们@越过裂隙@准备复仇
|
||||||
|
|||||||