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 66d2049e73..b55ad4a78a 100644 Binary files a/core/assets/sprites/moment.png and b/core/assets/sprites/moment.png differ diff --git a/core/assets/ui/out/check-off.png b/core/assets/ui/out/check-off.png index fb891f7921..d73a1a6e1f 100644 Binary files a/core/assets/ui/out/check-off.png and b/core/assets/ui/out/check-off.png differ diff --git a/core/assets/ui/out/check-on.png b/core/assets/ui/out/check-on.png index cbe240e4a6..f1d36ec60c 100644 Binary files a/core/assets/ui/out/check-on.png and b/core/assets/ui/out/check-on.png differ diff --git a/core/assets/ui/out/check-over.png b/core/assets/ui/out/check-over.png new file mode 100644 index 0000000000..d0fe60dbba Binary files /dev/null and b/core/assets/ui/out/check-over.png differ 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 0afe5f2834..4b3f7798ab 100644 Binary files a/core/assets/ui/uiskin.png and b/core/assets/ui/uiskin.png differ 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)),