Compare commits
616 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c678a5502d | ||
|
|
0ee35721b0 | ||
|
|
1932f9a9c3 | ||
|
|
8e85b71669 | ||
|
|
f439afae9e | ||
|
|
fdd749be18 | ||
|
|
666e3e51a3 | ||
|
|
b930d5a1f9 | ||
|
|
5c10a2662d | ||
|
|
214f451cc1 | ||
|
|
67b4fa6f68 | ||
|
|
aa3e7a8ef5 | ||
|
|
7bf6099528 | ||
|
|
e90a4eb71d | ||
|
|
7b83406ee4 | ||
|
|
c4157d2ec8 | ||
|
|
2bdfaef2d9 | ||
|
|
2b0fbd9904 | ||
|
|
0ffa0351b5 | ||
|
|
951cbf3d16 | ||
|
|
69454048ad | ||
|
|
c4ceb89240 | ||
|
|
4a638cba79 | ||
|
|
c209528271 | ||
|
|
0d1f590937 | ||
|
|
b59b839029 | ||
|
|
513243ba0f | ||
|
|
795e774119 | ||
|
|
d02d419729 | ||
|
|
518bffe644 | ||
|
|
88d1b31aff | ||
|
|
4db2dbff44 | ||
|
|
32ad577f6d | ||
|
|
3310f49f68 | ||
|
|
bf7803d554 | ||
|
|
c9bd253960 | ||
|
|
859591cea5 | ||
|
|
b99b13a6e4 | ||
|
|
c80be4940f | ||
|
|
52374ce06d | ||
|
|
5a594f7d9a | ||
|
|
aff87a26ce | ||
|
|
18aae0cfa5 | ||
|
|
6f0bc2ecf8 | ||
|
|
8d2a637bd8 | ||
|
|
54180c4768 | ||
|
|
4e22384ed1 | ||
|
|
029f801159 | ||
|
|
fd53671430 | ||
|
|
7b09548261 | ||
|
|
63e1311656 | ||
|
|
36a303a86f | ||
|
|
61f903dcf1 | ||
|
|
2a10562e9e | ||
|
|
d64796f32a | ||
|
|
f2d67d0a5d | ||
|
|
ad39a51fe8 | ||
|
|
14d0927fb6 | ||
|
|
1697465d0d | ||
|
|
e52965d039 | ||
|
|
a8d957bf7d | ||
|
|
b6b5343e04 | ||
|
|
d4c318438d | ||
|
|
d8d04f2ac3 | ||
|
|
1c38e73290 | ||
|
|
7fc6b9b940 | ||
|
|
ed50ed8550 | ||
|
|
fb4c65dae0 | ||
|
|
fc9543baa7 | ||
|
|
b0eaca091a | ||
|
|
aab13a5582 | ||
|
|
f852ba02d8 | ||
|
|
4aa074b9fc | ||
|
|
2f7503c752 | ||
|
|
d754593c2b | ||
|
|
07ea938885 | ||
|
|
ac87930672 | ||
|
|
3dfef06bba | ||
|
|
120faf3806 | ||
|
|
f51f04d170 | ||
|
|
ec7bb78ee4 | ||
|
|
5ae1e59b5c | ||
|
|
e3956ebcf2 | ||
|
|
bb75e8f2e0 | ||
|
|
a77b1416e5 | ||
|
|
121e0a433b | ||
|
|
988aee3078 | ||
|
|
2bb99bb100 | ||
|
|
4e7ddc7e71 | ||
|
|
174caef7ca | ||
|
|
d2bb3800e3 | ||
|
|
f0959ab356 | ||
|
|
2c5546c6fb | ||
|
|
a7a565b93e | ||
|
|
ed074bd08b | ||
|
|
d938b22729 | ||
|
|
bd88a2378f | ||
|
|
0371126ccf | ||
|
|
ab36b6a2e1 | ||
|
|
d43d4a1773 | ||
|
|
0837c476a1 | ||
|
|
77a41b1783 | ||
|
|
0d39400f8b | ||
|
|
d3c8678f80 | ||
|
|
b7008072f8 | ||
|
|
15737810f0 | ||
|
|
5036c57372 | ||
|
|
5799e6f567 | ||
|
|
310e8afc25 | ||
|
|
78215363dc | ||
|
|
4e873f8bf3 | ||
|
|
79dc116e6a | ||
|
|
a7480ae656 | ||
|
|
62e310a776 | ||
|
|
bb398a2f1e | ||
|
|
79ab2d122d | ||
|
|
3a2f73a176 | ||
|
|
217237b57e | ||
|
|
cb7b6eb3f8 | ||
|
|
6e21d7f560 | ||
|
|
09d905b96f | ||
|
|
8f29d4871d | ||
|
|
94f175e2cd | ||
|
|
5e15c5574a | ||
|
|
1c530a6c7a | ||
|
|
8fc0872b90 | ||
|
|
3021cc29da | ||
|
|
c77f51b7ae | ||
|
|
aa39d36663 | ||
|
|
40907db32d | ||
|
|
12bff75586 | ||
|
|
8bc59fb67c | ||
|
|
ab5319f3d1 | ||
|
|
6128df0062 | ||
|
|
142938cdca | ||
|
|
b32efe129e | ||
|
|
2b20272a61 | ||
|
|
d9ef79a7b5 | ||
|
|
576f0be4ab | ||
|
|
89a4e6506f | ||
|
|
47099a8a9b | ||
|
|
04dfda0c55 | ||
|
|
22656a40b2 | ||
|
|
b6df916700 | ||
|
|
6fa9abd896 | ||
|
|
e239406199 | ||
|
|
b7a0ebad17 | ||
|
|
266744b1dd | ||
|
|
f8526e1ac7 | ||
|
|
ab716e96e2 | ||
|
|
649d527dcf | ||
|
|
c5e7ddaf7a | ||
|
|
b2a4cb42cf | ||
|
|
3fc5941f54 | ||
|
|
741360022b | ||
|
|
86e2f62aed | ||
|
|
e552915637 | ||
|
|
98a51c1f61 | ||
|
|
aa84eefa8f | ||
|
|
22e12ce3e5 | ||
|
|
f4a82b5c01 | ||
|
|
60520ea855 | ||
|
|
b70a0869cd | ||
|
|
7bdd21bb75 | ||
|
|
0dd3736f2a | ||
|
|
deb2d30706 | ||
|
|
c416e1546d | ||
|
|
6d3a67ae59 | ||
|
|
6b60147152 | ||
|
|
8c91aca838 | ||
|
|
b47e282747 | ||
|
|
134d0e7e4a | ||
|
|
26b596760b | ||
|
|
8a5e15e82d | ||
|
|
ffb5eee62a | ||
|
|
387d9b39da | ||
|
|
43b5cb62bb | ||
|
|
580923a646 | ||
|
|
06444f497b | ||
|
|
1676ad5f1b | ||
|
|
478d86677d | ||
|
|
c5e0db8de9 | ||
|
|
228690b400 | ||
|
|
1fe30bc466 | ||
|
|
8e95be0ac2 | ||
|
|
47b1e700ea | ||
|
|
3ad1949727 | ||
|
|
441680861e | ||
|
|
5e848ecbb3 | ||
|
|
c9520e607f | ||
|
|
40a8c52ba1 | ||
|
|
cb6ffd7810 | ||
|
|
185a7bb7d8 | ||
|
|
bc3405d11d | ||
|
|
2804361436 | ||
|
|
4f40f3c4b2 | ||
|
|
897c55c410 | ||
|
|
9e97b5851e | ||
|
|
625fbdb2d7 | ||
|
|
0f32d3f619 | ||
|
|
273c74b275 | ||
|
|
2500d0a930 | ||
|
|
25bf3be009 | ||
|
|
910dab1896 | ||
|
|
6198ad557a | ||
|
|
89b3d3b670 | ||
|
|
122f43ddb9 | ||
|
|
50104d2532 | ||
|
|
f5f30d6026 | ||
|
|
114cd48521 | ||
|
|
548da3ea5f | ||
|
|
2a8b8d040b | ||
|
|
0dc2d4445b | ||
|
|
8ac497354a | ||
|
|
0cbbcc00a5 | ||
|
|
5cfab33ada | ||
|
|
18328320c1 | ||
|
|
73c48afc99 | ||
|
|
62bd0442df | ||
|
|
0aee75c1c1 | ||
|
|
dc3c27297f | ||
|
|
9363946874 | ||
|
|
df78412896 | ||
|
|
16190aa878 | ||
|
|
e6e5b95adc | ||
|
|
990adcd3b3 | ||
|
|
75a5bbdbb1 | ||
|
|
af1746932f | ||
|
|
56ff5689f4 | ||
|
|
0dd15f3141 | ||
|
|
72fb7b9df7 | ||
|
|
d7e1297cce | ||
|
|
3c9d4ee38f | ||
|
|
828e6bb1b7 | ||
|
|
6e42d59716 | ||
|
|
6f589b5c84 | ||
|
|
6d1b8b81fa | ||
|
|
cddd7e0e94 | ||
|
|
340bc5f2f7 | ||
|
|
ecd117cd58 | ||
|
|
ea0788f56c | ||
|
|
4199702b9b | ||
|
|
5946aaa31f | ||
|
|
444b5dbd97 | ||
|
|
695ccfcc4d | ||
|
|
a6d5bdd001 | ||
|
|
bd4d8efd78 | ||
|
|
53baad766f | ||
|
|
8ac746188b | ||
|
|
62dbce089f | ||
|
|
fd5d0b2cbb | ||
|
|
6226e0c5a3 | ||
|
|
01a9be835f | ||
|
|
97eb66b0a5 | ||
|
|
048c5e68f1 | ||
|
|
8f39def993 | ||
|
|
0be674d7af | ||
|
|
e6499f7e5a | ||
|
|
10bd1d1969 | ||
|
|
ec94267b8e | ||
|
|
d3ad113bf5 | ||
|
|
8d7242a1ef | ||
|
|
13879dd374 | ||
|
|
0f519fd358 | ||
|
|
e7fb128499 | ||
|
|
c2d619cb7f | ||
|
|
78176cca90 | ||
|
|
dbc49649c0 | ||
|
|
49ee821029 | ||
|
|
e1499330bc | ||
|
|
222175e005 | ||
|
|
388927715e | ||
|
|
ac9e1febfb | ||
|
|
e47836cc64 | ||
|
|
f8f48f1c88 | ||
|
|
95e8a603a5 | ||
|
|
c400fd88f3 | ||
|
|
095d90fd22 | ||
|
|
797be92ddd | ||
|
|
7f23bd694c | ||
|
|
1cbf8b960a | ||
|
|
c8ce195522 | ||
|
|
4458ae042e | ||
|
|
1c3d7c1c73 | ||
|
|
cb3bbd169f | ||
|
|
ab107bfc0d | ||
|
|
d0b5b49bf8 | ||
|
|
1b4b1d5c9f | ||
|
|
aee800ab7a | ||
|
|
895b46307a | ||
|
|
d300d45f22 | ||
|
|
dd05f5278c | ||
|
|
1897008c72 | ||
|
|
328cdac60f | ||
|
|
3942c6cd55 | ||
|
|
f0f7b5aaf7 | ||
|
|
3ad9e44891 | ||
|
|
80bdaa1edc | ||
|
|
39acb224d1 | ||
|
|
f51d565db8 | ||
|
|
d608cf6536 | ||
|
|
0b49bd1985 | ||
|
|
fce69005a9 | ||
|
|
b73420b156 | ||
|
|
fb863cb39b | ||
|
|
8247ff15ed | ||
|
|
af8db9062c | ||
|
|
9039d52817 | ||
|
|
88d5e1cca8 | ||
|
|
57544e615f | ||
|
|
61a92d55ae | ||
|
|
940965f03d | ||
|
|
30a254e9be | ||
|
|
581782af28 | ||
|
|
72cad1409f | ||
|
|
e7e4985761 | ||
|
|
cdb3d29767 | ||
|
|
90fe5329e3 | ||
|
|
22e20cb2da | ||
|
|
a3454e50d7 | ||
|
|
75b8f5e543 | ||
|
|
1a0b22ef15 | ||
|
|
bc78d1a561 | ||
|
|
00b953a04e | ||
|
|
aa0ef529f5 | ||
|
|
bd134bf9c9 | ||
|
|
752267c521 | ||
|
|
34635e3460 | ||
|
|
ba0b4513f1 | ||
|
|
4764808450 | ||
|
|
c66fd67510 | ||
|
|
3997ca6454 | ||
|
|
4242100c53 | ||
|
|
32adcc3676 | ||
|
|
80c26606f0 | ||
|
|
a7852098f1 | ||
|
|
72638fc215 | ||
|
|
65418529cd | ||
|
|
ceea0d1730 | ||
|
|
764ea699b1 | ||
|
|
bdb7f522fb | ||
|
|
2461331e32 | ||
|
|
3464f40da3 | ||
|
|
3b2b79d539 | ||
|
|
8616fc6b05 | ||
|
|
9e9c001422 | ||
|
|
93bbd34055 | ||
|
|
cac953e812 | ||
|
|
aeb3662414 | ||
|
|
1687ce3182 | ||
|
|
2888e87bb8 | ||
|
|
094ebb8020 | ||
|
|
54ad52edc2 | ||
|
|
0e869f3cb5 | ||
|
|
4d40af6ac0 | ||
|
|
79a2f31056 | ||
|
|
b2341bf75c | ||
|
|
c4c4b473e5 | ||
|
|
6e26ccf25d | ||
|
|
83bfad3546 | ||
|
|
90f6fff1ae | ||
|
|
52f2b52990 | ||
|
|
48ed4b0e49 | ||
|
|
c3c609e7b9 | ||
|
|
6cd8fa6b0c | ||
|
|
ffb6d398d7 | ||
|
|
52674b4668 | ||
|
|
4ae2370137 | ||
|
|
cee55afa5c | ||
|
|
f998bbbe4c | ||
|
|
e5d19a9819 | ||
|
|
dd75d88d2f | ||
|
|
65ea01218a | ||
|
|
7a2234cd25 | ||
|
|
11ede2756e | ||
|
|
3e51fab387 | ||
|
|
962f413421 | ||
|
|
ae6c938abb | ||
|
|
68faae69c5 | ||
|
|
08edce7906 | ||
|
|
55eb493d1f | ||
|
|
d6be07f1b8 | ||
|
|
064a012b25 | ||
|
|
df26148e7c | ||
|
|
d26f533111 | ||
|
|
69575dbab3 | ||
|
|
9f4a430412 | ||
|
|
23843be981 | ||
|
|
486e3ffc0a | ||
|
|
8127e5a66f | ||
|
|
53167a3b52 | ||
|
|
1b77247c40 | ||
|
|
24374cf7e3 | ||
|
|
88de54ec90 | ||
|
|
3035d569cc | ||
|
|
51f9ad5a2c | ||
|
|
bb322f1bff | ||
|
|
72843e9c92 | ||
|
|
20fbe2fbbe | ||
|
|
bf073a84c8 | ||
|
|
35b158dba7 | ||
|
|
465c0e7dc3 | ||
|
|
eb4f6f2e9f | ||
|
|
0ff56e3a68 | ||
|
|
4ddc59589c | ||
|
|
1e15d7a33e | ||
|
|
e4e2b6ab00 | ||
|
|
af67690e75 | ||
|
|
b37ae484c0 | ||
|
|
13969bdd29 | ||
|
|
a3f5583326 | ||
|
|
f137c11c6c | ||
|
|
8d6afbd80d | ||
|
|
c46fa206f6 | ||
|
|
e8da206389 | ||
|
|
18f1b5f9d2 | ||
|
|
b2b8cf2357 | ||
|
|
a4fd88a440 | ||
|
|
96a92fd85f | ||
|
|
e5175d6309 | ||
|
|
b5ceee3336 | ||
|
|
a1624f61ae | ||
|
|
5ee26fc3f4 | ||
|
|
93ffb66e59 | ||
|
|
4b9bcfb014 | ||
|
|
a161c09441 | ||
|
|
0c396f76b2 | ||
|
|
b2408b1a7c | ||
|
|
c97826ed29 | ||
|
|
9c653a46bc | ||
|
|
eaa2ad4f05 | ||
|
|
88ce7837a6 | ||
|
|
9f5a183793 | ||
|
|
c2a6690d24 | ||
|
|
5e5b719704 | ||
|
|
4054c7d12d | ||
|
|
bb5e454b91 | ||
|
|
ffb12f9c0b | ||
|
|
a89786d079 | ||
|
|
2d3fd513d8 | ||
|
|
271d01dc9d | ||
|
|
d3ffaea042 | ||
|
|
404b593ab8 | ||
|
|
b9f1dea914 | ||
|
|
f3385e6453 | ||
|
|
a2e55f7861 | ||
|
|
761e0114a5 | ||
|
|
dcae128d06 | ||
|
|
a891a8badc | ||
|
|
f3ec5b533e | ||
|
|
d50397edf1 | ||
|
|
49986f22c8 | ||
|
|
70f279d978 | ||
|
|
84c5a75b6c | ||
|
|
97663e87a6 | ||
|
|
5956edcb8e | ||
|
|
7e975f2134 | ||
|
|
40de13f9c7 | ||
|
|
70946539e3 | ||
|
|
996c594dfc | ||
|
|
d8eeb79b63 | ||
|
|
cf61dd0704 | ||
|
|
6fd5f1563a | ||
|
|
3c643c917a | ||
|
|
378be0ef86 | ||
|
|
29e90969eb | ||
|
|
fb724514f3 | ||
|
|
1f11da75d2 | ||
|
|
a2fa65330d | ||
|
|
d3af66b7ed | ||
|
|
fcc433fe17 | ||
|
|
617bdf9910 | ||
|
|
3b2aa92eb7 | ||
|
|
4c17b56e28 | ||
|
|
ad13c83f93 | ||
|
|
768d67a8ae | ||
|
|
d827cda395 | ||
|
|
106e6c98a3 | ||
|
|
e7ad797d4e | ||
|
|
6e1fb71194 | ||
|
|
9f5dc7f091 | ||
|
|
57b273639c | ||
|
|
278d690a6b | ||
|
|
c91c0f7b47 | ||
|
|
6a406f4d45 | ||
|
|
eecaa850e0 | ||
|
|
f332332eaa | ||
|
|
79b0e76be0 | ||
|
|
30650efd98 | ||
|
|
b7759c8151 | ||
|
|
0382c35ac0 | ||
|
|
819262c93f | ||
|
|
db60f4bb1c | ||
|
|
7785ca55c2 | ||
|
|
75dcceff43 | ||
|
|
af91979d4c | ||
|
|
52cd4a77dd | ||
|
|
8a1da3c0ed | ||
|
|
9d67c36c32 | ||
|
|
f283709e62 | ||
|
|
5035559b08 | ||
|
|
01e1438382 | ||
|
|
4eee472043 | ||
|
|
5f89a1b9ca | ||
|
|
b9db5ad662 | ||
|
|
4a7960d64b | ||
|
|
5b8084e1fa | ||
|
|
ab67b67e4c | ||
|
|
f825931f92 | ||
|
|
6113edf2ce | ||
|
|
8413443c26 | ||
|
|
f67fb31bc5 | ||
|
|
d321ec5ed1 | ||
|
|
084ae184f9 | ||
|
|
d1ec652f7b | ||
|
|
7a2a6586be | ||
|
|
392dcf3092 | ||
|
|
8a983c784d | ||
|
|
a443263439 | ||
|
|
3e766b9f54 | ||
|
|
89b9501f35 | ||
|
|
816ae84005 | ||
|
|
c0e425cf46 | ||
|
|
9ebb4c7d12 | ||
|
|
46c3b35028 | ||
|
|
ef2b8be726 | ||
|
|
df51078858 | ||
|
|
5783b61631 | ||
|
|
98a53381fb | ||
|
|
daccfa5fe3 | ||
|
|
d82c24616f | ||
|
|
905ca3dcfc | ||
|
|
b4fb687c4f | ||
|
|
39fb2ae5ab | ||
|
|
b40beb0d1d | ||
|
|
4a96b9bb00 | ||
|
|
f83a178982 | ||
|
|
986b4276e1 | ||
|
|
6f6f418ec9 | ||
|
|
1463571cd7 | ||
|
|
7dfb0a81e3 | ||
|
|
9699d9467a | ||
|
|
08a2872527 | ||
|
|
7c81a807ea | ||
|
|
3bf7031e6a | ||
|
|
503fc980f4 | ||
|
|
efed11eb97 | ||
|
|
330820062f | ||
|
|
45d157fe3f | ||
|
|
812dea385c | ||
|
|
c582bdea46 | ||
|
|
e6c6a9381b | ||
|
|
4b4c0755c6 | ||
|
|
aeb0539c91 | ||
|
|
9feafa45f5 | ||
|
|
927df391f3 | ||
|
|
cbef6adeb1 | ||
|
|
2dee221861 | ||
|
|
0b175cb25d | ||
|
|
0820338b55 | ||
|
|
a2b46eee6f | ||
|
|
09a435320a | ||
|
|
bf56200c06 | ||
|
|
2d18df2011 | ||
|
|
bab87c0da8 | ||
|
|
148f272500 | ||
|
|
6de4af727b | ||
|
|
75946b9d14 | ||
|
|
1c63ee6743 | ||
|
|
efdaf0d986 | ||
|
|
3f6aeac33d | ||
|
|
d9692004cc | ||
|
|
67a12eecad | ||
|
|
37999e0870 | ||
|
|
66dc1e94f5 | ||
|
|
ebcce194a0 | ||
|
|
95eab94c80 | ||
|
|
41a6dbe06c | ||
|
|
fa22b0ec12 | ||
|
|
be60a367e8 | ||
|
|
608de34205 | ||
|
|
0a8f2edb05 | ||
|
|
41b08f38c5 | ||
|
|
c5226c9e59 | ||
|
|
3bad95b389 | ||
|
|
54ef7760b9 | ||
|
|
2ed5d34192 | ||
|
|
9336a2b4c5 | ||
|
|
eb92ca8cd7 | ||
|
|
d3922905c9 | ||
|
|
f5866d7f72 | ||
|
|
dbbc72d00f | ||
|
|
2b4bcf0b0a | ||
|
|
0851f2d0e2 | ||
|
|
ea9ed841ee | ||
|
|
567f3fd3cd | ||
|
|
9dcd8dc419 | ||
|
|
e19bd9d434 | ||
|
|
35ecd26634 | ||
|
|
ac3bb37c36 | ||
|
|
17b8b285a3 | ||
|
|
788bf383aa | ||
|
|
8d0b889f3c | ||
|
|
d250fb655d | ||
|
|
74eb79de17 | ||
|
|
e2eabfc141 | ||
|
|
a3ee43b31c | ||
|
|
12dd16d4bf | ||
|
|
a5b9e57576 | ||
|
|
6c194d257c | ||
|
|
09598e0ced | ||
|
|
6af2696f6a | ||
|
|
69dac77932 | ||
|
|
2764e0e5fa | ||
|
|
fa5cdc3afa | ||
|
|
8dae5ec47a |
2
.gitignore
vendored
@@ -20,6 +20,8 @@ logs/
|
||||
/server/build/
|
||||
/test_files/
|
||||
/annotations/build/
|
||||
/desktop-sdl/build/
|
||||
desktop-sdl/build/
|
||||
/android/assets/mindustry-maps/
|
||||
/android/assets/mindustry-saves/
|
||||
/core/assets/gifexport/
|
||||
|
||||
17
.travis.yml
@@ -1,21 +1,28 @@
|
||||
|
||||
jdk:
|
||||
- openjdk8
|
||||
script:
|
||||
- "git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc"
|
||||
- git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc
|
||||
- "./gradlew test"
|
||||
- "./gradlew desktop:dist -Pbuildversion=${TRAVIS_TAG:1}"
|
||||
- "./gradlew server:dist -Pbuildversion=${TRAVIS_TAG:1}"
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
- provider: releases
|
||||
skip_cleanup: true
|
||||
draft: false
|
||||
api_key:
|
||||
secure: Cv5wFtWt62/A24EvSEQvMow7gKPbZ3oATEFPuSghhB2TQz1dA40Zee3Qvk4LFlpLrhYo4K0ZSczCZRGpR+hCd8+Dpww52bheYEvWuh3ZQfvu/fXtEx2j5PwP1qMpmIgSxETV/gkD7l9FImdh0VzktYiAvQfmi0bEocG9/D4QwjFpNat7iwBdcMiw1MvAygpdIWRsjiw0RKlB2mWarmoHhQ7Gu7qlU3j50uaEvcrtmU0pBUPggNQwQRv32i9NPvNFxrqqlUjDLIS8JFea99zCkp8BwYqbEvBIMzd+Qip1/stLJJA3+cDUClbsDtg8rAVetzpOrdLEEBmqShFe5MDl2yEHcsgpN9CFsyTaUfvB3P3rVjizvycMm42IsUkXQiarm5xTQ/TIA8Rd8AHiSKuweNCg1Fd5SFaRtKy8JVLXuxyfUccmyje6hhz2L4lS2Wfj3mAG7sqZUCXhWP79EKdGkiPOjKv4CwXEKmuH3BMVqPlNUZJr9Eg3sV1FG0h2l+MVOOnR635qdUbb49sYojYxVruMLX0BH1c4ZCu230m8CUoWA1Em1QNI75ya7+9Y5T6AsgWDVpBvdUo9fWNbdp+VQ0GskFQsJD5wtnxbcbHeFiERAgGBm7z6qt9u9LrQpBH+dsW52ADvYsu3L4nQEa+sdMHwTTwmGY+iUvsxu0DqxGg=
|
||||
file:
|
||||
- "desktop/build/libs/desktop-release.jar"
|
||||
- "server/build/libs/server-release.jar"
|
||||
- desktop/build/libs/desktop-release.jar
|
||||
- server/build/libs/server-release.jar
|
||||
on:
|
||||
repo: Anuken/Mindustry
|
||||
tags: true
|
||||
- provider: script
|
||||
script: bash update_wiki.sh
|
||||
on:
|
||||
repo: Anuken/Mindustry
|
||||
tags: true
|
||||
env:
|
||||
global:
|
||||
secure: TqlUl/ojjkCMVOGbCTKz7Cnr4F08UyWzY/CiJ0vvUOGJGZ1qm7XavAlDf5XT0egU4mvr37THubFO8vojbqmrmy0oZnYh3njKFA8axgyZ8PyKkjGHOfd0i6qyEWsOr9H90/2X8r3LwEeLaDFyHpu3wljIGBjweg53g2qwmDwCFa9UR80FJZ+xDB+rD6B3cXT0DTEkCoLZXLqXm0Y3HvBdSuBL1LR/FNb2BSxNq+tNLGiz1kdQZV5erausbbZypBoGxzz63xAnyz2kkFz73A8xQYVTzGbFodTPz7HM13GVZ5s43I03Y+HYyHBgBaSLziO2hi2kzVJccOwzBp7wS4fs1MqsFY5+IeWJ9k+hm89NiYT7+6zlEgoUMlIniny1qLqWTzx7btUeuC/y/h5TVBNgaV+z0jmHycHfeSyq5I+vmX4J8qe3wmaN8TcdqYKU5nIznOTk3CM5Fzu0Bs9vkCkOxmormmcjMFW1RbdOLc/hpZWZggsBA88sNEAI8eq+r5QEeqzeCx8YKoZDjdrsqvgLMc3El3gS9oMGxkn0Y/TEcqs9Tc4BXtTkqIA68hD0DYzlAxYjVbbkAI9Hh9lHNvV3Dr/oCkGXQ/HflM143kj1L3tSBZpqeqQE2XhngB5nqpS3OZTmZbMTQ8qD2luU18yaTGMLF5tJS/fdKPRx0gQ1kL8=
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||

|
||||

|
||||
|
||||
[](https://travis-ci.org/Anuken/Mindustry)
|
||||
[](https://discord.gg/mindustry)
|
||||
@@ -40,6 +40,6 @@ After building, the output .JAR file should be in `/desktop/build/libs/desktop-r
|
||||
|
||||
### Downloads
|
||||
|
||||
<a href="https://anuke.itch.io/mindustry"><img src="https://i.imgur.com/sk26hTV.png" width="auto" height="75"></a>
|
||||
<a href="https://anuke.itch.io/mindustry"><img src="https://static.itch.io/images/badge.svg" width="auto" height="75"></a>
|
||||
|
||||
<a href="https://play.google.com/store/apps/details?id=io.anuke.mindustry&hl=en"><img src="https://i.imgur.com/8dF6l81.png" width="auto" height="75"></a>
|
||||
<a href="https://play.google.com/store/apps/details?id=io.anuke.mindustry&hl=en"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Get_it_on_Google_play.svg/1280px-Get_it_on_Google_play.svg.png" width="auto" height="75"></a>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
package="io.anuke.mindustry">
|
||||
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
@@ -61,10 +60,6 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
|
||||
<activity android:name=".DonationsActivity"
|
||||
android:theme="@style/GdxTheme" />
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
||||
@@ -8,7 +8,7 @@ buildscript {
|
||||
}
|
||||
|
||||
dependencies{
|
||||
classpath 'com.android.tools.build:gradle:3.3.2'
|
||||
classpath 'com.android.tools.build:gradle:3.4.1'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,9 +27,6 @@ repositories {
|
||||
dependencies{
|
||||
implementation project(":core")
|
||||
implementation project(":net")
|
||||
implementation 'com.android.support:support-v4:28.0.0'
|
||||
implementation 'org.sufficientlysecure:donations:2.5'
|
||||
implementation 'com.google.android.gms:play-services-auth:16.0.1'
|
||||
|
||||
implementation arcModule("backends:backend-android")
|
||||
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
|
||||
@@ -47,9 +44,9 @@ dependencies {
|
||||
task deploy(type: Copy){
|
||||
dependsOn "assembleRelease"
|
||||
|
||||
from "build/outputs/apk/google/release/android-google-release.apk"
|
||||
from "build/outputs/apk/release/android-release.apk"
|
||||
into "../deploy/"
|
||||
rename ("android-google-release.apk", appName + "-android-" + getVersionString() + ".apk")
|
||||
rename("android-release.apk", appName + "-android-" + getVersionString() + ".apk")
|
||||
}
|
||||
|
||||
android{
|
||||
@@ -103,12 +100,6 @@ android {
|
||||
|
||||
flavorDimensions "google"
|
||||
|
||||
productFlavors {
|
||||
google {
|
||||
buildConfigField "boolean", "DONATIONS_GOOGLE", "true"
|
||||
}
|
||||
}
|
||||
|
||||
signingConfigs{
|
||||
release{
|
||||
if(project.hasProperty("RELEASE_STORE_FILE")){
|
||||
@@ -122,12 +113,14 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
if(project.hasProperty("RELEASE_STORE_FILE")) {
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// called every time gradle gets executed, takes the native dependencies of
|
||||
// the natives configuration, and extracts them to the proper libs/ folders
|
||||
// so they get packed with the APK.
|
||||
@@ -176,26 +169,3 @@ task run(type: Exec) {
|
||||
def adb = path + "/platform-tools/adb"
|
||||
commandLine "$adb", 'shell', 'am', 'start', '-n', 'io.anuke.mindustry/io.anuke.mindustry.AndroidLauncher'
|
||||
}
|
||||
|
||||
// sets up the Android Idea project, using the old Ant based build.
|
||||
idea {
|
||||
module {
|
||||
sourceDirs += file("src")
|
||||
scopes = [COMPILE: [plus: [project.configurations.compile]]]
|
||||
|
||||
iml {
|
||||
withXml {
|
||||
def node = it.asNode()
|
||||
def builder = NodeBuilder.newInstance()
|
||||
builder.current = node
|
||||
builder.component(name: "FacetManager") {
|
||||
facet(type: "android", name: "Android") {
|
||||
configuration {
|
||||
option(name: "UPDATE_PROPERTY_FILES", value: "true")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,5 @@
|
||||
#
|
||||
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
|
||||
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
||||
|
||||
# Project target.
|
||||
target=android-19
|
||||
|
||||
|
Before Width: | Height: | Size: 20 KiB |
@@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical"
|
||||
android:background="#000">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="top"
|
||||
android:adjustViewBounds="false"
|
||||
android:contentDescription="background"
|
||||
android:cropToPadding="false"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/background" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/donations_activity_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Mindustry</string>
|
||||
<string-array name="donation_google_catalog_values">
|
||||
<item>1 달러</item>
|
||||
<item>2 달러</item>
|
||||
<item>5 달러</item>
|
||||
<item>10 달러</item>
|
||||
<item>15 달러</item>
|
||||
<item>25 달러</item>
|
||||
<item>50 달러</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Mindustry</string>
|
||||
<string-array name="donation_google_catalog_values">
|
||||
<item>1 Доллар</item>
|
||||
<item>2 Доллара</item>
|
||||
<item>5 Долларов</item>
|
||||
<item>10 Долларов</item>
|
||||
<item>15 Долларов</item>
|
||||
<item>25 Долларов</item>
|
||||
<item>50 Долларов</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Mindustry</string>
|
||||
<string-array name="donation_google_catalog_values">
|
||||
<item>1 Доллар</item>
|
||||
<item>2 Доллара</item>
|
||||
<item>5 Долларів</item>
|
||||
<item>10 Долларів</item>
|
||||
<item>15 Долларів</item>
|
||||
<item>25 Долларів</item>
|
||||
<item>50 Долларів</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
@@ -2,14 +2,5 @@
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Mindustry</string>
|
||||
<string-array name="donation_google_catalog_values">
|
||||
<item>1 Dollar</item>
|
||||
<item>2 Dollars</item>
|
||||
<item>5 Dollars</item>
|
||||
<item>10 Dollars</item>
|
||||
<item>15 Dollars</item>
|
||||
<item>25 Dollars</item>
|
||||
<item>50 Dollars</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
@@ -10,31 +10,22 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings.Secure;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
import com.google.android.gms.common.GoogleApiAvailability;
|
||||
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
|
||||
import com.google.android.gms.common.GooglePlayServicesRepairableException;
|
||||
import com.google.android.gms.security.ProviderInstaller;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.backends.android.surfaceview.AndroidApplication;
|
||||
import io.anuke.arc.backends.android.surfaceview.AndroidApplicationConfiguration;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.function.Predicate;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
import io.anuke.arc.util.Strings;
|
||||
import io.anuke.arc.util.serialization.Base64Coder;
|
||||
import io.anuke.net.KryoClient;
|
||||
import io.anuke.net.KryoServer;
|
||||
import io.anuke.mindustry.core.Platform;
|
||||
import io.anuke.mindustry.game.Saves.SaveSlot;
|
||||
import io.anuke.mindustry.io.SaveIO;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.net.*;
|
||||
import io.anuke.mindustry.ui.dialogs.FileChooser;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
@@ -57,11 +48,6 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
moveTaskToBack(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openDonations(){
|
||||
showDonations();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUUID(){
|
||||
try{
|
||||
@@ -85,8 +71,8 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){
|
||||
chooser = new FileChooser(text, file -> file.extension().equalsIgnoreCase(filetype), open, cons);
|
||||
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, Predicate<String> filetype){
|
||||
chooser = new FileChooser(text, file -> filetype.test(file.extension().toLowerCase()), open, cons);
|
||||
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M || (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
|
||||
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
|
||||
chooser.show();
|
||||
@@ -99,7 +85,7 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
||||
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
}
|
||||
requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE);
|
||||
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,20 +105,13 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
}
|
||||
};
|
||||
|
||||
try{
|
||||
ProviderInstaller.installIfNeeded(this);
|
||||
}catch(GooglePlayServicesRepairableException e){
|
||||
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
|
||||
apiAvailability.getErrorDialog(this, e.getConnectionStatusCode(), 0).show();
|
||||
}catch(GooglePlayServicesNotAvailableException e){
|
||||
Log.e("SecurityException", "Google Play Services not available.");
|
||||
}
|
||||
if(doubleScaleTablets && isTablet(this.getContext())){
|
||||
Unit.dp.addition = 0.5f;
|
||||
}
|
||||
|
||||
config.hideStatusBar = true;
|
||||
Net.setClientProvider(new KryoClient());
|
||||
Net.setServerProvider(new KryoServer());
|
||||
Net.setClientProvider(new ArcNetClient());
|
||||
Net.setServerProvider(new ArcNetServer());
|
||||
initialize(new Mindustry(), config);
|
||||
checkFiles(getIntent());
|
||||
}
|
||||
@@ -167,7 +146,7 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
InputStream inStream;
|
||||
if(myFile != null) inStream = new FileInputStream(myFile);
|
||||
else inStream = getContentResolver().openInputStream(uri);
|
||||
Core.app.post(() -> {
|
||||
Core.app.post(() -> Core.app.post(() -> {
|
||||
if(save){ //open save
|
||||
System.out.println("Opening save.");
|
||||
FileHandle file = Core.files.local("temp-save." + saveExtension);
|
||||
@@ -177,7 +156,7 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
SaveSlot slot = control.saves.importSave(file);
|
||||
ui.load.runLoadSave(slot);
|
||||
}catch(IOException e){
|
||||
ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, false)));
|
||||
ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, true)));
|
||||
}
|
||||
}else{
|
||||
ui.showError("$save.import.invalid");
|
||||
@@ -193,29 +172,15 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
ui.editor.beginEditMap(file);
|
||||
});
|
||||
}
|
||||
});
|
||||
}));
|
||||
}
|
||||
}catch(IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isPackageInstalled(String packagename){
|
||||
try{
|
||||
getPackageManager().getPackageInfo(packagename, 0);
|
||||
return true;
|
||||
}catch(Exception e){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isTablet(Context context){
|
||||
TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
|
||||
}
|
||||
|
||||
private void showDonations(){
|
||||
Intent intent = new Intent(this, DonationsActivity.class);
|
||||
startActivity(intent);
|
||||
return manager != null && manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
package io.anuke.mindustry;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import org.sufficientlysecure.donations.DonationsFragment;
|
||||
|
||||
public class DonationsActivity extends FragmentActivity{
|
||||
/**
|
||||
* Google
|
||||
*/
|
||||
private static final String GOOGLE_PUBKEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzG93KhpfBPKTo2jF0yxbWkkmMKwsPNM4SsMj1aDq7vv6n3R+mqJVfprOJxFfJh7JchXTflLIgiaKXFAiU70gJbMTniEWnEaFSxAeF09a7U0RjOwN+7rFwjCG91c2CpYxPanBTQP4zasc1ODPVzq4q6/4ByjhenN71V4WmR08NFIAodcfFPrOkDPil7i8y7cgcd1Ky53U0TS+LLYJttAK3XdTK4s7VE3I5IKoeNa4uwCmIM59R67q2k3cXjLk/nP6MP+y++EzHN/PTiR1sVg4dMP8K31RPw/1QNLPQwJz6Wc872oWwb7xo5gkoXbDc5WPPydsi8F3SyKNaYwzN6CDFQIDAQAB";
|
||||
private static final String[] GOOGLE_CATALOG = new String[]{
|
||||
"mindustry.donation.1", "mindustry.donation.2", "mindustry.donation.5",
|
||||
"mindustry.donation.10", "mindustry.donation.15",
|
||||
"mindustry.donation.25", "mindustry.donation.50"};
|
||||
DonationsFragment donationsFragment;
|
||||
|
||||
/**
|
||||
* Called when the activity is first created.
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState){
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setTheme(R.style.GdxTheme);
|
||||
|
||||
setContentView(R.layout.donations_activity);
|
||||
|
||||
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||
if(BuildConfig.DONATIONS_GOOGLE){
|
||||
donationsFragment = DonationsFragment.newInstance(BuildConfig.DEBUG, true, GOOGLE_PUBKEY, GOOGLE_CATALOG,
|
||||
getResources().getStringArray(R.array.donation_google_catalog_values), false, null, null,
|
||||
null, false, null, null, false, null);
|
||||
}
|
||||
|
||||
|
||||
ft.replace(R.id.donations_activity_container, donationsFragment, "donationsFragment");
|
||||
ft.commit();
|
||||
}
|
||||
|
||||
public void onStart(){
|
||||
super.onStart();
|
||||
Button b = findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button);
|
||||
b.setOnClickListener(view -> {
|
||||
donationsFragment.donateGoogleOnClick(donationsFragment.getView());
|
||||
b.setEnabled(false);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Needed for Google Play In-app Billing. It uses startIntentSenderForResult(). The result is not propagated to
|
||||
* the Fragment like in startActivityForResult(). Thus we need to propagate manually to our Fragment.
|
||||
*/
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data){
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
Button b = findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button);
|
||||
b.setEnabled(true);
|
||||
|
||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
Fragment fragment = fragmentManager.findFragmentByTag("donationsFragment");
|
||||
if(fragment != null){
|
||||
fragment.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,30 @@
|
||||
package io.anuke.annotations;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.lang.annotation.*;
|
||||
|
||||
public class Annotations{
|
||||
|
||||
@Target({ElementType.METHOD, ElementType.FIELD})
|
||||
/** Indicates that a method should always call its super version. */
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface CallSuper{
|
||||
|
||||
}
|
||||
|
||||
/** Annotation that allows overriding CallSuper annotation. To be used on method that overrides method with CallSuper annotation from parent class.*/
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface OverrideCallSuper {
|
||||
}
|
||||
|
||||
/** Indicates that a method return or field can be null.*/
|
||||
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface Nullable{
|
||||
|
||||
}
|
||||
|
||||
/** Indicates that a method return or field cannot be null.*/
|
||||
@Target({ElementType.METHOD, ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface NonNull{
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
package io.anuke.annotations;
|
||||
|
||||
import com.sun.source.util.TreePath;
|
||||
import com.sun.source.util.Trees;
|
||||
import com.sun.tools.javac.tree.JCTree;
|
||||
import com.sun.tools.javac.tree.JCTree.JCExpressionStatement;
|
||||
import io.anuke.annotations.Annotations.OverrideCallSuper;
|
||||
|
||||
import javax.annotation.processing.*;
|
||||
import javax.lang.model.SourceVersion;
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.tools.Diagnostic.Kind;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SupportedAnnotationTypes("java.lang.Override")
|
||||
public class CallSuperAnnotationProcessor extends AbstractProcessor{
|
||||
private Trees trees;
|
||||
|
||||
@Override
|
||||
public void init (ProcessingEnvironment pe) {
|
||||
super.init(pe);
|
||||
trees = Trees.instance(pe);
|
||||
}
|
||||
|
||||
public boolean process (Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
|
||||
for (Element e : roundEnv.getElementsAnnotatedWith(Override.class)) {
|
||||
if (e.getAnnotation(OverrideCallSuper.class) != null) return false;
|
||||
|
||||
CodeAnalyzerTreeScanner codeScanner = new CodeAnalyzerTreeScanner();
|
||||
codeScanner.setMethodName(e.getSimpleName().toString());
|
||||
|
||||
TreePath tp = trees.getPath(e.getEnclosingElement());
|
||||
codeScanner.scan(tp, trees);
|
||||
|
||||
if (codeScanner.isCallSuperUsed()) {
|
||||
List list = codeScanner.getMethod().getBody().getStatements();
|
||||
|
||||
if (!doesCallSuper(list, codeScanner.getMethodName())) {
|
||||
processingEnv.getMessager().printMessage(Kind.ERROR, "Overriding method '" + codeScanner.getMethodName() + "' must explicitly call super method from its parent class.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean doesCallSuper (List list, String methodName) {
|
||||
for (Object object : list) {
|
||||
if (object instanceof JCTree.JCExpressionStatement) {
|
||||
JCTree.JCExpressionStatement expr = (JCExpressionStatement) object;
|
||||
String exprString = expr.toString();
|
||||
if (exprString.startsWith("super." + methodName) && exprString.endsWith(");")) return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SourceVersion getSupportedSourceVersion () {
|
||||
return SourceVersion.RELEASE_8;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
package io.anuke.annotations;
|
||||
|
||||
import io.anuke.annotations.MethodEntry;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/** Represents a class witha list method entries to include in it. */
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
package io.anuke.annotations;
|
||||
|
||||
import com.sun.source.tree.*;
|
||||
import com.sun.source.util.TreePathScanner;
|
||||
import com.sun.source.util.Trees;
|
||||
import com.sun.tools.javac.code.Scope;
|
||||
import com.sun.tools.javac.code.Symbol;
|
||||
import com.sun.tools.javac.code.Symbol.MethodSymbol;
|
||||
import com.sun.tools.javac.code.Type.ClassType;
|
||||
import com.sun.tools.javac.tree.JCTree.JCIdent;
|
||||
import com.sun.tools.javac.tree.JCTree.JCTypeApply;
|
||||
import io.anuke.annotations.Annotations.CallSuper;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
|
||||
class CodeAnalyzerTreeScanner extends TreePathScanner<Object, Trees> {
|
||||
private String methodName;
|
||||
private MethodTree method;
|
||||
private boolean callSuperUsed;
|
||||
|
||||
@Override
|
||||
public Object visitClass (ClassTree classTree, Trees trees) {
|
||||
Tree extendTree = classTree.getExtendsClause();
|
||||
|
||||
if (extendTree instanceof JCTypeApply) { //generic classes case
|
||||
JCTypeApply generic = (JCTypeApply) extendTree;
|
||||
extendTree = generic.clazz;
|
||||
}
|
||||
|
||||
if (extendTree instanceof JCIdent) {
|
||||
JCIdent tree = (JCIdent) extendTree;
|
||||
Scope members = tree.sym.members();
|
||||
|
||||
if (checkScope(members))
|
||||
return super.visitClass(classTree, trees);
|
||||
|
||||
if (checkSuperTypes((ClassType) tree.type))
|
||||
return super.visitClass(classTree, trees);
|
||||
|
||||
}
|
||||
callSuperUsed = false;
|
||||
|
||||
return super.visitClass(classTree, trees);
|
||||
}
|
||||
|
||||
public boolean checkSuperTypes (ClassType type) {
|
||||
if (type.supertype_field != null && type.supertype_field.tsym != null) {
|
||||
if (checkScope(type.supertype_field.tsym.members()))
|
||||
return true;
|
||||
else
|
||||
return checkSuperTypes((ClassType) type.supertype_field);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean checkScope (Scope members) {
|
||||
for (Symbol s : members.getElements()) {
|
||||
if (s instanceof MethodSymbol) {
|
||||
MethodSymbol ms = (MethodSymbol) s;
|
||||
|
||||
if (ms.getSimpleName().toString().equals(methodName)) {
|
||||
Annotation annotation = ms.getAnnotation(CallSuper.class);
|
||||
if (annotation != null) {
|
||||
callSuperUsed = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visitMethod (MethodTree methodTree, Trees trees) {
|
||||
if (methodTree.getName().toString().equals(methodName))
|
||||
method = methodTree;
|
||||
|
||||
return super.visitMethod(methodTree, trees);
|
||||
}
|
||||
|
||||
public void setMethodName (String methodName) {
|
||||
this.methodName = methodName;
|
||||
}
|
||||
|
||||
public String getMethodName () {
|
||||
return methodName;
|
||||
}
|
||||
|
||||
public MethodTree getMethod () {
|
||||
return method;
|
||||
}
|
||||
|
||||
public boolean isCallSuperUsed () {
|
||||
return callSuperUsed;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
package io.anuke.annotations;
|
||||
|
||||
import io.anuke.annotations.Annotations.Loc;
|
||||
import io.anuke.annotations.Annotations.PacketPriority;
|
||||
import io.anuke.annotations.Annotations.Variant;
|
||||
import io.anuke.annotations.Annotations.*;
|
||||
|
||||
import javax.lang.model.element.ExecutableElement;
|
||||
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
package io.anuke.annotations;
|
||||
|
||||
import com.squareup.javapoet.FieldSpec;
|
||||
import com.squareup.javapoet.JavaFile;
|
||||
import com.squareup.javapoet.TypeSpec;
|
||||
import com.squareup.javapoet.*;
|
||||
import io.anuke.annotations.Annotations.Loc;
|
||||
import io.anuke.annotations.Annotations.Remote;
|
||||
import io.anuke.annotations.IOFinder.ClassSerializer;
|
||||
|
||||
import javax.annotation.processing.*;
|
||||
import javax.lang.model.SourceVersion;
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.ExecutableElement;
|
||||
import javax.lang.model.element.Modifier;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.*;
|
||||
import javax.tools.Diagnostic.Kind;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -3,9 +3,7 @@ package io.anuke.annotations;
|
||||
import com.squareup.javapoet.*;
|
||||
import io.anuke.annotations.IOFinder.ClassSerializer;
|
||||
|
||||
import javax.lang.model.element.Modifier;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.VariableElement;
|
||||
import javax.lang.model.element.*;
|
||||
import javax.tools.Diagnostic.Kind;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Constructor;
|
||||
@@ -25,7 +23,6 @@ public class RemoteReadGenerator{
|
||||
|
||||
/**
|
||||
* Generates a class for reading remote invoke packets.
|
||||
*
|
||||
* @param entries List of methods to use.
|
||||
* @param className Simple target class name.
|
||||
* @param packageName Full target package name.
|
||||
|
||||
@@ -4,10 +4,7 @@ import com.squareup.javapoet.*;
|
||||
import io.anuke.annotations.Annotations.Loc;
|
||||
import io.anuke.annotations.IOFinder.ClassSerializer;
|
||||
|
||||
import javax.lang.model.element.ExecutableElement;
|
||||
import javax.lang.model.element.Modifier;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.VariableElement;
|
||||
import javax.lang.model.element.*;
|
||||
import javax.tools.Diagnostic.Kind;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
@@ -5,21 +5,15 @@ import io.anuke.annotations.Annotations.Serialize;
|
||||
|
||||
import javax.annotation.processing.*;
|
||||
import javax.lang.model.SourceVersion;
|
||||
import javax.lang.model.element.Modifier;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.VariableElement;
|
||||
import javax.lang.model.element.*;
|
||||
import javax.lang.model.util.ElementFilter;
|
||||
import java.io.DataInput;
|
||||
import java.io.DataOutput;
|
||||
import java.io.IOException;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SupportedSourceVersion(SourceVersion.RELEASE_8)
|
||||
@SupportedAnnotationTypes({
|
||||
"io.anuke.annotations.Annotations.Serialize"
|
||||
})
|
||||
@SupportedAnnotationTypes("io.anuke.annotations.Annotations.Serialize")
|
||||
public class SerializeAnnotationProcessor extends AbstractProcessor{
|
||||
/** Target class name. */
|
||||
private static final String className = "Serialization";
|
||||
@@ -48,10 +42,13 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
|
||||
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
|
||||
classBuilder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"unchecked\"").build());
|
||||
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning);
|
||||
|
||||
|
||||
MethodSpec.Builder method = MethodSpec.methodBuilder("init").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
|
||||
|
||||
for(TypeElement elem : elements){
|
||||
TypeName type = TypeName.get(elem.asType());
|
||||
String simpleTypeName = type.toString().substring(type.toString().lastIndexOf('.') + 1);
|
||||
|
||||
TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("")
|
||||
.addSuperinterface(ParameterizedTypeName.get(
|
||||
@@ -74,7 +71,8 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
|
||||
|
||||
List<VariableElement> fields = ElementFilter.fieldsIn(Utils.elementUtils.getAllMembers(elem));
|
||||
for(VariableElement field : fields){
|
||||
if(field.getModifiers().contains(Modifier.STATIC) || field.getModifiers().contains(Modifier.TRANSIENT) || field.getModifiers().contains(Modifier.PRIVATE)) continue;
|
||||
if(field.getModifiers().contains(Modifier.STATIC) || field.getModifiers().contains(Modifier.TRANSIENT) || field.getModifiers().contains(Modifier.PRIVATE))
|
||||
continue;
|
||||
|
||||
String name = field.getSimpleName().toString();
|
||||
String typeName = Utils.typeUtils.erasure(field.asType()).toString().replace('$', '.');
|
||||
@@ -96,10 +94,8 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
|
||||
|
||||
method.addStatement("io.anuke.arc.Core.settings.setSerializer($N, $L)", Utils.elementUtils.getBinaryName(elem).toString().replace('$', '.') + ".class", serializer.build());
|
||||
|
||||
String sname = type.toString().substring(type.toString().lastIndexOf('.') + 1);
|
||||
|
||||
name(writeMethod, "write" + sname);
|
||||
name(readMethod, "read" + sname);
|
||||
name(writeMethod, "write" + simpleTypeName);
|
||||
name(readMethod, "read" + simpleTypeName);
|
||||
|
||||
writeMethod.addModifiers(Modifier.STATIC);
|
||||
readMethod.addModifiers(Modifier.STATIC);
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
package io.anuke.annotations;
|
||||
|
||||
import com.squareup.javapoet.JavaFile;
|
||||
import com.squareup.javapoet.MethodSpec;
|
||||
import com.squareup.javapoet.TypeName;
|
||||
import com.squareup.javapoet.TypeSpec;
|
||||
import com.squareup.javapoet.*;
|
||||
import io.anuke.annotations.Annotations.Struct;
|
||||
import io.anuke.annotations.Annotations.StructField;
|
||||
|
||||
import javax.annotation.processing.*;
|
||||
import javax.lang.model.SourceVersion;
|
||||
import javax.lang.model.element.Modifier;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.VariableElement;
|
||||
import javax.lang.model.element.*;
|
||||
import javax.lang.model.type.TypeKind;
|
||||
import javax.lang.model.util.ElementFilter;
|
||||
import javax.tools.Diagnostic.Kind;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**Generates ""value types"" classes that are packed into integer primitives of the most aproppriate size.
|
||||
* It would be nice if Java didn't make crazy hacks like this necessary.*/
|
||||
/**
|
||||
* Generates ""value types"" classes that are packed into integer primitives of the most aproppriate size.
|
||||
* It would be nice if Java didn't make crazy hacks like this necessary.
|
||||
*/
|
||||
@SupportedSourceVersion(SourceVersion.RELEASE_8)
|
||||
@SupportedAnnotationTypes({
|
||||
"io.anuke.annotations.Annotations.Struct"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
io.anuke.annotations.RemoteMethodAnnotationProcessor
|
||||
io.anuke.annotations.SerializeAnnotationProcessor
|
||||
io.anuke.annotations.StructAnnotationProcessor
|
||||
io.anuke.annotations.CallSuperAnnotationProcessor
|
||||
54
build.gradle
@@ -9,14 +9,12 @@ buildscript{
|
||||
|
||||
dependencies{
|
||||
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.6'
|
||||
classpath "com.badlogicgames.gdx:gdx-tools:1.9.9"
|
||||
classpath "com.badlogicgames.gdx:gdx-tools:1.9.10"
|
||||
classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects{
|
||||
apply plugin: "idea"
|
||||
|
||||
version = 'release'
|
||||
|
||||
ext{
|
||||
@@ -24,12 +22,12 @@ allprojects{
|
||||
versionModifier = 'beta'
|
||||
if(!project.hasProperty("versionType")) versionType = 'official'
|
||||
appName = 'Mindustry'
|
||||
gdxVersion = '1.9.9'
|
||||
gdxVersion = '1.9.10'
|
||||
roboVMVersion = '2.3.6'
|
||||
arcHash = null
|
||||
|
||||
debugged = {
|
||||
return new File(projectDir.parent, '../debug').exists() && !project.hasProperty("release")
|
||||
return new File(projectDir.parent, '../debug').exists() && !project.hasProperty("release") && project.hasProperty("args")
|
||||
}
|
||||
|
||||
localArc = {
|
||||
@@ -37,7 +35,7 @@ allprojects{
|
||||
}
|
||||
|
||||
getArcHash = {
|
||||
//get latest commit hash from gtihub since JITPack's '-snapshot' version doesn't work correctly
|
||||
//get latest commit hash from github since JITPack's '-snapshot' version doesn't work correctly
|
||||
if(arcHash == null){
|
||||
try{
|
||||
arcHash = 'git ls-remote https://github.com/Anuken/Arc.git'.execute().text.split("\t")[0]
|
||||
@@ -89,7 +87,8 @@ allprojects{
|
||||
|
||||
try{
|
||||
pfile.createNewFile()
|
||||
}catch(Exception ignored){}
|
||||
}catch(Exception ignored){
|
||||
}
|
||||
|
||||
if(pfile.exists()){
|
||||
props.load(new FileInputStream(pfile))
|
||||
@@ -112,7 +111,10 @@ allprojects{
|
||||
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
maven{ url "https://oss.sonatype.org/content/repositories/releases/" }
|
||||
maven{ url 'https://jitpack.io' }
|
||||
jcenter()
|
||||
}
|
||||
|
||||
tasks.withType(Javadoc).all{ enabled = false }
|
||||
}
|
||||
|
||||
project(":desktop"){
|
||||
@@ -128,7 +130,24 @@ project(":desktop"){
|
||||
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
|
||||
|
||||
compile arcModule("backends:backend-lwjgl3")
|
||||
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.0'
|
||||
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.2'
|
||||
}
|
||||
}
|
||||
|
||||
project(":desktop-sdl"){
|
||||
apply plugin: "java"
|
||||
|
||||
dependencies{
|
||||
compile project(":core")
|
||||
compile project(":net")
|
||||
|
||||
if(debugged()) compile project(":debug")
|
||||
|
||||
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
||||
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
|
||||
|
||||
compile arcModule("backends:backend-sdl")
|
||||
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.2'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,10 +189,12 @@ project(":ios"){
|
||||
project(":core"){
|
||||
apply plugin: "java"
|
||||
|
||||
task finish{
|
||||
task preGen{
|
||||
generateLocales()
|
||||
}
|
||||
|
||||
dependencies{
|
||||
if(System.properties["user.name"] == "anuke"){
|
||||
task cleanGen{
|
||||
doFirst{
|
||||
delete{
|
||||
@@ -185,7 +206,7 @@ project(":core"){
|
||||
task copyGen{
|
||||
doLast{
|
||||
copy{
|
||||
from("../core/build/classes/java/main/io/anuke/mindustry/gen/"){
|
||||
from("../core/build/generated/sources/annotationProcessor/java/main/io/anuke/mindustry/gen"){
|
||||
include "**/*.java"
|
||||
}
|
||||
|
||||
@@ -194,12 +215,15 @@ project(":core"){
|
||||
}
|
||||
}
|
||||
|
||||
dependencies{
|
||||
compileJava.dependsOn(cleanGen)
|
||||
compileJava.finalizedBy(copyGen)
|
||||
}
|
||||
|
||||
compileJava.dependsOn(preGen)
|
||||
|
||||
compile arcModule("arc-core")
|
||||
compile arcModule("extensions:freetype")
|
||||
compile arcModule("extensions:arcnet")
|
||||
if(localArc() && debugged()) compile arcModule("extensions:recorder")
|
||||
|
||||
compileOnly project(":annotations")
|
||||
@@ -239,6 +263,12 @@ project(":tools"){
|
||||
|
||||
dependencies{
|
||||
compile project(":core")
|
||||
|
||||
//for render tests
|
||||
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
||||
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
|
||||
|
||||
compile arcModule("backends:backend-sdl")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,6 +277,7 @@ project(":annotations"){
|
||||
|
||||
dependencies{
|
||||
compile 'com.squareup:javapoet:1.11.0'
|
||||
compile files("${System.getProperty('java.home')}/../lib/tools.jar")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,7 +287,6 @@ project(":net"){
|
||||
dependencies{
|
||||
compile project(":core")
|
||||
compile "org.lz4:lz4-java:1.4.1"
|
||||
compile 'com.github.Anuken:kryonet:a64d2280880e80566ca1bdaffa55de43e51cad38'
|
||||
compile 'com.github.Anuken:WaifUPnP:05eb46bc577fd7674596946ba288c96c0cedd893'
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 121 B After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 312 B After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 1018 B After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 215 B After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 123 B After Width: | Height: | Size: 1.8 KiB |
BIN
core/assets-raw/sprites/blocks/distribution/bridge-arrow.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 83 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 123 B |
|
Before Width: | Height: | Size: 95 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 119 B After Width: | Height: | Size: 1.7 KiB |
BIN
core/assets-raw/sprites/blocks/distribution/center.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 98 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 98 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 98 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 119 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 106 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 103 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 133 B After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 120 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 163 B After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 115 B After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 273 B After Width: | Height: | Size: 852 B |
|
Before Width: | Height: | Size: 405 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 83 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 116 B |
|
Before Width: | Height: | Size: 78 B After Width: | Height: | Size: 101 B |
|
Before Width: | Height: | Size: 120 B After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 253 B After Width: | Height: | Size: 800 B |
|
Before Width: | Height: | Size: 206 B After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 172 B After Width: | Height: | Size: 474 B |
|
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 119 B After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 168 B After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 155 B After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 291 B After Width: | Height: | Size: 6.3 KiB |