Compare commits
312 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5523ea4752 | ||
|
|
c89d6f6b74 | ||
|
|
d3863a7550 | ||
|
|
a5b1239c2b | ||
|
|
95146e032f | ||
|
|
45e1700237 | ||
|
|
81ceec8d03 | ||
|
|
6a45a965c0 | ||
|
|
d55de18d09 | ||
|
|
231902aec5 | ||
|
|
aef09a18b7 | ||
|
|
332365adc6 | ||
|
|
2c3813c94b | ||
|
|
586d3adb0e | ||
|
|
f1d09053f3 | ||
|
|
078a68a07d | ||
|
|
482ec4b43c | ||
|
|
3bf01334c9 | ||
|
|
ff84d72e20 | ||
|
|
f46180298f | ||
|
|
ae46535365 | ||
|
|
0c7ce94b13 | ||
|
|
fea8a3c12b | ||
|
|
285f733b61 | ||
|
|
7b98628084 | ||
|
|
0a11482b55 | ||
|
|
f4b6600a6d | ||
|
|
b73cad5cd6 | ||
|
|
f785f97e87 | ||
|
|
9edd029764 | ||
|
|
55081785d0 | ||
|
|
79aaec80c3 | ||
|
|
a72b1463b4 | ||
|
|
2817573594 | ||
|
|
3a4318551e | ||
|
|
18604a397d | ||
|
|
0f420b625a | ||
|
|
d4d3b71d7d | ||
|
|
ccdd94a090 | ||
|
|
c49b3124d5 | ||
|
|
dc30993898 | ||
|
|
47d734873b | ||
|
|
1d52211f93 | ||
|
|
059b72b3e2 | ||
|
|
2cc93924f1 | ||
|
|
23fe204322 | ||
|
|
53d4124fc3 | ||
|
|
c912eb197b | ||
|
|
35e4f696aa | ||
|
|
85d32cd510 | ||
|
|
292793daf1 | ||
|
|
41b4cbbce2 | ||
|
|
6492ffd35d | ||
|
|
9f26979419 | ||
|
|
7b90f5a97d | ||
|
|
3a06cacf1d | ||
|
|
56515db614 | ||
|
|
2141e2ebab | ||
|
|
55e25cc509 | ||
|
|
bc705aa7a0 | ||
|
|
9e0b29b3dd | ||
|
|
504334999d | ||
|
|
8d8cedaa44 | ||
|
|
659da0a837 | ||
|
|
0dccbf8598 | ||
|
|
1682e3b996 | ||
|
|
a914bd77f6 | ||
|
|
da115e90bc | ||
|
|
0a07458186 | ||
|
|
1d530f531d | ||
|
|
244a587db8 | ||
|
|
b88302e604 | ||
|
|
d1980ef493 | ||
|
|
110c04e5e3 | ||
|
|
f3f33038e4 | ||
|
|
da66d93db9 | ||
|
|
d08c54d9a7 | ||
|
|
e23e8de62a | ||
|
|
11eb5f464f | ||
|
|
db94acdb83 | ||
|
|
68e708cf9a | ||
|
|
35460f0b5f | ||
|
|
90fe7d7e59 | ||
|
|
0288cb34fb | ||
|
|
75ebaab3a3 | ||
|
|
ada664a2ca | ||
|
|
f9b46fbf18 | ||
|
|
764b93154e | ||
|
|
e4d97d790f | ||
|
|
5fa31b5625 | ||
|
|
414d3eb3c4 | ||
|
|
abd8356385 | ||
|
|
ae78054188 | ||
|
|
28b7ef53bb | ||
|
|
d7bd4bd0c8 | ||
|
|
3a618761b3 | ||
|
|
8efba6ada7 | ||
|
|
c12263078a | ||
|
|
fcff922370 | ||
|
|
14627dbbf7 | ||
|
|
5df5a6e39f | ||
|
|
3db2ffb843 | ||
|
|
1cc8d7e3f4 | ||
|
|
84aa4ad602 | ||
|
|
d0c6f3274b | ||
|
|
1e10817708 | ||
|
|
64d4fd5579 | ||
|
|
868c6a6996 | ||
|
|
8ed83964a2 | ||
|
|
ec11e60c7c | ||
|
|
b4d0df03df | ||
|
|
d0f6d9fb95 | ||
|
|
fb42302720 | ||
|
|
7701368d1b | ||
|
|
9503e26e1d | ||
|
|
fe9a44d876 | ||
|
|
6b43697891 | ||
|
|
b601dc5deb | ||
|
|
a4375f9c85 | ||
|
|
0058d45352 | ||
|
|
2eaa7d2745 | ||
|
|
cf13717cc8 | ||
|
|
39aeab5f11 | ||
|
|
3f403a26cc | ||
|
|
721e79eb90 | ||
|
|
3592b36f85 | ||
|
|
36fc6959f4 | ||
|
|
7a6f69fc88 | ||
|
|
f685c30178 | ||
|
|
e00b50c1f1 | ||
|
|
ba6ab8483e | ||
|
|
4a02315ee5 | ||
|
|
f3e08f9cb6 | ||
|
|
0256a475cf | ||
|
|
3a466475fd | ||
|
|
28cd08bdd1 | ||
|
|
428c396968 | ||
|
|
890dfdeb06 | ||
|
|
a0913c67df | ||
|
|
ba4612ed96 | ||
|
|
4608697d0d | ||
|
|
89ea055a24 | ||
|
|
3a3367b510 | ||
|
|
393ca67291 | ||
|
|
f4003fd463 | ||
|
|
51065b57c4 | ||
|
|
5895e2f23c | ||
|
|
08ff36c43e | ||
|
|
b2b8949e26 | ||
|
|
ce4f67341c | ||
|
|
a6c10a97f2 | ||
|
|
d4044c3b27 | ||
|
|
472d408bbc | ||
|
|
c7cfb290eb | ||
|
|
8b354e7334 | ||
|
|
5009f3aaf1 | ||
|
|
87032c82b1 | ||
|
|
1d8f837fb1 | ||
|
|
ff7c87bec0 | ||
|
|
ff58ccf659 | ||
|
|
eb0a5d4d14 | ||
|
|
45e77fe3b4 | ||
|
|
74fadfe603 | ||
|
|
1aa8bb9dd2 | ||
|
|
b732da09df | ||
|
|
6840fb53b7 | ||
|
|
6b56fef512 | ||
|
|
1b38b2d2f9 | ||
|
|
50960ff599 | ||
|
|
c122d737c1 | ||
|
|
3349764421 | ||
|
|
636a332d65 | ||
|
|
9f5e96ff8a | ||
|
|
5eb722efee | ||
|
|
63e35bd462 | ||
|
|
401384ae5b | ||
|
|
f9a70b1190 | ||
|
|
632322a2bc | ||
|
|
b2d054c1f2 | ||
|
|
0a314e142e | ||
|
|
d6291ea6c5 | ||
|
|
f7b320e838 | ||
|
|
c82455d994 | ||
|
|
dd32b4d39d | ||
|
|
8a3ed9c80b | ||
|
|
0396cc6ec4 | ||
|
|
e907d1a23f | ||
|
|
86446f4f00 | ||
|
|
9bdc81e728 | ||
|
|
a0d81eb18e | ||
|
|
415380f25e | ||
|
|
b9fd38a76e | ||
|
|
b4d83f33e9 | ||
|
|
3b8b762a1c | ||
|
|
cdd1e90d1a | ||
|
|
eb8658e140 | ||
|
|
84b1c0348d | ||
|
|
0bcb48ca31 | ||
|
|
c470c0abe1 | ||
|
|
dcbfc2b7aa | ||
|
|
ce8e060f29 | ||
|
|
9b0947a6e5 | ||
|
|
c865dbb465 | ||
|
|
eb60b60b4a | ||
|
|
e19e74cdc5 | ||
|
|
68cf2af6e0 | ||
|
|
db3eaf9a33 | ||
|
|
48f6ed47a6 | ||
|
|
c1efb69a91 | ||
|
|
742b171d5c | ||
|
|
8a4dd09137 | ||
|
|
435ef23eed | ||
|
|
cdc1337fcb | ||
|
|
c324cf2c66 | ||
|
|
3894234578 | ||
|
|
b29c0ab401 | ||
|
|
8a99a89f57 | ||
|
|
c038ef200a | ||
|
|
aae045b5dd | ||
|
|
8dd1c5f1f8 | ||
|
|
f53af781ba | ||
|
|
4cc90c0f4d | ||
|
|
80490c401a | ||
|
|
6b6783f201 | ||
|
|
c71be9ae32 | ||
|
|
4c241f9867 | ||
|
|
f242a2b2cd | ||
|
|
0c7a7e00eb | ||
|
|
ea224bd1f1 | ||
|
|
c5fffb9ddd | ||
|
|
ee08fa8f77 | ||
|
|
dfb96dcdd9 | ||
|
|
b0bb048c35 | ||
|
|
d4811a7d04 | ||
|
|
553bc1d1c8 | ||
|
|
ce2dd89f44 | ||
|
|
7b55ce94fe | ||
|
|
bdf814c9b9 | ||
|
|
53f5c69d40 | ||
|
|
e1277da02d | ||
|
|
030542890e | ||
|
|
eb5c5a617b | ||
|
|
5c98512e4f | ||
|
|
0847fc9f09 | ||
|
|
47b4da59e0 | ||
|
|
d2b8967713 | ||
|
|
b24c5ea920 | ||
|
|
7dfe973664 | ||
|
|
ddcfd0728d | ||
|
|
9cfd78ee1f | ||
|
|
90978b54da | ||
|
|
7e9f5f5dc4 | ||
|
|
edb776a549 | ||
|
|
bc2d4267ee | ||
|
|
d015e878c8 | ||
|
|
bdda8dbd38 | ||
|
|
b200b198ed | ||
|
|
5b6da6039f | ||
|
|
5fbc3b8dd4 | ||
|
|
e2a838a715 | ||
|
|
41f3fcbe16 | ||
|
|
013995b30d | ||
|
|
66aacd6ef0 | ||
|
|
703ad61b72 | ||
|
|
e7162004f2 | ||
|
|
542492e434 | ||
|
|
6547af8009 | ||
|
|
b816bc1467 | ||
|
|
9e81460adb | ||
|
|
71df10c6d8 | ||
|
|
de610c839a | ||
|
|
24291e595a | ||
|
|
3974497c31 | ||
|
|
462e6733ed | ||
|
|
3407520645 | ||
|
|
2877bdf0d6 | ||
|
|
c7e4346890 | ||
|
|
52ff09d024 | ||
|
|
f52693ae88 | ||
|
|
b018063a5c | ||
|
|
ac8c82eaa1 | ||
|
|
fffa07398e | ||
|
|
7021d2b9fd | ||
|
|
140569238b | ||
|
|
12d8cba2a7 | ||
|
|
a5d36dff7e | ||
|
|
aff57f2f30 | ||
|
|
8c0fb1edbb | ||
|
|
3ceda53202 | ||
|
|
7fc53f0a9e | ||
|
|
4503096e26 | ||
|
|
6c7a603219 | ||
|
|
850d3a037a | ||
|
|
80e2c06c48 | ||
|
|
7d4a1cb627 | ||
|
|
fee15caf7a | ||
|
|
939fbab4c4 | ||
|
|
94fe7bb456 | ||
|
|
7954788da3 | ||
|
|
0c4e58ee2b | ||
|
|
5f3b204708 | ||
|
|
a97df4247b | ||
|
|
eb13ac4961 | ||
|
|
2b8dfaf289 | ||
|
|
a418d7e59f | ||
|
|
0d425456be | ||
|
|
3753e8f54a | ||
|
|
4938aac731 | ||
|
|
4334a3c24b | ||
|
|
a95296eccc | ||
|
|
fe18222c6c | ||
|
|
337d5b0531 |
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -7,6 +7,8 @@ assignees: ''
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
**Note**: Do not report any new bugs directly relating to the v6 campaign. They will not be fixed or considered at this time.
|
||||||
|
|
||||||
**Platform**: *Android/iOS/Mac/Windows/Linux*
|
**Platform**: *Android/iOS/Mac/Windows/Linux*
|
||||||
|
|
||||||
**Build**: *The build number under the title in the main menu. Required.*
|
**Build**: *The build number under the title in the main menu. Required.*
|
||||||
@@ -17,7 +19,7 @@ assignees: ''
|
|||||||
|
|
||||||
**Link(s) to mod(s) used**: *The mod repositories or zip files that are related to the issue, if applicable.*
|
**Link(s) to mod(s) used**: *The mod repositories or zip files that are related to the issue, if applicable.*
|
||||||
|
|
||||||
**Save file**: *The save file you were playing on when the bug happened, if applicable.*
|
**Save file**: *The save file you were playing on when the bug happened. REQUIRED for any issue that happens in-game.*
|
||||||
|
|
||||||
**Crash report**: *The contents of relevant crash report files. REQUIRED if you are reporting a crash.*
|
**Crash report**: *The contents of relevant crash report files. REQUIRED if you are reporting a crash.*
|
||||||
|
|
||||||
|
|||||||
11
.travis.yml
@@ -26,6 +26,7 @@ script:
|
|||||||
- cp -a Mindustry/core/build/docs/javadoc/. docs/
|
- cp -a Mindustry/core/build/docs/javadoc/. docs/
|
||||||
- cd docs
|
- cd docs
|
||||||
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then git add .; git commit -m "Update ${TRAVIS_BUILD_NUMBER}"; git push https://Anuken:${GH_PUSH_TOKEN}@github.com/MindustryGame/docs; fi
|
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then git add .; git commit -m "Update ${TRAVIS_BUILD_NUMBER}"; git push https://Anuken:${GH_PUSH_TOKEN}@github.com/MindustryGame/docs; fi
|
||||||
|
- cd ../Mindustry
|
||||||
deploy:
|
deploy:
|
||||||
- provider: releases
|
- provider: releases
|
||||||
skip_cleanup: true
|
skip_cleanup: true
|
||||||
@@ -38,11 +39,11 @@ deploy:
|
|||||||
on:
|
on:
|
||||||
repo: Anuken/Mindustry
|
repo: Anuken/Mindustry
|
||||||
tags: true
|
tags: true
|
||||||
- provider: script
|
#- provider: script
|
||||||
script: bash update_wiki.sh
|
# script: bash update_wiki.sh
|
||||||
on:
|
# on:
|
||||||
repo: Anuken/Mindustry
|
# repo: Anuken/Mindustry
|
||||||
tags: true
|
# tags: true
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- secure: TqlUl/ojjkCMVOGbCTKz7Cnr4F08UyWzY/CiJ0vvUOGJGZ1qm7XavAlDf5XT0egU4mvr37THubFO8vojbqmrmy0oZnYh3njKFA8axgyZ8PyKkjGHOfd0i6qyEWsOr9H90/2X8r3LwEeLaDFyHpu3wljIGBjweg53g2qwmDwCFa9UR80FJZ+xDB+rD6B3cXT0DTEkCoLZXLqXm0Y3HvBdSuBL1LR/FNb2BSxNq+tNLGiz1kdQZV5erausbbZypBoGxzz63xAnyz2kkFz73A8xQYVTzGbFodTPz7HM13GVZ5s43I03Y+HYyHBgBaSLziO2hi2kzVJccOwzBp7wS4fs1MqsFY5+IeWJ9k+hm89NiYT7+6zlEgoUMlIniny1qLqWTzx7btUeuC/y/h5TVBNgaV+z0jmHycHfeSyq5I+vmX4J8qe3wmaN8TcdqYKU5nIznOTk3CM5Fzu0Bs9vkCkOxmormmcjMFW1RbdOLc/hpZWZggsBA88sNEAI8eq+r5QEeqzeCx8YKoZDjdrsqvgLMc3El3gS9oMGxkn0Y/TEcqs9Tc4BXtTkqIA68hD0DYzlAxYjVbbkAI9Hh9lHNvV3Dr/oCkGXQ/HflM143kj1L3tSBZpqeqQE2XhngB5nqpS3OZTmZbMTQ8qD2luU18yaTGMLF5tJS/fdKPRx0gQ1kL8=
|
- secure: TqlUl/ojjkCMVOGbCTKz7Cnr4F08UyWzY/CiJ0vvUOGJGZ1qm7XavAlDf5XT0egU4mvr37THubFO8vojbqmrmy0oZnYh3njKFA8axgyZ8PyKkjGHOfd0i6qyEWsOr9H90/2X8r3LwEeLaDFyHpu3wljIGBjweg53g2qwmDwCFa9UR80FJZ+xDB+rD6B3cXT0DTEkCoLZXLqXm0Y3HvBdSuBL1LR/FNb2BSxNq+tNLGiz1kdQZV5erausbbZypBoGxzz63xAnyz2kkFz73A8xQYVTzGbFodTPz7HM13GVZ5s43I03Y+HYyHBgBaSLziO2hi2kzVJccOwzBp7wS4fs1MqsFY5+IeWJ9k+hm89NiYT7+6zlEgoUMlIniny1qLqWTzx7btUeuC/y/h5TVBNgaV+z0jmHycHfeSyq5I+vmX4J8qe3wmaN8TcdqYKU5nIznOTk3CM5Fzu0Bs9vkCkOxmormmcjMFW1RbdOLc/hpZWZggsBA88sNEAI8eq+r5QEeqzeCx8YKoZDjdrsqvgLMc3El3gS9oMGxkn0Y/TEcqs9Tc4BXtTkqIA68hD0DYzlAxYjVbbkAI9Hh9lHNvV3Dr/oCkGXQ/HflM143kj1L3tSBZpqeqQE2XhngB5nqpS3OZTmZbMTQ8qD2luU18yaTGMLF5tJS/fdKPRx0gQ1kL8=
|
||||||
|
|||||||
10
README.md
@@ -22,9 +22,9 @@ First, make sure you have [JDK 14](https://adoptopenjdk.net/) installed. Open a
|
|||||||
|
|
||||||
#### Windows
|
#### Windows
|
||||||
|
|
||||||
_Running:_ `gradlew.bat desktop:run`
|
_Running:_ `gradlew desktop:run`
|
||||||
_Building:_ `gradlew.bat desktop:dist`
|
_Building:_ `gradlew desktop:dist`
|
||||||
_Sprite Packing:_ `gradlew.bat tools:pack`
|
_Sprite Packing:_ `gradlew tools:pack`
|
||||||
|
|
||||||
#### Linux/Mac OS
|
#### Linux/Mac OS
|
||||||
|
|
||||||
@@ -70,3 +70,7 @@ Post feature requests and feedback [here](https://github.com/Anuken/Mindustry-Su
|
|||||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||||
alt="Get it on F-Droid"
|
alt="Get it on F-Droid"
|
||||||
height="80">](https://f-droid.org/packages/io.anuke.mindustry/)
|
height="80">](https://f-droid.org/packages/io.anuke.mindustry/)
|
||||||
|
|
||||||
|
[<img src="https://flathub.org/assets/badges/flathub-badge-en.svg"
|
||||||
|
alt="Download On Flathub"
|
||||||
|
height="60">](https://flathub.org/apps/details/com.github.Anuken.Mindustry)
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ android{
|
|||||||
keyAlias RELEASE_KEY_ALIAS
|
keyAlias RELEASE_KEY_ALIAS
|
||||||
keyPassword RELEASE_KEY_PASSWORD
|
keyPassword RELEASE_KEY_PASSWORD
|
||||||
}else{
|
}else{
|
||||||
println("No keystore info property found!")
|
println("No keystore property found. Releases will be unsigned.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import android.content.pm.*;
|
|||||||
import android.net.*;
|
import android.net.*;
|
||||||
import android.os.Build.*;
|
import android.os.Build.*;
|
||||||
import android.os.*;
|
import android.os.*;
|
||||||
import android.provider.Settings.*;
|
|
||||||
import android.telephony.*;
|
import android.telephony.*;
|
||||||
import arc.*;
|
import arc.*;
|
||||||
import arc.backend.android.*;
|
import arc.backend.android.*;
|
||||||
@@ -15,7 +14,7 @@ import arc.files.*;
|
|||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.scene.ui.layout.*;
|
import arc.scene.ui.layout.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.serialization.*;
|
import dalvik.system.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.game.Saves.*;
|
import mindustry.game.Saves.*;
|
||||||
import mindustry.io.*;
|
import mindustry.io.*;
|
||||||
@@ -23,7 +22,6 @@ import mindustry.net.*;
|
|||||||
import mindustry.ui.dialogs.*;
|
import mindustry.ui.dialogs.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.System;
|
|
||||||
import java.lang.Thread.*;
|
import java.lang.Thread.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -73,12 +71,25 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
public void shareFile(Fi file){
|
public void shareFile(Fi file){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<?> loadJar(Fi jar, String mainClass) throws Exception{
|
||||||
|
DexClassLoader loader = new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, getClassLoader());
|
||||||
|
return Class.forName(mainClass, true, loader);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showFileChooser(boolean open, String extension, Cons<Fi> cons){
|
public void showFileChooser(boolean open, String extension, Cons<Fi> cons){
|
||||||
|
showFileChooser(open, cons, extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
void showFileChooser(boolean open, Cons<Fi> cons, String... extensions){
|
||||||
|
String extension = extensions[0];
|
||||||
|
|
||||||
if(VERSION.SDK_INT >= VERSION_CODES.Q){
|
if(VERSION.SDK_INT >= VERSION_CODES.Q){
|
||||||
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
||||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||||
intent.setType(extension.equals("zip") && !open ? "application/zip" : "*/*");
|
intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*");
|
||||||
|
|
||||||
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
||||||
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
||||||
Uri uri = in.getData();
|
Uri uri = in.getData();
|
||||||
@@ -108,7 +119,7 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
});
|
});
|
||||||
}else if(VERSION.SDK_INT >= VERSION_CODES.M && !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
|
}else if(VERSION.SDK_INT >= VERSION_CODES.M && !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
|
||||||
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
|
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
|
||||||
chooser = new FileChooser(open ? "@open" : "@save", file -> file.extension().equalsIgnoreCase(extension), open, file -> {
|
chooser = new FileChooser(open ? "@open" : "@save", file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> {
|
||||||
if(!open){
|
if(!open){
|
||||||
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
|
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
|
||||||
}else{
|
}else{
|
||||||
@@ -125,10 +136,19 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
}
|
}
|
||||||
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
|
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
|
||||||
}else{
|
}else{
|
||||||
super.showFileChooser(open, extension, cons);
|
if(open){
|
||||||
|
new FileChooser("@open", file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show();
|
||||||
|
}else{
|
||||||
|
super.showFileChooser(open, extension, cons);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showMultiFileChooser(Cons<Fi> cons, String... extensions){
|
||||||
|
showFileChooser(true, cons, extensions);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beginForceLandscape(){
|
public void beginForceLandscape(){
|
||||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
|
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ public class EntityIO{
|
|||||||
this.serializer = serializer;
|
this.serializer = serializer;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
|
||||||
|
json.setIgnoreUnknownFields(true);
|
||||||
|
|
||||||
directory.mkdirs();
|
directory.mkdirs();
|
||||||
|
|
||||||
//load old revisions
|
//load old revisions
|
||||||
@@ -45,6 +47,8 @@ public class EntityIO{
|
|||||||
revisions.add(json.fromJson(Revision.class, fi));
|
revisions.add(json.fromJson(Revision.class, fi));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
revisions.sort(r -> r.version);
|
||||||
|
|
||||||
//next revision to be used
|
//next revision to be used
|
||||||
int nextRevision = revisions.isEmpty() ? 0 : revisions.max(r -> r.version).version + 1;
|
int nextRevision = revisions.isEmpty() ? 0 : revisions.max(r -> r.version).version + 1;
|
||||||
|
|
||||||
@@ -61,11 +65,13 @@ public class EntityIO{
|
|||||||
//keep track of fields present in the entity
|
//keep track of fields present in the entity
|
||||||
presentFields.addAll(fields.map(f -> f.name));
|
presentFields.addAll(fields.map(f -> f.name));
|
||||||
|
|
||||||
|
Revision previous = revisions.isEmpty() ? null : revisions.peek();
|
||||||
|
|
||||||
//add new revision if it doesn't match or there are no revisions
|
//add new revision if it doesn't match or there are no revisions
|
||||||
if(revisions.isEmpty() || !revisions.peek().equal(fields)){
|
if(revisions.isEmpty() || !revisions.peek().equal(fields)){
|
||||||
revisions.add(new Revision(nextRevision,
|
revisions.add(new Revision(nextRevision,
|
||||||
fields.map(f -> new RevisionField(f.name, f.type.toString(),
|
fields.map(f -> new RevisionField(f.name, f.type.toString()))));
|
||||||
f.type.isPrimitive() ? BaseProcessor.typeSize(f.type.toString()) : -1))));
|
Log.warn("Adding new revision @ for @.\nPre = @\nNew = @\n", nextRevision, name, previous == null ? null : previous.fields.toString(", ", f -> f.name + ":" + f.type), fields.toString(", ", f -> f.name + ":" + f.type.toString()));
|
||||||
//write revision
|
//write revision
|
||||||
directory.child(nextRevision + ".json").writeString(json.toJson(revisions.peek()));
|
directory.child(nextRevision + ".json").writeString(json.toJson(revisions.peek()));
|
||||||
}
|
}
|
||||||
@@ -322,8 +328,7 @@ public class EntityIO{
|
|||||||
for(int i = 0; i < fields.size; i++){
|
for(int i = 0; i < fields.size; i++){
|
||||||
RevisionField field = fields.get(i);
|
RevisionField field = fields.get(i);
|
||||||
FieldSpec spec = specs.get(i);
|
FieldSpec spec = specs.get(i);
|
||||||
//TODO when making fields, their primitive size may be overwritten by an annotation; check for that
|
if(!field.type.replace("mindustry.gen.", "").equals(spec.type.toString().replace("mindustry.gen.", ""))){
|
||||||
if(!(field.type.equals(spec.type.toString()) && (!spec.type.isPrimitive() || BaseProcessor.typeSize(spec.type.toString()) == field.size))){
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -333,11 +338,9 @@ public class EntityIO{
|
|||||||
|
|
||||||
public static class RevisionField{
|
public static class RevisionField{
|
||||||
String name, type;
|
String name, type;
|
||||||
int size; //in bytes
|
|
||||||
|
|
||||||
RevisionField(String name, String type, int size){
|
RevisionField(String name, String type){
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.size = size;
|
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package mindustry.annotations.entity;
|
package mindustry.annotations.entity;
|
||||||
|
|
||||||
import arc.*;
|
|
||||||
import arc.files.*;
|
import arc.files.*;
|
||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
@@ -77,7 +76,11 @@ public class EntityProcess extends BaseProcessor{
|
|||||||
for(Smethod elem : component.methods()){
|
for(Smethod elem : component.methods()){
|
||||||
if(elem.is(Modifier.ABSTRACT) || elem.is(Modifier.NATIVE)) continue;
|
if(elem.is(Modifier.ABSTRACT) || elem.is(Modifier.NATIVE)) continue;
|
||||||
//get all statements in the method, store them
|
//get all statements in the method, store them
|
||||||
methodBlocks.put(elem.descString(), elem.tree().getBody().toString());
|
methodBlocks.put(elem.descString(), elem.tree().getBody().toString()
|
||||||
|
//replace all self() invocations with this
|
||||||
|
.replaceAll("this\\.<(.*)>self\\(\\)", "this")
|
||||||
|
.replaceAll("self\\(\\)", "this")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -516,7 +519,7 @@ public class EntityProcess extends BaseProcessor{
|
|||||||
//add free code to remove methods - always at the end
|
//add free code to remove methods - always at the end
|
||||||
//this only gets called next frame.
|
//this only gets called next frame.
|
||||||
if(first.name().equals("remove") && ann.pooled()){
|
if(first.name().equals("remove") && ann.pooled()){
|
||||||
mbuilder.addStatement("$T.app.post(() -> $T.free(this))", Core.class, Pools.class);
|
mbuilder.addStatement("mindustry.gen.Groups.queueFree(($T)this)", Poolable.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.addMethod(mbuilder.build());
|
builder.addMethod(mbuilder.build());
|
||||||
@@ -583,6 +586,17 @@ public class EntityProcess extends BaseProcessor{
|
|||||||
//write clear
|
//write clear
|
||||||
groupsBuilder.addMethod(groupClear.build());
|
groupsBuilder.addMethod(groupClear.build());
|
||||||
|
|
||||||
|
//add method for pool storage
|
||||||
|
groupsBuilder.addField(FieldSpec.builder(ParameterizedTypeName.get(Seq.class, Poolable.class), "freeQueue", Modifier.PRIVATE, Modifier.STATIC).initializer("new Seq<>()").build());
|
||||||
|
|
||||||
|
//method for freeing things
|
||||||
|
MethodSpec.Builder groupFreeQueue = MethodSpec.methodBuilder("queueFree")
|
||||||
|
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||||
|
.addParameter(Poolable.class, "obj")
|
||||||
|
.addStatement("freeQueue.add(obj)");
|
||||||
|
|
||||||
|
groupsBuilder.addMethod(groupFreeQueue.build());
|
||||||
|
|
||||||
//add method for resizing all necessary groups
|
//add method for resizing all necessary groups
|
||||||
MethodSpec.Builder groupResize = MethodSpec.methodBuilder("resize")
|
MethodSpec.Builder groupResize = MethodSpec.methodBuilder("resize")
|
||||||
.addParameter(TypeName.FLOAT, "x").addParameter(TypeName.FLOAT, "y").addParameter(TypeName.FLOAT, "w").addParameter(TypeName.FLOAT, "h")
|
.addParameter(TypeName.FLOAT, "x").addParameter(TypeName.FLOAT, "y").addParameter(TypeName.FLOAT, "w").addParameter(TypeName.FLOAT, "h")
|
||||||
@@ -591,6 +605,11 @@ public class EntityProcess extends BaseProcessor{
|
|||||||
MethodSpec.Builder groupUpdate = MethodSpec.methodBuilder("update")
|
MethodSpec.Builder groupUpdate = MethodSpec.methodBuilder("update")
|
||||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC);
|
.addModifiers(Modifier.PUBLIC, Modifier.STATIC);
|
||||||
|
|
||||||
|
//free everything pooled at the start of each updaet
|
||||||
|
groupUpdate
|
||||||
|
.addStatement("for($T p : freeQueue) $T.free(p)", Poolable.class, Pools.class)
|
||||||
|
.addStatement("freeQueue.clear()");
|
||||||
|
|
||||||
//method resize
|
//method resize
|
||||||
for(GroupDefinition group : groupDefs){
|
for(GroupDefinition group : groupDefs){
|
||||||
if(group.spatial){
|
if(group.spatial){
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package mindustry.annotations.impl;
|
|||||||
import arc.files.*;
|
import arc.files.*;
|
||||||
import arc.scene.style.*;
|
import arc.scene.style.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
|
import arc.util.*;
|
||||||
|
import arc.util.io.*;
|
||||||
import arc.util.serialization.*;
|
import arc.util.serialization.*;
|
||||||
import com.squareup.javapoet.*;
|
import com.squareup.javapoet.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
@@ -33,6 +35,17 @@ public class AssetsProcess extends BaseProcessor{
|
|||||||
String resources = rootDirectory + "/core/assets-raw/sprites/ui";
|
String resources = rootDirectory + "/core/assets-raw/sprites/ui";
|
||||||
Jval icons = Jval.read(Fi.get(rootDirectory + "/core/assets-raw/fontgen/config.json").readString());
|
Jval icons = Jval.read(Fi.get(rootDirectory + "/core/assets-raw/fontgen/config.json").readString());
|
||||||
|
|
||||||
|
ObjectMap<String, String> texIcons = new OrderedMap<>();
|
||||||
|
PropertiesUtils.load(texIcons, Fi.get(rootDirectory + "/core/assets/icons/icons.properties").reader());
|
||||||
|
|
||||||
|
texIcons.each((key, val) -> {
|
||||||
|
String[] split = val.split("\\|");
|
||||||
|
String name = Strings.kebabToCamel(split[1]).replace("Medium", "").replace("Icon", "");
|
||||||
|
if(SourceVersion.isKeyword(name) || name.equals("char")) name = name + "i";
|
||||||
|
|
||||||
|
ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("(char)" + key).build());
|
||||||
|
});
|
||||||
|
|
||||||
ictype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectMap.class, String.class, TextureRegionDrawable.class),
|
ictype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectMap.class, String.class, TextureRegionDrawable.class),
|
||||||
"icons", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new ObjectMap<>()").build());
|
"icons", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new ObjectMap<>()").build());
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class LogicStatementProcessor extends BaseProcessor{
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
|
|
||||||
for(Svar field : fields){
|
for(Svar field : fields){
|
||||||
if(field.is(Modifier.TRANSIENT)) continue;
|
if(field.isAny(Modifier.TRANSIENT, Modifier.STATIC)) continue;
|
||||||
|
|
||||||
writer.addStatement("out.append(\" \")");
|
writer.addStatement("out.append(\" \")");
|
||||||
writer.addStatement("out.append((($T)obj).$L$L)", c.mirror(), field.name(),
|
writer.addStatement("out.append((($T)obj).$L$L)", c.mirror(), field.name(),
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import java.util.*;
|
|||||||
})
|
})
|
||||||
public class RemoteProcess extends BaseProcessor{
|
public class RemoteProcess extends BaseProcessor{
|
||||||
/** Maximum size of each event packet. */
|
/** Maximum size of each event packet. */
|
||||||
public static final int maxPacketSize = 4096;
|
public static final int maxPacketSize = 8192;
|
||||||
/** Warning on top of each autogenerated file. */
|
/** Warning on top of each autogenerated file. */
|
||||||
public static final String autogenWarning = "Autogenerated file. Do not modify!\n";
|
public static final String autogenWarning = "Autogenerated file. Do not modify!\n";
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
alpha=0
|
alpha=0
|
||||||
atrax=1
|
atrax=1
|
||||||
block=2
|
block=2
|
||||||
|
corvus=24
|
||||||
flare=3
|
flare=3
|
||||||
mace=4
|
mace=4
|
||||||
mega=5
|
mega=5
|
||||||
@@ -19,7 +20,10 @@ mindustry.world.blocks.campaign.LaunchPad.LaunchPayloadComp=15
|
|||||||
mindustry.world.blocks.defense.ForceProjector.ForceDrawComp=22
|
mindustry.world.blocks.defense.ForceProjector.ForceDrawComp=22
|
||||||
mono=16
|
mono=16
|
||||||
nova=17
|
nova=17
|
||||||
|
oct=26
|
||||||
poly=18
|
poly=18
|
||||||
pulsar=19
|
pulsar=19
|
||||||
|
quad=23
|
||||||
risso=20
|
risso=20
|
||||||
spiroct=21
|
spiroct=21
|
||||||
|
vela=25
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{fields:[{name:ammo,type:float},{name:armor,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:health,type:float},{name:isShooting,type:boolean},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:payloads,type:arc.struct.Seq<mindustry.world.blocks.payloads.Payload>},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:x,type:float},{name:y,type:float}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq<mindustry.world.blocks.payloads.Payload>,size:-1},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq<mindustry.world.blocks.payloads.Payload>,size:-1},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq<mindustry.world.blocks.payloads.Payload>,size:-1},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
1
annotations/src/main/resources/revisions/LegsUnit/1.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
1
annotations/src/main/resources/revisions/MechUnit/1.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}
|
||||||
@@ -200,7 +200,6 @@ project(":desktop"){
|
|||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
implementation project(":core")
|
implementation project(":core")
|
||||||
implementation arcModule("natives:natives-box2d-desktop")
|
|
||||||
implementation arcModule("natives:natives-desktop")
|
implementation arcModule("natives:natives-desktop")
|
||||||
implementation arcModule("natives:natives-freetype-desktop")
|
implementation arcModule("natives:natives-freetype-desktop")
|
||||||
implementation 'com.github.MinnDevelopment:java-discord-rpc:v2.0.1'
|
implementation 'com.github.MinnDevelopment:java-discord-rpc:v2.0.1'
|
||||||
@@ -239,7 +238,6 @@ project(":ios"){
|
|||||||
|
|
||||||
implementation arcModule("natives:natives-ios")
|
implementation arcModule("natives:natives-ios")
|
||||||
implementation arcModule("natives:natives-freetype-ios")
|
implementation arcModule("natives:natives-freetype-ios")
|
||||||
implementation arcModule("natives:natives-box2d-ios")
|
|
||||||
implementation arcModule("backends:backend-robovm")
|
implementation arcModule("backends:backend-robovm")
|
||||||
|
|
||||||
compileOnly project(":annotations")
|
compileOnly project(":annotations")
|
||||||
@@ -261,7 +259,6 @@ project(":core"){
|
|||||||
doLast{
|
doLast{
|
||||||
def props = loadVersionProps()
|
def props = loadVersionProps()
|
||||||
def androidVersion = props['androidBuildCode'].toInteger() - 2
|
def androidVersion = props['androidBuildCode'].toInteger() - 2
|
||||||
def buildVersion = props["build"]
|
|
||||||
def loglines = file("../changelog").text.split("\n")
|
def loglines = file("../changelog").text.split("\n")
|
||||||
def maxLength = 460
|
def maxLength = 460
|
||||||
|
|
||||||
@@ -273,7 +270,6 @@ project(":core"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
def changelogs = file("../fastlane/metadata/android/en-US/changelogs/")
|
def changelogs = file("../fastlane/metadata/android/en-US/changelogs/")
|
||||||
new File(changelogs, buildVersion + ".txt").text = (result)
|
|
||||||
new File(changelogs, androidVersion + ".txt").text = (result)
|
new File(changelogs, androidVersion + ".txt").text = (result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -284,7 +280,6 @@ project(":core"){
|
|||||||
api "org.lz4:lz4-java:1.4.1"
|
api "org.lz4:lz4-java:1.4.1"
|
||||||
api arcModule("arc-core")
|
api arcModule("arc-core")
|
||||||
api arcModule("extensions:freetype")
|
api arcModule("extensions:freetype")
|
||||||
api arcModule("extensions:box2d")
|
|
||||||
api arcModule("extensions:g3d")
|
api arcModule("extensions:g3d")
|
||||||
api arcModule("extensions:fx")
|
api arcModule("extensions:fx")
|
||||||
api arcModule("extensions:arcnet")
|
api arcModule("extensions:arcnet")
|
||||||
@@ -301,7 +296,6 @@ project(":server"){
|
|||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
implementation project(":core")
|
implementation project(":core")
|
||||||
implementation arcModule("natives:natives-box2d-desktop")
|
|
||||||
implementation arcModule("backends:backend-headless")
|
implementation arcModule("backends:backend-headless")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -314,7 +308,6 @@ project(":tests"){
|
|||||||
testImplementation "org.junit.jupiter:junit-jupiter-params:5.3.1"
|
testImplementation "org.junit.jupiter:junit-jupiter-params:5.3.1"
|
||||||
testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1"
|
testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1"
|
||||||
testImplementation arcModule("backends:backend-headless")
|
testImplementation arcModule("backends:backend-headless")
|
||||||
testImplementation arcModule("natives:natives-box2d-desktop")
|
|
||||||
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.3.1"
|
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.3.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,7 +329,6 @@ project(":tools"){
|
|||||||
|
|
||||||
implementation arcModule("natives:natives-desktop")
|
implementation arcModule("natives:natives-desktop")
|
||||||
implementation arcModule("natives:natives-freetype-desktop")
|
implementation arcModule("natives:natives-freetype-desktop")
|
||||||
implementation arcModule("natives:natives-box2d-desktop")
|
|
||||||
implementation arcModule("backends:backend-headless")
|
implementation arcModule("backends:backend-headless")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 230 B After Width: | Height: | Size: 277 B |
|
Before Width: | Height: | Size: 229 B After Width: | Height: | Size: 277 B |
|
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 283 B |
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 298 B After Width: | Height: | Size: 491 B |
|
Before Width: | Height: | Size: 309 B After Width: | Height: | Size: 499 B |
|
Before Width: | Height: | Size: 321 B After Width: | Height: | Size: 522 B |
|
Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 515 B |
|
Before Width: | Height: | Size: 268 B After Width: | Height: | Size: 300 B |
|
Before Width: | Height: | Size: 252 B After Width: | Height: | Size: 292 B |
|
Before Width: | Height: | Size: 250 B After Width: | Height: | Size: 294 B |
|
Before Width: | Height: | Size: 261 B After Width: | Height: | Size: 299 B |
|
Before Width: | Height: | Size: 247 B After Width: | Height: | Size: 296 B |
|
Before Width: | Height: | Size: 243 B After Width: | Height: | Size: 290 B |
|
Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 289 B |
|
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 292 B |
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 375 B |
|
Before Width: | Height: | Size: 247 B After Width: | Height: | Size: 408 B |
|
Before Width: | Height: | Size: 257 B After Width: | Height: | Size: 419 B |
|
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 409 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 640 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 636 B |
|
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 410 B |
|
Before Width: | Height: | Size: 265 B After Width: | Height: | Size: 441 B |
|
Before Width: | Height: | Size: 280 B After Width: | Height: | Size: 454 B |
|
Before Width: | Height: | Size: 260 B After Width: | Height: | Size: 448 B |
|
Before Width: | Height: | Size: 150 B After Width: | Height: | Size: 235 B |
BIN
core/assets-raw/sprites/blocks/environment/mud1.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
core/assets-raw/sprites/blocks/environment/mud2.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
core/assets-raw/sprites/blocks/environment/mud3.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 121 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 330 B After Width: | Height: | Size: 376 B |
|
Before Width: | Height: | Size: 289 B After Width: | Height: | Size: 490 B |
BIN
core/assets-raw/sprites/blocks/logic/memory-bank.png
Normal file
|
After Width: | Height: | Size: 751 B |
|
Before Width: | Height: | Size: 189 B After Width: | Height: | Size: 304 B |
|
Before Width: | Height: | Size: 763 B After Width: | Height: | Size: 1.2 KiB |
BIN
core/assets-raw/sprites/blocks/storage/container-team.png
Normal file
|
After Width: | Height: | Size: 628 B |
|
Before Width: | Height: | Size: 637 B After Width: | Height: | Size: 435 B |
BIN
core/assets-raw/sprites/blocks/storage/vault-team.png
Normal file
|
After Width: | Height: | Size: 854 B |
|
Before Width: | Height: | Size: 904 B After Width: | Height: | Size: 671 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 812 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 984 B After Width: | Height: | Size: 893 B |
BIN
core/assets-raw/sprites/blocks/turrets/wave-top.png
Normal file
|
After Width: | Height: | Size: 285 B |
|
Before Width: | Height: | Size: 755 B After Width: | Height: | Size: 1.2 KiB |
BIN
core/assets-raw/sprites/blocks/units/command-center-team.png
Normal file
|
After Width: | Height: | Size: 511 B |
|
Before Width: | Height: | Size: 783 B After Width: | Height: | Size: 347 B |
|
Before Width: | Height: | Size: 427 B After Width: | Height: | Size: 660 B |
|
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 843 B |
|
Before Width: | Height: | Size: 244 B After Width: | Height: | Size: 323 B |
|
Before Width: | Height: | Size: 602 B After Width: | Height: | Size: 796 B |
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 323 B |
|
Before Width: | Height: | Size: 428 B After Width: | Height: | Size: 655 B |
BIN
core/assets-raw/sprites/effects/large-bomb-back.png
Normal file
|
After Width: | Height: | Size: 459 B |
BIN
core/assets-raw/sprites/effects/large-bomb.png
Normal file
|
After Width: | Height: | Size: 355 B |
@@ -4,6 +4,5 @@
|
|||||||
flattenPaths: true,
|
flattenPaths: true,
|
||||||
maxWidth: 4096,
|
maxWidth: 4096,
|
||||||
maxHeight: 4096,
|
maxHeight: 4096,
|
||||||
minHeight: 2048,
|
|
||||||
fast: true
|
fast: true
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 908 B |
BIN
core/assets-raw/sprites/units/corvus-base.png
Normal file
|
After Width: | Height: | Size: 828 B |
BIN
core/assets-raw/sprites/units/corvus-cell.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
core/assets-raw/sprites/units/corvus-foot.png
Normal file
|
After Width: | Height: | Size: 720 B |
BIN
core/assets-raw/sprites/units/corvus-joint-base.png
Normal file
|
After Width: | Height: | Size: 617 B |
BIN
core/assets-raw/sprites/units/corvus-joint.png
Normal file
|
After Width: | Height: | Size: 550 B |
BIN
core/assets-raw/sprites/units/corvus-leg-base.png
Normal file
|
After Width: | Height: | Size: 350 B |
BIN
core/assets-raw/sprites/units/corvus-leg.png
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
core/assets-raw/sprites/units/corvus-weapon-heat.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
core/assets-raw/sprites/units/corvus.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
core/assets-raw/sprites/units/oct-cell.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |