From f71b72687711b8c842583aa031f9bcaa79e1cbc0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 19 Nov 2020 18:53:02 -0500 Subject: [PATCH] Testing Github Actions CI --- .github/workflows/deployment.yml | 52 ++++++++++++++++++ .github/workflows/gradle.yml | 27 --------- .github/workflows/pr.yml | 21 +++++++ .github/workflows/push.yml | 23 ++++++++ .travis.yml => .not_travis.yml | 2 +- core/assets/maps/extractionOutpost.msav | Bin 19681 -> 20000 bytes core/src/mindustry/content/Planets.java | 2 - core/src/mindustry/game/Waves.java | 19 ++++++- .../maps/planet/SerpuloPlanetGenerator.java | 2 +- .../maps/planet/TantrosPlanetGenerator.java | 2 +- 10 files changed, 116 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/deployment.yml delete mode 100644 .github/workflows/gradle.yml create mode 100644 .github/workflows/pr.yml create mode 100644 .github/workflows/push.yml rename .travis.yml => .not_travis.yml (99%) diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml new file mode 100644 index 0000000000..f8d09af6a6 --- /dev/null +++ b/.github/workflows/deployment.yml @@ -0,0 +1,52 @@ +name: Deployment + +on: + push: + tags: + - 'v*' + +jobs: + buildJava14: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 14 + uses: actions/setup-java@v1 + with: + java-version: 14 + - name: Create artifacts + run: | + ./gradlew desktop:dist server:dist core:javadoc -Pbuildversion=${GITHUB_REF:1}" + - name: Update docs + run: | + cd ../ + git clone --depth=1 https://github.com/MindustryGame/docs.git + cp -a Mindustry/core/build/docs/javadoc/. docs/ + cd docs + git add . + git commit -m "Update ${GITHUB_REF:1}" + git push https://Anuken:${{ secrets.GITHUB_TOKEN }}@github.com/MindustryGame/docs + cd ../Mindustry + - name: Update F-Droid build string + run: | + git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds + cd ../MindustryBuilds + echo "Updating version to ${GITHUB_REF:1}" + echo versionName=6-fdroid-${GITHUB_REF:1}$'\n'versionCode=${GITHUB_REF:1} > version_fdroid.txt + git add . + git commit -m "Updating to build ${GITHUB_REF:1}" + cd ../Mindustry + - name: Upload client artifacts + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: desktop/libs/Mindustry.jar + tag: ${{ github.ref }} + - name: Upload server artifacts + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: server/libs/server-release.jar + tag: ${{ github.ref }} + diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml deleted file mode 100644 index a35d7efe60..0000000000 --- a/.github/workflows/gradle.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Java CI - -on: [push, pull_request] - -jobs: - buildJava14: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Set up JDK 14 - uses: actions/setup-java@v1 - with: - java-version: 14 - - name: Run unit tests with gradle and Java 14 - run: ./gradlew compileJava - buildJava15: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Set up JDK 15 - uses: actions/setup-java@v1 - with: - java-version: 15 - - name: Run unit tests with gradle and Java 15 - run: ./gradlew compileJava diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000000..ff585101ed --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,21 @@ +name: Pull Request Tests + +on: [pull_request] + +jobs: + buildJava14: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 14 + uses: actions/setup-java@v1 + with: + java-version: 14 + - name: Run unit tests and build JAR + run: ./gradlew test desktop:dist + - name: Upload desktop JAR for testing + uses: actions/upload-artifact@v2 + with: + name: Desktop JAR (zipped) + path: desktop/build/libs/Mindustry.jar diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 0000000000..df25e76eec --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,23 @@ +name: Test & Push BUilds + +on: [push] + +jobs: + buildJava14: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 14 + uses: actions/setup-java@v1 + with: + java-version: 14 + - name: Run unit tests + run: ./gradlew test + - name: Trigger BE build + run: | + git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds + cd ../MindustryBuilds + git tag ${GITHUB_RUN_NUMBER} + git config --global user.name "Build Uploader" + git push https://Anuken:${{ secrets.GITHUB_TOKEN }}@github.com/Anuken/MindustryBuilds ${GITHUB_RUN_NUMBER} diff --git a/.travis.yml b/.not_travis.yml similarity index 99% rename from .travis.yml rename to .not_travis.yml index bbf20a5063..11dbe8cd1e 100644 --- a/.travis.yml +++ b/.not_travis.yml @@ -29,7 +29,7 @@ script: - cd ../Mindustry deploy: - provider: releases - cleanup: false + 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= diff --git a/core/assets/maps/extractionOutpost.msav b/core/assets/maps/extractionOutpost.msav index 5e5bffccfb424e20c54beb60616e2c46b2da5d4d..5728a4b217bb5dd8a2d7fbdb13c498f1d33ecbbc 100644 GIT binary patch literal 20000 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

%RVp~z>!28@V|M8%rRz4K_Sz2lpu8pRZU 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 literal 19681 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 generate(float difficulty){ //apply power curve to make starting sectors easier - return generate(new Rand(), Mathf.pow(difficulty, 1.12f)); + return generate(Mathf.pow(difficulty, 1.12f), new Rand(), false); } - public static Seq generate(Rand rand, float difficulty){ + public static Seq generate(float difficulty, Rand rand, boolean attack){ UnitType[][] species = { {dagger, mace, fortress, scepter, reign}, {nova, pulsar, quasar, vela, corvus}, @@ -395,6 +395,21 @@ public class Waves{ effect = StatusEffects.boss; }}); + //add megas to heal the base. + if(attack && difficulty >= 0.5){ + int amount = Mathf.random(1, 3 + (int)(difficulty*2)); + + for(int i = 0; i < amount; i++){ + int wave = Mathf.random(3, 20); + out.add(new SpawnGroup(mega){{ + unitAmount = 1; + begin = wave; + end = wave; + max = 16; + }}); + } + } + //shift back waves on higher difficulty for a harder start int shift = Math.max((int)(difficulty * 15 - 5), 0); diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 0a49e1869d..08db3f0cca 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -439,7 +439,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ state.rules.waves = sector.info.waves = true; state.rules.enemyCoreBuildRadius = 600f; - state.rules.spawns = Waves.generate(difficulty); + state.rules.spawns = Waves.generate(difficulty, new Rand(), state.rules.attackMode); } @Override diff --git a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java index fc8f23fd88..934291dab8 100644 --- a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java @@ -15,7 +15,7 @@ public class TantrosPlanetGenerator extends PlanetGenerator{ @Override public Color getColor(Vec3 position){ - float depth = (float)noise.octaveNoise3D(2, 0.56, 1.7f, position.x, position.y, position.z) / 1.7f; + float depth = (float)noise.octaveNoise3D(2, 0.56, 1.7f, position.x, position.y, position.z) / 2f; return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(0.6f); } }