From 53008df1d253e43391a46529d9d18d2916ac0218 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 30 Apr 2017 13:01:29 -0400 Subject: [PATCH] Added more enemies --- build.gradle | 2 +- core/assets/sprites/moment.atlas | 121 +++++---- core/assets/sprites/moment.png | Bin 4043 -> 4233 bytes core/assets/ui/out/check-off.png | Bin 100 -> 194 bytes core/assets/ui/out/check-on.png | Bin 108 -> 210 bytes core/assets/ui/out/check-over.png | Bin 0 -> 197 bytes core/assets/ui/uiskin.atlas | 249 +++++++++--------- core/assets/ui/uiskin.json | 6 +- core/assets/ui/uiskin.png | Bin 23487 -> 23036 bytes core/src/io/anuke/moment/Control.java | 28 +- core/src/io/anuke/moment/Moment.java | 40 ++- core/src/io/anuke/moment/UI.java | 28 +- .../io/anuke/moment/entities/BossEnemy.java | 25 ++ .../io/anuke/moment/entities/BulletType.java | 16 ++ core/src/io/anuke/moment/entities/Enemy.java | 13 +- .../io/anuke/moment/entities/FastEnemy.java | 22 ++ .../io/anuke/moment/entities/FlameEnemy.java | 25 ++ core/src/io/anuke/moment/entities/Player.java | 16 ++ core/src/io/anuke/moment/resource/Recipe.java | 5 +- 19 files changed, 402 insertions(+), 194 deletions(-) create mode 100644 core/assets/ui/out/check-over.png create mode 100644 core/src/io/anuke/moment/entities/BossEnemy.java create mode 100644 core/src/io/anuke/moment/entities/FastEnemy.java create mode 100644 core/src/io/anuke/moment/entities/FlameEnemy.java diff --git a/build.gradle b/build.gradle index bc43fef102..9e76f6d525 100644 --- a/build.gradle +++ b/build.gradle @@ -61,7 +61,7 @@ project(":core") { dependencies { compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-ai:1.8.1" - compile fileTree(dir: '../core/lib', include: '*.jar') + //compile fileTree(dir: '../core/lib', include: '*.jar') } } diff --git a/core/assets/sprites/moment.atlas b/core/assets/sprites/moment.atlas index a396bc9742..df3b54a81e 100644 --- a/core/assets/sprites/moment.atlas +++ b/core/assets/sprites/moment.atlas @@ -6,14 +6,21 @@ filter: Nearest,Nearest repeat: none block rotate: false - xy: 117, 23 + xy: 85, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +bossmech + rotate: false + xy: 21, 17 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 bullet rotate: false - xy: 127, 23 + xy: 85, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -27,196 +34,210 @@ circle index: -1 coal1 rotate: false - xy: 137, 23 + xy: 97, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 147, 23 + xy: 107, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 157, 23 + xy: 117, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coaldrill rotate: false - xy: 167, 23 + xy: 127, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor rotate: false - xy: 177, 23 + xy: 137, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyormove rotate: false - xy: 187, 23 + xy: 147, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 core rotate: false - xy: 197, 23 + xy: 157, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 207, 23 + xy: 167, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 217, 23 + xy: 177, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 227, 23 + xy: 187, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtblock rotate: false - xy: 237, 23 + xy: 197, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 doubleturret rotate: false - xy: 13, 1 + xy: 37, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 drill rotate: false - xy: 247, 23 + xy: 207, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +fastmech + rotate: false + xy: 217, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +firemech + rotate: false + xy: 21, 1 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 flameturret rotate: false - xy: 21, 21 + xy: 37, 9 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 furnace rotate: false - xy: 25, 11 + xy: 227, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter rotate: false - xy: 25, 11 + xy: 227, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass rotate: false - xy: 25, 1 + xy: 237, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 healturret rotate: false - xy: 33, 21 + xy: 49, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-coal rotate: false - xy: 35, 11 + xy: 247, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 35, 1 + xy: 98, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 45, 11 + xy: 108, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 45, 1 + xy: 118, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron1 rotate: false - xy: 55, 11 + xy: 128, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron2 rotate: false - xy: 55, 1 + xy: 138, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron3 rotate: false - xy: 65, 11 + xy: 148, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill rotate: false - xy: 65, 1 + xy: 158, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ironwall rotate: false - xy: 75, 11 + xy: 168, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laser rotate: false - xy: 115, 7 + xy: 95, 7 size: 1, 12 orig: 1, 12 offset: 0, 0 @@ -230,140 +251,140 @@ laserend index: -1 machineturret rotate: false - xy: 45, 21 + xy: 49, 9 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 mech1 rotate: false - xy: 75, 1 + xy: 178, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 megahealturret rotate: false - xy: 57, 21 + xy: 61, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 player rotate: false - xy: 85, 11 + xy: 188, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 85, 1 + xy: 198, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shadow rotate: false - xy: 69, 21 + xy: 61, 9 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shotgunturret rotate: false - xy: 81, 21 + xy: 73, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 sniperturret rotate: false - xy: 93, 21 + xy: 73, 9 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 steelconveyor rotate: false - xy: 95, 11 + xy: 208, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyormove rotate: false - xy: 95, 1 + xy: 218, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall rotate: false - xy: 105, 11 + xy: 228, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone rotate: false - xy: 105, 1 + xy: 238, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone1 rotate: false - xy: 118, 13 + xy: 98, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 128, 13 + xy: 108, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 138, 13 + xy: 118, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock rotate: false - xy: 148, 13 + xy: 128, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonedrill rotate: false - xy: 158, 13 + xy: 138, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonedrillhead rotate: false - xy: 158, 13 + xy: 138, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonewall rotate: false - xy: 168, 13 + xy: 148, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 turret rotate: false - xy: 105, 21 + xy: 85, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 diff --git a/core/assets/sprites/moment.png b/core/assets/sprites/moment.png index 66d2049e73d294c47763b124c001be0754976f95..b55ad4a78a9aef871a6b0ab885b72cdf16b349e4 100644 GIT binary patch literal 4233 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 literal 4043 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 diff --git a/core/assets/ui/out/check-off.png b/core/assets/ui/out/check-off.png index fb891f792169da5c817f3bcf9bd452e8777fa5c0..d73a1a6e1fe9e618af098c2d8e7ff82c8aa455a6 100644 GIT binary patch delta 178 zcmYc}#5h5`UV(#+fq{W>tArB+0|Q%Dqfg=v-27h!@9L0B3 zepU)JedFh delta 83 zcmX@am@+}!SB8U)fq|ij_x=bP0l+XkK?iU|| diff --git a/core/assets/ui/out/check-on.png b/core/assets/ui/out/check-on.png index cbe240e4a6a3b332414f9e6a2f994ee9eb2b5d60..f1d36ec60c68568219803fd38271f16654492d2d 100644 GIT binary patch delta 194 zcmd0~#5h5`UV(#+fq{W>tArB+0|Q%FQ oa=YuwAQ%&7iS?PatZZc5ogJglyNG!n0|Nttr>mdKI;Vst0J*Cmx&QzG diff --git a/core/assets/ui/out/check-over.png b/core/assets/ui/out/check-over.png new file mode 100644 index 0000000000000000000000000000000000000000..d0fe60dbba001f4f986e767f16d932052e53ea4b GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0y~yV31*8U{K&-V_;xl+$!P3z`($k|H*Y zfq{Xuz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS!_$Ra18r0ylMzopr0QkZ_x&QzG literal 0 HcmV?d00001 diff --git a/core/assets/ui/uiskin.atlas b/core/assets/ui/uiskin.atlas index 2b592d1950..a5776908e9 100644 --- a/core/assets/ui/uiskin.atlas +++ b/core/assets/ui/uiskin.atlas @@ -13,7 +13,7 @@ blank index: -1 border rotate: false - xy: 677, 72 + xy: 292, 42 size: 12, 12 split: 4, 4, 4, 4 orig: 12, 12 @@ -21,21 +21,21 @@ border index: -1 border-circle rotate: false - xy: 849, 98 + xy: 939, 98 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 border-circle-error rotate: false - xy: 879, 98 + xy: 969, 98 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 border-dark-blue rotate: false - xy: 498, 92 + xy: 133, 21 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -43,7 +43,7 @@ border-dark-blue index: -1 border-error rotate: false - xy: 528, 85 + xy: 133, 16 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -67,7 +67,7 @@ bump index: -1 button rotate: false - xy: 823, 86 + xy: 913, 86 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -75,7 +75,7 @@ button index: -1 button-blue rotate: false - xy: 615, 86 + xy: 705, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -84,7 +84,7 @@ button-blue index: -1 button-blue-down rotate: false - xy: 563, 86 + xy: 653, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -93,7 +93,7 @@ button-blue-down index: -1 button-blue-over rotate: false - xy: 589, 86 + xy: 679, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -102,7 +102,7 @@ button-blue-over index: -1 button-down rotate: false - xy: 641, 86 + xy: 731, 86 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -110,7 +110,7 @@ button-down index: -1 button-gray rotate: false - xy: 693, 86 + xy: 783, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -119,7 +119,7 @@ button-gray index: -1 button-gray-over rotate: false - xy: 667, 86 + xy: 757, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -128,7 +128,7 @@ button-gray-over index: -1 button-over rotate: false - xy: 719, 86 + xy: 809, 86 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -136,7 +136,7 @@ button-over index: -1 button-red rotate: false - xy: 745, 86 + xy: 835, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -145,7 +145,7 @@ button-red index: -1 button-select rotate: false - xy: 563, 60 + xy: 219, 28 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -153,7 +153,7 @@ button-select index: -1 button-window-bg rotate: false - xy: 771, 86 + xy: 861, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -162,7 +162,7 @@ button-window-bg index: -1 button-window-over rotate: false - xy: 797, 86 + xy: 887, 86 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -171,36 +171,28 @@ button-window-over index: -1 check-off rotate: false - xy: 909, 98 - size: 28, 28 - orig: 28, 28 - offset: 0, 0 - index: -1 -textfield - rotate: false - xy: 909, 98 - size: 28, 28 - split: 6, 6, 6, 6 - orig: 28, 28 - offset: 0, 0 - index: -1 -vis-check - rotate: false - xy: 909, 98 - size: 28, 28 - orig: 28, 28 + xy: 503, 94 + size: 28, 32 + orig: 28, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 939, 98 - size: 28, 28 - orig: 28, 28 + xy: 533, 94 + size: 28, 32 + orig: 28, 32 + offset: 0, 0 + index: -1 +check-over + rotate: false + xy: 563, 94 + size: 28, 32 + orig: 28, 32 offset: 0, 0 index: -1 clear rotate: false - xy: 691, 74 + xy: 306, 44 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -214,7 +206,7 @@ color-picker-bar-selector index: -1 color-picker-cross rotate: false - xy: 703, 74 + xy: 318, 44 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -228,7 +220,7 @@ color-picker-selector-horizontal index: -1 color-picker-selector-vertical rotate: false - xy: 1021, 90 + xy: 168, 34 size: 1, 6 orig: 1, 6 offset: 0, 0 @@ -242,14 +234,14 @@ cursor index: -1 cursor-normal rotate: false - xy: 715, 74 + xy: 245, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 default-pane rotate: false - xy: 186, 2 + xy: 266, 33 size: 5, 3 split: 1, 1, 1, 1 orig: 5, 3 @@ -257,7 +249,7 @@ default-pane index: -1 default-pane-no-border rotate: false - xy: 138, 59 + xy: 498, 94 size: 1, 1 split: 0, 0, 0, 0 orig: 1, 1 @@ -273,7 +265,7 @@ default-select index: -1 default-select-selection rotate: false - xy: 180, 14 + xy: 171, 38 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -281,42 +273,42 @@ default-select-selection index: -1 grey rotate: false - xy: 589, 62 + xy: 645, 71 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 menu-bg rotate: false - xy: 589, 62 + xy: 645, 71 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 icon-arrow-down rotate: false - xy: 727, 74 + xy: 257, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 739, 74 + xy: 640, 59 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 751, 74 + xy: 330, 44 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 763, 74 + xy: 977, 78 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -344,70 +336,70 @@ icon-close-over index: -1 icon-copy rotate: false - xy: 775, 74 + xy: 989, 78 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 787, 74 + xy: 1001, 78 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 799, 74 + xy: 640, 47 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 811, 74 + xy: 645, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-dots rotate: false - xy: 823, 74 + xy: 657, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-dots-down rotate: false - xy: 835, 74 + xy: 669, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-down rotate: false - xy: 847, 74 + xy: 681, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-drive rotate: false - xy: 849, 86 + xy: 939, 86 size: 36, 10 orig: 36, 10 offset: 0, 0 index: -1 icon-eraser rotate: false - xy: 859, 74 + xy: 693, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-file-audio rotate: false - xy: 503, 90 + xy: 593, 90 size: 28, 36 orig: 28, 36 offset: 0, 0 @@ -421,28 +413,28 @@ icon-file-image index: -1 icon-file-pdf rotate: false - xy: 533, 92 + xy: 623, 92 size: 28, 34 orig: 28, 34 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 871, 74 + xy: 705, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-fill rotate: false - xy: 219, 42 + xy: 717, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 231, 42 + xy: 729, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -456,7 +448,7 @@ icon-folder-new index: -1 icon-folder-parent rotate: false - xy: 243, 42 + xy: 741, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -470,14 +462,14 @@ icon-folder-star index: -1 icon-grid rotate: false - xy: 255, 42 + xy: 753, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 923, 86 + xy: 765, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -491,91 +483,91 @@ icon-list-settings index: -1 icon-load-1 rotate: false - xy: 935, 86 + xy: 777, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load-2 rotate: false - xy: 947, 86 + xy: 789, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load-3 rotate: false - xy: 959, 86 + xy: 801, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-lock rotate: false - xy: 971, 86 + xy: 813, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-lock-open rotate: false - xy: 983, 86 + xy: 825, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-minus rotate: false - xy: 995, 86 + xy: 837, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-open rotate: false - xy: 267, 42 + xy: 849, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-open-gray rotate: false - xy: 279, 44 + xy: 861, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pencil rotate: false - xy: 291, 44 + xy: 873, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pick rotate: false - xy: 303, 44 + xy: 885, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-plus rotate: false - xy: 315, 44 + xy: 897, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 327, 44 + xy: 909, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-redo rotate: false - xy: 178, 31 + xy: 921, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -589,7 +581,7 @@ icon-refresh index: -1 icon-rename rotate: false - xy: 190, 31 + xy: 933, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -610,49 +602,49 @@ icon-star-outline index: -1 icon-tap rotate: false - xy: 168, 14 + xy: 945, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 174, 2 + xy: 957, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-undo rotate: false - xy: 180, 19 + xy: 652, 62 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-up rotate: false - xy: 192, 19 + xy: 652, 50 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-zoom rotate: false - xy: 186, 7 + xy: 664, 62 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 list-selection rotate: false - xy: 130, 23 + xy: 340, 83 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 vis-blue rotate: false - xy: 130, 23 + xy: 340, 83 size: 1, 1 orig: 1, 1 offset: 0, 0 @@ -667,14 +659,14 @@ padded-list-selection index: -1 progressbar rotate: false - xy: 1015, 94 + xy: 618, 56 size: 1, 32 orig: 1, 32 offset: 0, 0 index: -1 progressbar-filled rotate: false - xy: 1018, 94 + xy: 621, 56 size: 1, 32 orig: 1, 32 offset: 0, 0 @@ -695,28 +687,28 @@ progressbar-vertical index: -1 radio-off rotate: false - xy: 969, 98 + xy: 498, 64 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 vis-radio rotate: false - xy: 969, 98 + xy: 498, 64 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 radio-on rotate: false - xy: 498, 60 + xy: 528, 64 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 scroll rotate: false - xy: 887, 90 + xy: 977, 90 size: 34, 6 split: 4, 4, 2, 2 orig: 34, 6 @@ -750,14 +742,14 @@ scroll-knob-vertical index: -1 select-box-list-bg rotate: false - xy: 631, 65 + xy: 650, 89 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 window-bg rotate: false - xy: 631, 65 + xy: 650, 89 size: 1, 1 orig: 1, 1 offset: 0, 0 @@ -778,35 +770,35 @@ select-up index: -1 selection rotate: false - xy: 883, 83 + xy: 650, 86 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 separator rotate: false - xy: 887, 87 + xy: 974, 83 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 tree-over rotate: false - xy: 887, 87 + xy: 974, 83 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 separator-menu rotate: false - xy: 1007, 95 + xy: 648, 71 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 1021, 118 + xy: 130, 16 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -870,28 +862,43 @@ splitpane-over index: -1 splitpane-vertical rotate: false - xy: 1021, 108 + xy: 1015, 118 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 splitpane-vertical-over rotate: false - xy: 1021, 98 + xy: 138, 52 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 sub-menu rotate: false - xy: 168, 26 + xy: 266, 38 size: 8, 14 orig: 8, 14 offset: 0, 0 index: -1 +textfield + rotate: false + xy: 588, 60 + size: 28, 28 + split: 6, 6, 6, 6 + orig: 28, 28 + offset: 0, 0 + index: -1 +vis-check + rotate: false + xy: 588, 60 + size: 28, 28 + orig: 28, 28 + offset: 0, 0 + index: -1 textfield-over rotate: false - xy: 275, 56 + xy: 558, 64 size: 28, 28 split: 2, 2, 2, 2 orig: 28, 28 @@ -899,14 +906,14 @@ textfield-over index: -1 vis-check-over rotate: false - xy: 275, 56 + xy: 558, 64 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 tooltip-bg rotate: false - xy: 193, 2 + xy: 335, 81 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -921,21 +928,21 @@ touchpad-knob index: -1 tree-minus rotate: false - xy: 198, 7 + xy: 664, 50 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 tree-plus rotate: false - xy: 631, 68 + xy: 205, 28 size: 12, 16 orig: 12, 16 offset: 0, 0 index: -1 tree-selection rotate: false - xy: 528, 80 + xy: 645, 87 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -943,63 +950,63 @@ tree-selection index: -1 vis-check-down rotate: false - xy: 305, 56 + xy: 275, 56 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 vis-check-tick rotate: false - xy: 589, 65 + xy: 245, 33 size: 19, 19 orig: 19, 19 offset: 0, 0 index: -1 vis-check-tick-disabled rotate: false - xy: 610, 65 + xy: 624, 71 size: 19, 19 orig: 19, 19 offset: 0, 0 index: -1 vis-radio-down rotate: false - xy: 138, 12 + xy: 305, 56 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 vis-radio-over rotate: false - xy: 533, 62 + xy: 138, 12 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 vis-radio-tick rotate: false - xy: 645, 70 + xy: 624, 55 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 vis-radio-tick-disabled rotate: false - xy: 661, 70 + xy: 276, 40 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 vis-red rotate: false - xy: 335, 83 + xy: 340, 80 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 white rotate: false - xy: 198, 2 + xy: 969, 81 size: 3, 3 orig: 3, 3 offset: 0, 0 @@ -1014,7 +1021,7 @@ window index: -1 window-border-bg rotate: false - xy: 528, 75 + xy: 676, 69 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 diff --git a/core/assets/ui/uiskin.json b/core/assets/ui/uiskin.json index 121c5e473c..1bd0487445 100644 --- a/core/assets/ui/uiskin.json +++ b/core/assets/ui/uiskin.json @@ -36,7 +36,7 @@ io.anuke.ucore.scene.ui.ImageButton$ImageButtonStyle: { default: {down: button-down, up: button }, blue: {down: button-blue-down, up: button-blue }, toggle: {checked: button-down, down: button-down, up: button }, - select: {checked: button-select, down: button-select, up: clear }, + select: {checked: button-select, up: clear }, gray: {down: button-down, up: button-gray, over: button-gray-over, disabled: button}, close-window: {up: button, imageUp: icon-close, imageOver: icon-close-over, imageDown: icon-close-down, disabled: button } }, @@ -60,7 +60,7 @@ io.anuke.ucore.scene.ui.Window$WindowStyle: { default: {titleFont: default-font, background: window, titleFontColor: orange }, resizable: {background: window-resizable, titleFont: default-font, titleFontColor: white }, noborder: {background: window-noborder, titleFont: default-font, titleFontColor: white }, - dialog: {stageBackground: dialogDim, titleFont: default-font, background: window, titleFontColor: white } + dialog: {stageBackground: dialogDim, titleFont: default-font, background: window, titleFontColor: orange } }, io.anuke.ucore.scene.ui.KeybindDialog$KeybindDialogStyle: { default: {keyColor: red, keyNameColor: white}, @@ -84,7 +84,7 @@ io.anuke.ucore.scene.ui.TextField$TextFieldStyle: { small: {font: default-font, fontColor: white, disabledFontColor: grey, selection: selection, background: textfield, cursor: cursor, messageFont: default-font, messageFontColor: grey } }, io.anuke.ucore.scene.ui.CheckBox$CheckBoxStyle: { - default: {checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white, disabledFontColor: grey }, + default: {checkboxOn: check-on, checkboxOff: check-off, checkboxOver: check-over, font: default-font, fontColor: white, disabledFontColor: grey }, radio: {checkboxOn: radio-on, checkboxOff: radio-off, font: default-font, fontColor: white, disabledFontColor: grey } }, io.anuke.ucore.scene.ui.List$ListStyle: { diff --git a/core/assets/ui/uiskin.png b/core/assets/ui/uiskin.png index 0afe5f2834e966f1cbb885ccaedfd08a4553faf8..4b3f7798ab120cde63544a2beefd14814f485c37 100644 GIT binary patch literal 23036 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 diff --git a/core/src/io/anuke/moment/Control.java b/core/src/io/anuke/moment/Control.java index 5cc26258dc..23094b4878 100644 --- a/core/src/io/anuke/moment/Control.java +++ b/core/src/io/anuke/moment/Control.java @@ -13,7 +13,7 @@ import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import io.anuke.moment.ai.Pathfind; -import io.anuke.moment.entities.Enemy; +import io.anuke.moment.entities.FlameEnemy; import io.anuke.moment.entities.TileEntity; import io.anuke.moment.resource.ItemStack; import io.anuke.moment.world.Tile; @@ -89,6 +89,14 @@ public class Control extends RendererModule{ Draw.clear(); }); + Effect.addDraw("coreexplosion", 13, e -> { + Draw.thickness(3f-e.ifract()*2f); + Draw.color(Hue.mix(Color.ORANGE, Color.WHITE, e.ifract())); + Draw.spikes(e.x, e.y, 5f + e.ifract() * 40f, 6, 6); + Draw.circle(e.x, e.y, 4f + e.ifract() * 40f); + Draw.clear(); + }); + Effect.addDraw("spawn", 23, e -> { Draw.thickness(2f); Draw.color(Hue.mix(Color.DARK_GRAY, Color.SCARLET, e.ifract())); @@ -102,13 +110,21 @@ public class Control extends RendererModule{ Draw.circle(e.x, e.y, 3); Draw.clear(); }); + + Effect.addDraw("respawn", main.respawntime, e -> { + Draw.tcolor(Color.SCARLET); + Draw.tscl(0.25f); + Draw.text("Respawning in " + (int)((e.lifetime-e.time)/60), e.x, e.y); + Draw.tscl(0.5f); + Draw.clear(); + }); Pathfind.updatePath(); } public void tryMove(SolidEntity e, float x, float y){ e.getBoundingBox(Rectangle.tmp); - Rectangle.tmp.setSize(Rectangle.tmp.width * 0.5f); + Rectangle.tmp.setSize(4); if(!overlaps(Rectangle.tmp, e.x + x, e.y)){ e.x += x; @@ -152,8 +168,9 @@ public class Control extends RendererModule{ Cursors.restoreCursor(); } + //TODO if(UInput.keyUp(Keys.G)) - new Enemy(0).set(main.player.x, main.player.y).add(); + new FlameEnemy(0).set(main.player.x, main.player.y).add(); if(UInput.buttonUp(Buttons.LEFT) && main.recipe != null && validPlace(tilex(), tiley(), main.recipe.result) && !get(UI.class).hasMouse()){ Tile tile = main.tile(tilex(), tiley()); @@ -257,7 +274,10 @@ public class Control extends RendererModule{ Entities.update(); input(); - camera.position.set(main.player.x, main.player.y, 0f); + if(main.core.block() == TileType.core) + camera.position.set(main.player.x, main.player.y, 0f); + else + camera.position.set(main.core.worldx(), main.core.worldy(), 0f); clampCamera(-tilesize / 2f, -tilesize / 2f, main.pixsize - tilesize / 2f, main.pixsize - tilesize / 2f); drawDefault(); diff --git a/core/src/io/anuke/moment/Moment.java b/core/src/io/anuke/moment/Moment.java index 7269535472..68dd422dea 100644 --- a/core/src/io/anuke/moment/Moment.java +++ b/core/src/io/anuke/moment/Moment.java @@ -16,6 +16,7 @@ import io.anuke.ucore.core.KeyBinds; import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.UInput; import io.anuke.ucore.entities.Effects; +import io.anuke.ucore.entities.Entities; import io.anuke.ucore.modules.ModuleController; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Timers; @@ -30,9 +31,10 @@ public class Moment extends ModuleController{ public Recipe recipe; public int rotation; public float placerange = 60; + public float respawntime = 60*6; public int wave = 1; - public float wavespace = 1000; + public float wavespace = 60*60; public float wavetime = wavespace; public float spawnspace = 65; public Tile core; @@ -68,17 +70,13 @@ public class Moment extends ModuleController{ } } - generate(); - - items.put(Item.stone, 20); //items.put(Item.stone, 200); //items.put(Item.iron, 200); //items.put(Item.steel, 200); - player = new Player().add(); + player = new Player(); - player.x = core.worldx(); - player.y = core.worldy()+10; + restart(); } @Override @@ -100,8 +98,36 @@ public class Moment extends ModuleController{ playing = true; } + public void restart(){ + wave = 1; + wavetime = wavespace; + Entities.clear(); + Enemy.amount = 0; + player.add(); + player.heal(); + items.clear(); + generate(); + + player.x = core.worldx(); + player.y = core.worldy()+10; + + items.put(Item.stone, 20); + } + public void coreDestroyed(){ //TODO "you lose" message or something + Effects.shake(5, 6); + for(int i = 0; i < 16; i ++){ + Timers.run(i*2, ()->{ + Effects.effect("explosion", core.worldx()+Mathf.range(40), core.worldy()+Mathf.range(40)); + }); + + } + Effects.effect("coreexplosion", core.worldx(), core.worldy()); + + Timers.run(60, ()->{ + getModule(UI.class).showRestart(); + }); } void generate(){ diff --git a/core/src/io/anuke/moment/UI.java b/core/src/io/anuke/moment/UI.java index 1c7aca294f..57599c6833 100644 --- a/core/src/io/anuke/moment/UI.java +++ b/core/src/io/anuke/moment/UI.java @@ -27,7 +27,7 @@ public class UI extends SceneModule{ Table itemtable; PrefsDialog prefs; KeybindDialog keys; - Dialog about, menu; + Dialog about, menu, restart; BooleanSupplier play = () -> { return main.playing; @@ -65,7 +65,7 @@ public class UI extends SceneModule{ Draw.tscl(1 / 8f); Draw.text(error, tile.worldx(), tile.worldy() + tilesize); - }else if(tile.block().name().contains("turret")){ + }else if(tile.block().ammo != null){ Draw.tscl(1 / 8f); Draw.tcolor(Color.GREEN); Draw.text("Ammo: " + tile.entity.shots, tile.worldx(), tile.worldy() - tilesize); @@ -106,6 +106,9 @@ public class UI extends SceneModule{ prefs.sliderPref("screenshake", "Screen Shake", 4, 0, 12, i -> { return (i / 4f) + "x"; }); + + + prefs.checkPref("fps", "Show FPS", false); keys = new KeybindDialog(); @@ -113,6 +116,14 @@ public class UI extends SceneModule{ about.getContentTable().add("Made by Anuken for the" + "\nGDL Metal Monstrosity jam." + "\nTools used:"); about.addCloseButton(); + restart = new Dialog("Your core was destroyed.", "dialog"); + restart.content().add("You lasted until wave [GREEN]" + main.wave + "[].").pad(6); + restart.getButtonTable().addButton("Back to menu", ()->{ + restart.hide(); + main.playing = false; + main.restart(); + }); + menu = new Dialog("Paused", "dialog"); menu.content().addButton("Back", ()->{ menu.hide(); @@ -181,6 +192,7 @@ public class UI extends SceneModule{ ImageButton image = new ImageButton(Draw.region(r.result.name()), "select"); image.clicked(()->{ + if(main.hasItems(r.requirements)) main.recipe = r; }); @@ -188,8 +200,12 @@ public class UI extends SceneModule{ image.getImageCell().size(size); image.update(()->{ - image.setChecked(main.recipe == r); - image.setDisabled(!main.hasItems(r.requirements)); + + boolean has = main.hasItems(r.requirements); + image.setDisabled(!has); + image.setChecked(main.recipe == r && has); + //image.setTouchable(has ? Touchable.enabled : Touchable.disabled); + image.getImage().setColor(has ? Color.WHITE : Color.GRAY); }); if(i % rows == rows-1) @@ -401,6 +417,10 @@ public class UI extends SceneModule{ build.end(); } + + public void showRestart(){ + restart.show(scene); + } public void updateItems(){ itemtable.clear(); diff --git a/core/src/io/anuke/moment/entities/BossEnemy.java b/core/src/io/anuke/moment/entities/BossEnemy.java new file mode 100644 index 0000000000..0e38a365c2 --- /dev/null +++ b/core/src/io/anuke/moment/entities/BossEnemy.java @@ -0,0 +1,25 @@ +package io.anuke.moment.entities; + +import io.anuke.ucore.core.Draw; + +public class BossEnemy extends Enemy{ + + public BossEnemy(int spawn) { + super(spawn); + + reload = 8; + bullet = BulletType.smallfast; + maxhealth = 260; + hitsize = 8; + speed = 0.27f; + heal(); + + range = 70; + } + + @Override + public void draw(){ + Draw.rect("bossmech", x, y, direction.angle()-90); + } + +} diff --git a/core/src/io/anuke/moment/entities/BulletType.java b/core/src/io/anuke/moment/entities/BulletType.java index 460fe300bf..3a84749e92 100644 --- a/core/src/io/anuke/moment/entities/BulletType.java +++ b/core/src/io/anuke/moment/entities/BulletType.java @@ -34,6 +34,14 @@ public enum BulletType{ Draw.clear(); } }, + smallfast(1.6f, 2){ + Color color = new Color(0x8b5ec9ff); + public void draw(Bullet b){ + Draw.color(color); + Draw.rect("bullet", b.x, b.y, b.angle()); + Draw.clear(); + } + }, flame(0.6f, 4){ public void draw(Bullet b){ Draw.color(Color.YELLOW, Color.SCARLET, b.time/lifetime); @@ -42,6 +50,14 @@ public enum BulletType{ Draw.clear(); } }, + flameshot(0.5f, 3){ + public void draw(Bullet b){ + Draw.color(Color.ORANGE, Color.SCARLET, b.time/lifetime); + float size = 6f-b.time/lifetime*5f; + Draw.rect("circle", b.x, b.y, size, size); + Draw.clear(); + } + }, shot(2.4f, 2){ {lifetime=40;} public void draw(Bullet b){ diff --git a/core/src/io/anuke/moment/entities/Enemy.java b/core/src/io/anuke/moment/entities/Enemy.java index d5dcec3d35..775fff034d 100644 --- a/core/src/io/anuke/moment/entities/Enemy.java +++ b/core/src/io/anuke/moment/entities/Enemy.java @@ -19,6 +19,9 @@ public class Enemy extends DestructibleEntity{ public Entity target; public int spawn; public float reload = 40; + public float range = 60; + public BulletType bullet = BulletType.small; + public float length = 4; public Enemy(int spawn){ this.spawn = spawn; @@ -37,16 +40,22 @@ public class Enemy extends DestructibleEntity{ Moment.module(Control.class).tryMove(this, vec.x*delta, vec.y*delta); - target = Entities.getClosest(x, y, 60, e->{ + target = Entities.getClosest(x, y, range, e->{ return (e instanceof TileEntity || e instanceof Player); }); if(target != null){ if(Timers.get(this, reload)) - new Bullet(BulletType.small, this, x, y, direction.angle()).add(); + shoot(); + } } + public void shoot(){ + vector.set(length, 0).rotate(direction.angle()); + new Bullet(bullet, this, x+vector.x, y+vector.y, direction.angle()).add(); + } + @Override public boolean collides(SolidEntity other){ return (other instanceof Bullet) && !(((Bullet)other).owner instanceof Enemy); diff --git a/core/src/io/anuke/moment/entities/FastEnemy.java b/core/src/io/anuke/moment/entities/FastEnemy.java new file mode 100644 index 0000000000..53db0fc08a --- /dev/null +++ b/core/src/io/anuke/moment/entities/FastEnemy.java @@ -0,0 +1,22 @@ +package io.anuke.moment.entities; + +import io.anuke.ucore.core.Draw; + +public class FastEnemy extends Enemy{ + + public FastEnemy(int spawn) { + super(spawn); + + speed = 0.7f; + reload = 30; + + maxhealth = 20; + heal(); + } + + @Override + public void draw(){ + Draw.rect("fastmech", x, y, direction.angle()-90); + } + +} diff --git a/core/src/io/anuke/moment/entities/FlameEnemy.java b/core/src/io/anuke/moment/entities/FlameEnemy.java new file mode 100644 index 0000000000..9bdc81ef95 --- /dev/null +++ b/core/src/io/anuke/moment/entities/FlameEnemy.java @@ -0,0 +1,25 @@ +package io.anuke.moment.entities; + +import io.anuke.ucore.core.Draw; + +public class FlameEnemy extends Enemy{ + + public FlameEnemy(int spawn) { + super(spawn); + speed = 0.25f; + + maxhealth = 100; + reload = 6; + bullet = BulletType.flameshot; + + range = 30; + + heal(); + } + + @Override + public void draw(){ + Draw.rect("firemech", x, y, direction.angle()-90); + } + +} diff --git a/core/src/io/anuke/moment/entities/Player.java b/core/src/io/anuke/moment/entities/Player.java index 14cbbbafa5..ff95650f21 100644 --- a/core/src/io/anuke/moment/entities/Player.java +++ b/core/src/io/anuke/moment/entities/Player.java @@ -9,7 +9,9 @@ import io.anuke.moment.UI; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.UInput; import io.anuke.ucore.entities.DestructibleEntity; +import io.anuke.ucore.entities.Effects; import io.anuke.ucore.util.Angles; +import io.anuke.ucore.util.Timers; public class Player extends DestructibleEntity{ Vector2 direction = new Vector2(); @@ -25,6 +27,20 @@ public class Player extends DestructibleEntity{ heal(); } + @Override + public void onDeath(){ + remove(); + Effects.effect("explosion", this); + Effects.shake(4f, 5f); + Effects.effect("respawn", this); + + Timers.run(Moment.i.respawntime, ()->{ + set(Moment.i.core.worldx(), Moment.i.core.worldy()+8); + heal(); + add(); + }); + } + @Override public void removed(){ } diff --git a/core/src/io/anuke/moment/resource/Recipe.java b/core/src/io/anuke/moment/resource/Recipe.java index 030a00a771..1dc1792f5b 100644 --- a/core/src/io/anuke/moment/resource/Recipe.java +++ b/core/src/io/anuke/moment/resource/Recipe.java @@ -14,8 +14,6 @@ public enum Recipe{ fastconveyor(distribution, TileType.steelconveyor, stack(Item.steel, 1)), router(distribution, TileType.router, stack(Item.stone, 3)), - healturret(defense, TileType.healturret, stack(Item.iron, 30)), - megahealturret(defense, TileType.megahealturret, stack(Item.iron, 30), stack(Item.steel, 30)), turret(defense, TileType.turret, stack(Item.stone, 4)), dturret(defense, TileType.doubleturret, stack(Item.stone, 6)), @@ -24,6 +22,9 @@ public enum Recipe{ flameturret(defense, TileType.flameturret, stack(Item.iron, 12), stack(Item.steel, 12)), sniperturret(defense, TileType.sniperturret, stack(Item.iron, 15), stack(Item.steel, 20)), + healturret(defense, TileType.healturret, stack(Item.iron, 30)), + megahealturret(defense, TileType.megahealturret, stack(Item.iron, 30), stack(Item.steel, 30)), + drill(production, TileType.stonedrill, stack(Item.stone, 5)), irondrill(production, TileType.irondrill, stack(Item.stone, 30)), coaldrill(production, TileType.coaldrill, stack(Item.stone, 30), stack(Item.iron, 30)),