diff --git a/core/assets-raw/sprites/blocks/plasmaturret.png b/core/assets-raw/sprites/blocks/plasmaturret.png new file mode 100644 index 0000000000..e6e7a1d328 Binary files /dev/null and b/core/assets-raw/sprites/blocks/plasmaturret.png differ diff --git a/core/assets-raw/sprites/blocks/waveturret.png b/core/assets-raw/sprites/blocks/waveturret.png new file mode 100644 index 0000000000..7ca8d8a3f8 Binary files /dev/null and b/core/assets-raw/sprites/blocks/waveturret.png differ diff --git a/core/assets-raw/sprites/icon-dirium.png b/core/assets-raw/sprites/icon-dirium.png index e68f3fba96..df7bfef7ab 100644 Binary files a/core/assets-raw/sprites/icon-dirium.png and b/core/assets-raw/sprites/icon-dirium.png differ diff --git a/core/assets-raw/sprites/weapon-blaster.png b/core/assets-raw/sprites/weapon-blaster.png deleted file mode 100644 index f086440ffc..0000000000 Binary files a/core/assets-raw/sprites/weapon-blaster.png and /dev/null differ diff --git a/core/assets-raw/sprites/weapon-flamethrower.png b/core/assets-raw/sprites/weapon-flamethrower.png deleted file mode 100644 index 057fd81f9b..0000000000 Binary files a/core/assets-raw/sprites/weapon-flamethrower.png and /dev/null differ diff --git a/core/assets-raw/sprites/weapon-multigun.png b/core/assets-raw/sprites/weapon-multigun.png deleted file mode 100644 index 5c10563611..0000000000 Binary files a/core/assets-raw/sprites/weapon-multigun.png and /dev/null differ diff --git a/core/assets-raw/sprites/weapon-trishot.png b/core/assets-raw/sprites/weapon-trishot.png deleted file mode 100644 index 736f80682a..0000000000 Binary files a/core/assets-raw/sprites/weapon-trishot.png and /dev/null differ diff --git a/core/assets-raw/sprites/weapons/blaster.png b/core/assets-raw/sprites/weapons/blaster.png new file mode 100644 index 0000000000..dd6f6f9bf4 Binary files /dev/null and b/core/assets-raw/sprites/weapons/blaster.png differ diff --git a/core/assets-raw/sprites/weapons/flamethrower.png b/core/assets-raw/sprites/weapons/flamethrower.png new file mode 100644 index 0000000000..54c56ed011 Binary files /dev/null and b/core/assets-raw/sprites/weapons/flamethrower.png differ diff --git a/core/assets-raw/sprites/weapons/mortar.png b/core/assets-raw/sprites/weapons/mortar.png new file mode 100644 index 0000000000..044dee0df3 Binary files /dev/null and b/core/assets-raw/sprites/weapons/mortar.png differ diff --git a/core/assets-raw/sprites/weapons/multigun.png b/core/assets-raw/sprites/weapons/multigun.png new file mode 100644 index 0000000000..1ccb142976 Binary files /dev/null and b/core/assets-raw/sprites/weapons/multigun.png differ diff --git a/core/assets-raw/sprites/weapons/railgun.png b/core/assets-raw/sprites/weapons/railgun.png new file mode 100644 index 0000000000..2e58373a05 Binary files /dev/null and b/core/assets-raw/sprites/weapons/railgun.png differ diff --git a/core/assets-raw/sprites/weapons/triblaster.png b/core/assets-raw/sprites/weapons/triblaster.png new file mode 100644 index 0000000000..484b2ffcc3 Binary files /dev/null and b/core/assets-raw/sprites/weapons/triblaster.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 92751af94f..4128a264d5 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,539 +13,553 @@ blank index: -1 blocks/block rotate: false - xy: 199, 23 + xy: 271, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal1 rotate: false - xy: 219, 23 + xy: 291, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal2 rotate: false - xy: 229, 23 + xy: 301, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal3 rotate: false - xy: 239, 23 + xy: 311, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 249, 23 + xy: 321, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 259, 23 + xy: 331, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 269, 23 + xy: 341, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 279, 23 + xy: 351, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 289, 23 + xy: 361, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 299, 23 + xy: 371, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 309, 23 + xy: 381, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/core rotate: false - xy: 319, 23 + xy: 391, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/cross rotate: false - xy: 329, 23 + xy: 401, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 339, 23 + xy: 411, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 349, 23 + xy: 421, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 359, 23 + xy: 431, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 369, 23 + xy: 441, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 379, 23 + xy: 451, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtblock rotate: false - xy: 389, 23 + xy: 461, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtedge rotate: false - xy: 37, 19 + xy: 85, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/doubleturret rotate: false - xy: 65, 7 + xy: 113, 7 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/drill rotate: false - xy: 399, 23 + xy: 471, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/flameturret rotate: false - xy: 79, 21 + xy: 127, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/grass1 rotate: false - xy: 419, 23 + xy: 491, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 429, 23 + xy: 501, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 439, 23 + xy: 128, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock rotate: false - xy: 449, 23 + xy: 128, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 459, 23 + xy: 138, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassedge rotate: false - xy: 37, 5 + xy: 85, 5 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/iron1 rotate: false - xy: 90, 11 + xy: 168, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 90, 1 + xy: 178, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 100, 11 + xy: 178, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 100, 1 + xy: 188, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 110, 11 + xy: 188, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 110, 1 + xy: 198, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 91, 21 + xy: 139, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 103, 21 + xy: 151, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 115, 21 + xy: 163, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 127, 21 + xy: 175, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 120, 1 + xy: 208, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 120, 1 + xy: 208, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 130, 11 + xy: 208, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/pump - rotate: false - xy: 140, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/repairturret - rotate: false - xy: 139, 21 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/rock - rotate: false - xy: 140, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rock2 - rotate: false - xy: 150, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rock2shadow - rotate: false - xy: 150, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rockshadow - rotate: false - xy: 160, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/router - rotate: false - xy: 160, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/shadow - rotate: false - xy: 151, 21 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/shotgunturret - rotate: false - xy: 163, 21 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/shrub - rotate: false - xy: 170, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/shrubshadow - rotate: false - xy: 170, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/smelter - rotate: false - xy: 180, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/sniperturret - rotate: false - xy: 175, 21 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/steelconveyor - rotate: false - xy: 180, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/steelconveyormove - rotate: false - xy: 190, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/steelwall - rotate: false - xy: 190, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stone - rotate: false - xy: 51, 19 - size: 12, 12 - orig: 12, 12 - offset: 0, 0 - index: -1 -blocks/stone1 - rotate: false - xy: 200, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stone2 - rotate: false - xy: 200, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stone3 - rotate: false - xy: 210, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stoneblock - rotate: false - xy: 210, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stoneblock2 - rotate: false - xy: 220, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stoneblock3 - rotate: false - xy: 220, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stonedrill - rotate: false - xy: 230, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stoneedge - rotate: false - xy: 51, 5 - size: 12, 12 - orig: 12, 12 - offset: 0, 0 - index: -1 -blocks/stonewall - rotate: false - xy: 230, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/titanium1 - rotate: false - xy: 240, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/titanium2 - rotate: false - xy: 240, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/titanium3 - rotate: false - xy: 250, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/titaniumdrill - rotate: false - xy: 250, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/titaniumwall - rotate: false - xy: 260, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/turret +blocks/plasmaturret rotate: false xy: 187, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +blocks/pump + rotate: false + xy: 218, 1 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/repairturret + rotate: false + xy: 199, 21 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/rock + rotate: false + xy: 228, 11 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/rock2 + rotate: false + xy: 228, 1 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/rock2shadow + rotate: false + xy: 238, 11 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/rockshadow + rotate: false + xy: 238, 1 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/router + rotate: false + xy: 248, 11 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/shadow + rotate: false + xy: 211, 21 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/shotgunturret + rotate: false + xy: 223, 21 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/shrub + rotate: false + xy: 248, 1 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/shrubshadow + rotate: false + xy: 258, 11 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/smelter + rotate: false + xy: 258, 1 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/sniperturret + rotate: false + xy: 235, 21 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/steelconveyor + rotate: false + xy: 268, 11 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/steelconveyormove + rotate: false + xy: 268, 1 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/steelwall + rotate: false + xy: 278, 13 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stone + rotate: false + xy: 99, 19 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 +blocks/stone1 + rotate: false + xy: 278, 3 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stone2 + rotate: false + xy: 288, 13 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stone3 + rotate: false + xy: 288, 3 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stoneblock + rotate: false + xy: 298, 13 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stoneblock2 + rotate: false + xy: 298, 3 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stoneblock3 + rotate: false + xy: 308, 13 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stonedrill + rotate: false + xy: 308, 3 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stoneedge + rotate: false + xy: 99, 5 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 +blocks/stonewall + rotate: false + xy: 318, 13 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titanium1 + rotate: false + xy: 318, 3 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titanium2 + rotate: false + xy: 328, 13 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titanium3 + rotate: false + xy: 328, 3 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titaniumdrill + rotate: false + xy: 338, 13 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titaniumwall + rotate: false + xy: 338, 3 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/turret + rotate: false + xy: 247, 21 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 blocks/water rotate: false - xy: 260, 3 + xy: 348, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/wateredge rotate: false - xy: 65, 19 + xy: 113, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +blocks/waveturret + rotate: false + xy: 259, 21 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 bullet rotate: false - xy: 209, 23 + xy: 281, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -559,77 +573,77 @@ circle index: -1 enemies/bossmech rotate: false - xy: 21, 17 + xy: 21, 1 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastmech rotate: false - xy: 409, 23 + xy: 481, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 enemies/firemech rotate: false - xy: 21, 1 + xy: 37, 17 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mech1 rotate: false - xy: 120, 11 + xy: 198, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-coal rotate: false - xy: 469, 23 + xy: 138, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 479, 23 + xy: 148, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 489, 23 + xy: 148, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 499, 23 + xy: 158, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 80, 11 + xy: 158, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 80, 1 + xy: 168, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laser rotate: false - xy: 77, 5 + xy: 125, 5 size: 1, 12 orig: 1, 12 offset: 0, 0 @@ -643,36 +657,50 @@ laserend index: -1 player rotate: false - xy: 130, 1 + xy: 218, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -weapon-blaster +weapons/blaster rotate: false - xy: 270, 13 - size: 8, 8 - orig: 8, 8 + xy: 21, 17 + size: 14, 14 + orig: 14, 14 offset: 0, 0 index: -1 -weapon-flamethrower +weapons/flamethrower rotate: false - xy: 270, 3 - size: 8, 8 - orig: 8, 8 + xy: 37, 1 + size: 14, 14 + orig: 14, 14 offset: 0, 0 index: -1 -weapon-multigun +weapons/mortar rotate: false - xy: 280, 13 - size: 8, 8 - orig: 8, 8 + xy: 53, 17 + size: 14, 14 + orig: 14, 14 offset: 0, 0 index: -1 -weapon-trishot +weapons/multigun rotate: false - xy: 280, 3 - size: 8, 8 - orig: 8, 8 + xy: 53, 1 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +weapons/railgun + rotate: false + xy: 69, 17 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +weapons/triblaster + rotate: false + xy: 69, 1 + size: 14, 14 + orig: 14, 14 offset: 0, 0 index: -1 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 4c81b14174..b3b6082ca4 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/io/anuke/mindustry/Control.java b/core/src/io/anuke/mindustry/Control.java index 2820bdc537..8aeee09936 100644 --- a/core/src/io/anuke/mindustry/Control.java +++ b/core/src/io/anuke/mindustry/Control.java @@ -11,12 +11,12 @@ import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.GameState.State; import io.anuke.mindustry.ai.Pathfind; import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.Weapon; import io.anuke.mindustry.entities.enemies.*; import io.anuke.mindustry.input.AndroidInput; import io.anuke.mindustry.input.GestureHandler; import io.anuke.mindustry.input.Input; import io.anuke.mindustry.io.SaveIO; +import io.anuke.mindustry.resource.Weapon; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.World; import io.anuke.mindustry.world.blocks.ProductionBlocks; diff --git a/core/src/io/anuke/mindustry/Inventory.java b/core/src/io/anuke/mindustry/Inventory.java index 2d3b287282..dd685dc699 100644 --- a/core/src/io/anuke/mindustry/Inventory.java +++ b/core/src/io/anuke/mindustry/Inventory.java @@ -21,6 +21,7 @@ public class Inventory{ items.put(Item.steel, 2000000); items.put(Item.coal, 2000000); items.put(Item.titanium, 2000000); + items.put(Item.dirium, 2000000); } } diff --git a/core/src/io/anuke/mindustry/UI.java b/core/src/io/anuke/mindustry/UI.java index 6f6e0887c7..117a67ff52 100644 --- a/core/src/io/anuke/mindustry/UI.java +++ b/core/src/io/anuke/mindustry/UI.java @@ -16,7 +16,6 @@ import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.GameState.State; -import io.anuke.mindustry.entities.Weapon; import io.anuke.mindustry.input.AndroidInput; import io.anuke.mindustry.resource.*; import io.anuke.mindustry.ui.*; @@ -551,8 +550,8 @@ public class UI extends SceneModule{ weapontable.clearChildren(); for(Weapon weapon : control.getWeapons()){ - ImageButton button = new ImageButton(Draw.region("weapon-"+weapon.name()), "static"); - button.getImageCell().size(40); + ImageButton button = new ImageButton(Draw.region(weapon.name()), "static"); + button.getImageCell().size(14*3); button.setDisabled(true); if(weapon != player.weapon) diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index fabb3deb61..18d63e2a0f 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -108,6 +108,17 @@ public abstract class BulletType extends BaseBulletType{ Draw.reset(); } }, + plasmaflame = new BulletType(0.8f, 15){ + { + lifetime = 65f; + } + public void draw(Bullet b){ + Draw.color(Color.valueOf("c2efd7"), Color.valueOf("72deaf"), b.time/lifetime); + float size = 7f-b.time/lifetime*6f; + Draw.rect("circle", b.x, b.y, size, size); + Draw.reset(); + } + }, flameshot = new BulletType(0.5f, 3){ public void draw(Bullet b){ Draw.color(Color.ORANGE, Color.SCARLET, b.time/lifetime); diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index a07f63c8ef..d6a6d8dfbd 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -8,6 +8,7 @@ import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; import io.anuke.mindustry.resource.Recipe; +import io.anuke.mindustry.resource.Weapon; import io.anuke.ucore.core.*; import io.anuke.ucore.entities.DestructibleEntity; import io.anuke.ucore.util.Angles; diff --git a/core/src/io/anuke/mindustry/entities/StatusEffect.java b/core/src/io/anuke/mindustry/entities/StatusEffect.java new file mode 100644 index 0000000000..f84d076f3d --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/StatusEffect.java @@ -0,0 +1,5 @@ +package io.anuke.mindustry.entities; + +public enum StatusEffect{ + none; +} diff --git a/core/src/io/anuke/mindustry/entities/effect/TeslaOrb.java b/core/src/io/anuke/mindustry/entities/effect/TeslaOrb.java new file mode 100644 index 0000000000..bc9df8980f --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/effect/TeslaOrb.java @@ -0,0 +1,127 @@ +package io.anuke.mindustry.entities.effect; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.ObjectSet; + +import io.anuke.mindustry.entities.enemies.Enemy; +import io.anuke.ucore.core.Draw; +import io.anuke.ucore.core.Effects; +import io.anuke.ucore.core.Timers; +import io.anuke.ucore.entities.Entities; +import io.anuke.ucore.entities.Entity; +import io.anuke.ucore.entities.SolidEntity; +import io.anuke.ucore.util.Mathf; +import io.anuke.ucore.util.Tmp; + +public class TeslaOrb extends Entity{ + private Array points = new Array<>(); + private ObjectSet hit = new ObjectSet<>(); + private int damage = 0; + private float range = 0; + private float lifetime = 30f; + private float life = 0f; + + public TeslaOrb(float x, float y, float range, int damage){ + set(x, y); + this.damage = damage; + this.range = range; + } + + void shock(){ + float stopchance = 0.1f; + float curx = x, cury = y; + float shake = 3f; + + outer: + while(true){ + if(Mathf.chance(stopchance)){ + break; + } + Array enemies = Entities.getNearby(curx, cury, range); + + for(SolidEntity entity : enemies){ + if(entity instanceof Enemy && entity.distanceTo(curx, cury) < range + && !hit.contains((Enemy)entity)){ + hit.add((Enemy)entity); + points.add(new Vector2(entity.x + Mathf.range(shake), entity.y + Mathf.range(shake))); + damageEnemy((Enemy)entity); + curx = entity.x; + cury = entity.y; + continue outer; + } + } + + break; + } + + if(points.size == 0){ + remove(); + } + } + + void damageEnemy(Enemy enemy){ + //TODO + enemy.damage(damage); + Effects.effect("laserhit", enemy.x + Mathf.range(2f), enemy.y + Mathf.range(2f)); + } + + @Override + public void update(){ + life += Timers.delta(); + + if(life >= lifetime){ + remove(); + } + } + + @Override + public void drawOver(){ + if(points.size == 0) return; + + float range = 1f; + + Vector2 previous = Tmp.v1.set(x, y); + + for(Vector2 enemy : points){ + + + float x1 = previous.x + Mathf.range(range), + y1 = previous.y + Mathf.range(range), + x2 = enemy.x + Mathf.range(range), + y2 = enemy.y + Mathf.range(range); + + Draw.color(Color.WHITE); + Draw.alpha(1f-life/lifetime); + + Draw.thick(3f - life/lifetime*2f); + Draw.line(x1, y1, x2, y2); + + float rad = 7f - life/lifetime*5f; + + Draw.rect("circle", x2, y2, rad, rad); + + if(previous.epsilonEquals(x, y, 0.001f)){ + Draw.rect("circle", x, y, rad, rad); + } + + //Draw.color(Color.WHITE); + + //Draw.thick(2f - life/lifetime*2f); + //Draw.line(x1, y1, x2, y2); + + Draw.reset(); + + previous = enemy; + } + } + + @Override + public void added(){ + Timers.run(1f, ()->{ + shock(); + }); + + } +} diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java index 7cdf998163..4833b63e1b 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -4,9 +4,7 @@ import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; import io.anuke.mindustry.ai.Pathfind; -import io.anuke.mindustry.entities.Bullet; -import io.anuke.mindustry.entities.BulletType; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.*; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.World; import io.anuke.ucore.core.Draw; @@ -30,6 +28,7 @@ public class Enemy extends DestructibleEntity{ public Vector2 direction = new Vector2(); public float xvelocity, yvelocity; public Entity target; + public StatusEffect effect = StatusEffect.none; public Enemy(int spawn){ diff --git a/core/src/io/anuke/mindustry/input/Input.java b/core/src/io/anuke/mindustry/input/Input.java index 38e8e51d99..c9280139a8 100644 --- a/core/src/io/anuke/mindustry/input/Input.java +++ b/core/src/io/anuke/mindustry/input/Input.java @@ -6,8 +6,8 @@ import com.badlogic.gdx.Input.Buttons; import com.badlogic.gdx.Input.Keys; import io.anuke.mindustry.Inventory; -import io.anuke.mindustry.entities.Weapon; import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.resource.Weapon; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.World; import io.anuke.mindustry.world.blocks.Blocks; diff --git a/core/src/io/anuke/mindustry/io/SaveIO.java b/core/src/io/anuke/mindustry/io/SaveIO.java index 113f8343cd..00fca755fe 100644 --- a/core/src/io/anuke/mindustry/io/SaveIO.java +++ b/core/src/io/anuke/mindustry/io/SaveIO.java @@ -15,9 +15,9 @@ import com.badlogic.gdx.utils.TimeUtils; import com.badlogic.gdx.utils.reflect.ClassReflection; import io.anuke.mindustry.*; -import io.anuke.mindustry.entities.Weapon; import io.anuke.mindustry.entities.enemies.*; import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.resource.Weapon; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.World; diff --git a/core/src/io/anuke/mindustry/resource/Liquid.java b/core/src/io/anuke/mindustry/resource/Liquid.java index 427f169dc9..e90e1c55a4 100644 --- a/core/src/io/anuke/mindustry/resource/Liquid.java +++ b/core/src/io/anuke/mindustry/resource/Liquid.java @@ -3,7 +3,8 @@ package io.anuke.mindustry.resource; import com.badlogic.gdx.graphics.Color; public enum Liquid{ - water(Color.ROYAL); + water(Color.ROYAL), + plasma(Color.CORAL); public final Color color; diff --git a/core/src/io/anuke/mindustry/resource/Recipe.java b/core/src/io/anuke/mindustry/resource/Recipe.java index 2dd559e543..1426aa64d5 100644 --- a/core/src/io/anuke/mindustry/resource/Recipe.java +++ b/core/src/io/anuke/mindustry/resource/Recipe.java @@ -27,9 +27,11 @@ public enum Recipe{ sniperturret(defense, WeaponBlocks.sniperturret, stack(Item.iron, 30), stack(Item.steel, 20)), laserturret(defense, WeaponBlocks.laserturret, stack(Item.steel, 20), stack(Item.titanium, 20)), mortarturret(defense, WeaponBlocks.mortarturret, stack(Item.steel, 40), stack(Item.titanium, 30)), + waveturret(defense, WeaponBlocks.teslaturret, stack(Item.steel, 20), stack(Item.titanium, 20), stack(Item.dirium, 20)), + plasmaturret(defense, WeaponBlocks.plasmaturret, stack(Item.steel, 40), stack(Item.titanium, 30), stack(Item.dirium, 25)), - healturret(defense, WeaponBlocks.repairturret, stack(Item.iron, 45)), - megahealturret(defense, WeaponBlocks.megarepairturret, stack(Item.iron, 30), stack(Item.steel, 40)), + healturret(defense, WeaponBlocks.repairturret, stack(Item.iron, 50)), + megahealturret(defense, WeaponBlocks.megarepairturret, stack(Item.iron, 30), stack(Item.steel, 50)), drill(production, ProductionBlocks.stonedrill, stack(Item.stone, 6)), irondrill(production, ProductionBlocks.irondrill, stack(Item.stone, 40)), diff --git a/core/src/io/anuke/mindustry/entities/Weapon.java b/core/src/io/anuke/mindustry/resource/Weapon.java similarity index 73% rename from core/src/io/anuke/mindustry/entities/Weapon.java rename to core/src/io/anuke/mindustry/resource/Weapon.java index 7c8ec8963f..0926ab3e34 100644 --- a/core/src/io/anuke/mindustry/entities/Weapon.java +++ b/core/src/io/anuke/mindustry/resource/Weapon.java @@ -1,11 +1,12 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.resource; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.entities.Bullet; +import io.anuke.mindustry.entities.BulletType; +import io.anuke.mindustry.entities.Player; import io.anuke.ucore.core.Effects; import io.anuke.ucore.entities.Entity; import io.anuke.ucore.util.Angles; @@ -23,7 +24,7 @@ public enum Weapon{ Effects.effect("shoot3", p.x + vector.x, p.y+vector.y); } }, - trishot(13, BulletType.shot, "Shoots 3 bullets in a spread.", stack(Item.iron, 40)){ + triblaster(13, BulletType.shot, "Shoots 3 bullets in a spread.", stack(Item.iron, 40)){ @Override public void shoot(Player p){ @@ -63,9 +64,36 @@ public enum Weapon{ bullet(p, p.x, p.y, ang + Mathf.range(12)); } + }, + //TODO + railgun(40, BulletType.sniper, "Shoots a stream of fire.", stack(Item.steel, 60), stack(Item.coal, 60)){ + + { + shootsound = "flame2"; + } + + @Override + public void shoot(Player p){ + float ang = mouseAngle(p); + + bullet(p, p.x, p.y, ang); + } + }, + //TODO + mortar(20, BulletType.shell, "Shoots a stream of fire.", stack(Item.steel, 60), stack(Item.coal, 60)){ + + { + shootsound = "flame2"; + } + + @Override + public void shoot(Player p){ + float ang = mouseAngle(p); + bullet(p, p.x, p.y, ang); + } }; - float reload; - BulletType type; + public float reload; + public BulletType type; public String shootsound = "shoot"; public boolean unlocked; public ItemStack[] requirements; diff --git a/core/src/io/anuke/mindustry/ui/UpgradeDialog.java b/core/src/io/anuke/mindustry/ui/UpgradeDialog.java index 817eba2033..d30b9628f2 100644 --- a/core/src/io/anuke/mindustry/ui/UpgradeDialog.java +++ b/core/src/io/anuke/mindustry/ui/UpgradeDialog.java @@ -7,8 +7,8 @@ import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.GameState; import io.anuke.mindustry.GameState.State; import io.anuke.mindustry.Inventory; -import io.anuke.mindustry.entities.Weapon; import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.resource.Weapon; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Effects; import io.anuke.ucore.function.Listenable; @@ -45,8 +45,8 @@ public class UpgradeDialog extends Dialog{ for(Weapon weapon : Weapon.values()){ TextButton button = new TextButton(weapon.name()); - Image img = new Image(Draw.region("weapon-"+weapon.name())); - button.add(img).size(8*5); + Image img = new Image(Draw.region(weapon.name())); + button.add(img).size(14*4); button.getCells().reverse(); button.row(); button.pack(); diff --git a/core/src/io/anuke/mindustry/world/Generator.java b/core/src/io/anuke/mindustry/world/Generator.java index d4fe296bd0..6c6189141d 100644 --- a/core/src/io/anuke/mindustry/world/Generator.java +++ b/core/src/io/anuke/mindustry/world/Generator.java @@ -58,7 +58,7 @@ public class Generator{ floor = Blocks.iron; } - if(Noise.nnoise(x, y, 6, 1) > 0.242){ + if(Noise.nnoise(x, y, 6, 1) > 0.24){ floor = Blocks.coal; } diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index 97c8933363..40603f45ce 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -2,7 +2,9 @@ package io.anuke.mindustry.world.blocks; import com.badlogic.gdx.graphics.Color; +import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.BulletType; +import io.anuke.mindustry.entities.effect.TeslaOrb; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; @@ -10,6 +12,7 @@ import io.anuke.mindustry.world.blocks.types.LaserTurret; import io.anuke.mindustry.world.blocks.types.RepairTurret; import io.anuke.mindustry.world.blocks.types.Turret; import io.anuke.ucore.core.Timers; +import io.anuke.ucore.util.Angles; import io.anuke.ucore.util.Mathf; public class WeaponBlocks{ @@ -130,6 +133,40 @@ public class WeaponBlocks{ } }, + //TODO + teslaturret = new Turret("waveturret"){ + { + formalName = "tesla turret"; + range = 70; + reload = 20f; + bullet = BulletType.shell; + ammo = Item.stone; + health = 1100; + } + + @Override + public void shoot(Tile tile){ + TurretEntity entity = tile.entity(); + Angles.translation(entity.rotation, 4); + + new TeslaOrb(tile.worldx() + Angles.x(), tile.worldy() + Angles.y(), + 70, (int)(10*Vars.multiplier)).add(); + } + }, + + //TODO + plasmaturret = new Turret("plasmaturret"){ + { + inaccuracy = 7f; + formalName = "plasma turret"; + range = 60f; + reload = 3f; + bullet = BulletType.plasmaflame; + ammo = Item.stone; + health = 180; + } + }, + repairturret = new RepairTurret("repairturret"){ { formalName = "heal turret"; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/Turret.java index 127c5c0a3a..dcfa2ccb48 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/Turret.java @@ -27,6 +27,7 @@ public class Turret extends Block{ protected float range = 50f; protected float reload = 10f; + protected float inaccuracy = 0f; protected String shootsound = "shoot"; protected BulletType bullet = BulletType.iron; protected Item ammo; @@ -131,8 +132,10 @@ public class Turret extends Block{ protected void shoot(Tile tile){ TurretEntity entity = tile.entity(); - vector.set(0, 4).setAngle(entity.rotation); - Bullet out = new Bullet(bullet, tile.entity, tile.worldx()+vector.x, tile.worldy()+vector.y, entity.rotation).add(); + float inac = Mathf.range(inaccuracy); + + vector.set(0, 4).setAngle(entity.rotation + inac); + Bullet out = new Bullet(bullet, tile.entity, tile.worldx()+vector.x, tile.worldy()+vector.y, entity.rotation + inac).add(); out.damage = (int)(bullet.damage*Vars.multiplier); } diff --git a/desktop/gifexport/recording1506016206.gif b/desktop/gifexport/recording1506016206.gif new file mode 100644 index 0000000000..e7160191f2 Binary files /dev/null and b/desktop/gifexport/recording1506016206.gif differ diff --git a/desktop/gifexport/recording1506016233.gif b/desktop/gifexport/recording1506016233.gif new file mode 100644 index 0000000000..49a820c926 Binary files /dev/null and b/desktop/gifexport/recording1506016233.gif differ diff --git a/desktop/gifexport/recording1506016803.gif b/desktop/gifexport/recording1506016803.gif new file mode 100644 index 0000000000..0bcbc31870 Binary files /dev/null and b/desktop/gifexport/recording1506016803.gif differ diff --git a/desktop/gifexport/recording1506016819.gif b/desktop/gifexport/recording1506016819.gif new file mode 100644 index 0000000000..7a0a728673 Binary files /dev/null and b/desktop/gifexport/recording1506016819.gif differ diff --git a/desktop/gifexport/recording1506016935.gif b/desktop/gifexport/recording1506016935.gif new file mode 100644 index 0000000000..54206330ed Binary files /dev/null and b/desktop/gifexport/recording1506016935.gif differ diff --git a/desktop/gifexport/recording1506017144.gif b/desktop/gifexport/recording1506017144.gif new file mode 100644 index 0000000000..42747bd2ff Binary files /dev/null and b/desktop/gifexport/recording1506017144.gif differ