From 42909abf531bf63078934f0bd3be77252e045ac9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 26 Dec 2017 17:58:20 -0500 Subject: [PATCH] Converted almost everything to an I18nBundle --- .../sprites/ui/icons/icon-arrow-down.png | Bin 168 -> 167 bytes .../sprites/ui/icons/icon-arrow-up.png | Bin 201 -> 199 bytes core/assets/mindustry-maps/maps.json | 1 + core/assets/mindustry-saves/0.mins | Bin 0 -> 10731 bytes core/assets/shaders/shield.fragment | 18 +- core/assets/sprites/sprites.atlas | 368 +++++++++--------- core/assets/sprites/sprites.png | Bin 82815 -> 82446 bytes core/src/io/anuke/mindustry/Mindustry.java | 41 +- core/src/io/anuke/mindustry/Vars.java | 2 - core/src/io/anuke/mindustry/core/Control.java | 9 + .../src/io/anuke/mindustry/core/Tutorial.java | 65 +--- core/src/io/anuke/mindustry/core/UI.java | 66 ++-- .../src/io/anuke/mindustry/io/BundleUtil.java | 79 ++++ .../io/anuke/mindustry/resource/Weapon.java | 19 +- .../io/anuke/mindustry/ui/FileChooser.java | 6 +- .../io/anuke/mindustry/ui/LevelDialog.java | 13 +- .../src/io/anuke/mindustry/ui/LoadDialog.java | 15 +- .../src/io/anuke/mindustry/ui/MenuDialog.java | 22 +- .../mindustry/ui/MindustryKeybindDialog.java | 2 +- .../mindustry/ui/MindustrySettingsDialog.java | 12 +- .../src/io/anuke/mindustry/ui/SaveDialog.java | 9 +- .../io/anuke/mindustry/ui/UpgradeDialog.java | 6 +- .../ui/fragments/BlocksFragment.java | 52 ++- .../mindustry/ui/fragments/HudFragment.java | 18 +- .../mindustry/ui/fragments/MenuFragment.java | 12 +- .../ui/fragments/PlacementFragment.java | 4 +- .../ui/fragments/WeaponFragment.java | 6 +- core/src/io/anuke/mindustry/world/Block.java | 11 +- .../mindustry/world/blocks/DefenseBlocks.java | 36 +- .../world/blocks/DistributionBlocks.java | 55 +-- .../world/blocks/ProductionBlocks.java | 87 +---- .../mindustry/world/blocks/WeaponBlocks.java | 34 -- .../world/blocks/types/defense/CoreBlock.java | 34 ++ .../blocks/types/defense/PowerTurret.java | 5 - .../blocks/types/defense/RepairTurret.java | 5 - .../world/blocks/types/defense/Turret.java | 6 - 36 files changed, 525 insertions(+), 593 deletions(-) create mode 100644 core/assets/mindustry-maps/maps.json create mode 100644 core/assets/mindustry-saves/0.mins create mode 100644 core/src/io/anuke/mindustry/io/BundleUtil.java create mode 100644 core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java diff --git a/core/assets-raw/sprites/ui/icons/icon-arrow-down.png b/core/assets-raw/sprites/ui/icons/icon-arrow-down.png index e3e941b082361cb31cad125021c3581ed735168a..8c6a7fc3b95c0c37aa8357ea01f92940ae4f48a8 100644 GIT binary patch delta 90 zcmZ3%xSVl9NU)H;vWp{I4Fdy%iKmNWh{WZsXAQX+6hsbRIP&}cPCY9Q`M?Wj`o-eZ w9VX>WyyYi;`|8(saixu-^H%66@4L=8?~Mq92`krW1_lNOPgg&ebxsLQ0Lob*i2wiq delta 91 zcmZ3^xPoy)NQi)v+5BxDTNoG^Og&v3LnJOICrB6^IC0>>fe-)x|NmbhYG`C+B$%xv x>>2iW^Sp@@CknbMnjJN8jW}4Zpe3> delta 124 zcmX@kc#?5KNU4C5LD|)}jSLJ7VV*9IArhB+CtT!ZP~>ptF4RAsa7?=S=z;l{7bLv< z(Rz)7$zaz|a%@=E{ g#$}u4$(b@7c_$MWGJ|730|Nttr>mdKI;Vst09`XPO8@`> diff --git a/core/assets/mindustry-maps/maps.json b/core/assets/mindustry-maps/maps.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/core/assets/mindustry-maps/maps.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/core/assets/mindustry-saves/0.mins b/core/assets/mindustry-saves/0.mins new file mode 100644 index 0000000000000000000000000000000000000000..090f2aa2c4a311edc610f27b4359c8bef1348a8e GIT binary patch literal 10731 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 0.1){ - if(mod(coords.x + coords.y + sin(coords.x / 5.0) * 3.0 + sin(coords.y / 5.0) * 3.0 + u_time / 4.0, 10.0) < 2.0){ + if(mod(coords.x / u_dp + coords.y / u_dp + sin(round(coords.x / u_dp) / 5.0) * 3.0 + sin(round(coords.y / u_dp) / 5.0) * 3.0 + u_time / 4.0, 10.0) < 2.0){ color *= 1.65; } diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index d43a165017..25f37e416b 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -48,28 +48,28 @@ blocks/blackstone2 index: -1 blocks/blackstone3 rotate: false - xy: 736, 253 + xy: 748, 254 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock1 rotate: false - xy: 736, 243 + xy: 575, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock2 rotate: false - xy: 748, 266 + xy: 575, 195 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock3 rotate: false - xy: 740, 233 + xy: 533, 125 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -83,7 +83,7 @@ blocks/blackstoneedge index: -1 blocks/block rotate: false - xy: 575, 195 + xy: 533, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -118,112 +118,112 @@ blocks/chainturret-icon index: -1 blocks/coal1 rotate: false - xy: 533, 115 + xy: 543, 117 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal2 rotate: false - xy: 533, 105 + xy: 543, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal3 rotate: false - xy: 543, 127 + xy: 813, 449 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 543, 117 + xy: 813, 439 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator rotate: false - xy: 543, 107 + xy: 813, 429 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator-top rotate: false - xy: 813, 449 + xy: 813, 419 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalpurifier rotate: false - xy: 813, 439 + xy: 333, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/combustiongenerator rotate: false - xy: 813, 429 + xy: 343, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/compositewall rotate: false - xy: 813, 419 + xy: 353, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 333, 79 + xy: 363, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 343, 79 + xy: 373, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 353, 79 + xy: 383, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 363, 79 + xy: 393, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 373, 79 + xy: 403, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 383, 79 + xy: 413, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyortunnel rotate: false - xy: 393, 83 + xy: 423, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -237,42 +237,42 @@ blocks/core index: -1 blocks/cross rotate: false - xy: 403, 83 + xy: 433, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 413, 83 + xy: 443, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 423, 83 + xy: 453, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 433, 83 + xy: 463, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 443, 83 + xy: 473, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 453, 83 + xy: 483, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -286,7 +286,7 @@ blocks/dirtedge index: -1 blocks/door rotate: false - xy: 463, 83 + xy: 575, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -300,7 +300,7 @@ blocks/door-large index: -1 blocks/door-large-icon rotate: false - xy: 473, 83 + xy: 393, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -314,7 +314,7 @@ blocks/door-large-open index: -1 blocks/door-open rotate: false - xy: 483, 83 + xy: 403, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -328,7 +328,7 @@ blocks/doubleturret index: -1 blocks/duriumwall rotate: false - xy: 740, 223 + xy: 413, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -342,14 +342,14 @@ blocks/duriumwall-large index: -1 blocks/duriumwall-large-icon rotate: false - xy: 575, 185 + xy: 423, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/enemyspawn rotate: false - xy: 393, 73 + xy: 433, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -363,42 +363,42 @@ blocks/flameturret index: -1 blocks/fluxpump rotate: false - xy: 413, 73 + xy: 453, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass1 rotate: false - xy: 423, 73 + xy: 463, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 433, 73 + xy: 473, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 443, 73 + xy: 483, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock1 rotate: false - xy: 453, 73 + xy: 598, 222 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 463, 73 + xy: 608, 222 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -412,21 +412,21 @@ blocks/grassedge index: -1 blocks/ice1 rotate: false - xy: 473, 73 + xy: 618, 222 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ice2 rotate: false - xy: 483, 73 + xy: 628, 222 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ice3 rotate: false - xy: 598, 222 + xy: 881, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -440,98 +440,98 @@ blocks/iceedge index: -1 blocks/icerock1 rotate: false - xy: 608, 222 + xy: 891, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerock2 rotate: false - xy: 618, 222 + xy: 901, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerockshadow1 rotate: false - xy: 628, 222 + xy: 911, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow1 rotate: false - xy: 628, 222 + xy: 911, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerockshadow2 rotate: false - xy: 881, 485 + xy: 921, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow2 rotate: false - xy: 881, 485 + xy: 921, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron1 rotate: false - xy: 961, 485 + xy: 1001, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 971, 485 + xy: 748, 244 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 981, 485 + xy: 513, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 991, 485 + xy: 523, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 1001, 485 + xy: 533, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 748, 256 + xy: 543, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 441, 93 + xy: 465, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/lava rotate: false - xy: 746, 246 + xy: 801, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -545,63 +545,63 @@ blocks/lavaedge index: -1 blocks/lavasmelter rotate: false - xy: 750, 233 + xy: 800, 403 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquiditemjunction rotate: false - xy: 750, 223 + xy: 811, 409 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidjunction rotate: false - xy: 513, 97 + xy: 810, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidrouter rotate: false - xy: 523, 97 + xy: 1011, 479 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 453, 93 + xy: 477, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 465, 93 + xy: 1012, 489 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 477, 93 + xy: 551, 203 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 543, 97 + xy: 112, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 543, 97 + xy: 112, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -622,7 +622,7 @@ blocks/nuclearreactor-center index: -1 blocks/nuclearreactor-icon rotate: false - xy: 800, 403 + xy: 132, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -643,7 +643,7 @@ blocks/nuclearreactor-small index: -1 blocks/oil rotate: false - xy: 811, 409 + xy: 142, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -657,182 +657,182 @@ blocks/oiledge index: -1 blocks/oilrefinery rotate: false - xy: 810, 399 + xy: 152, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 1011, 479 + xy: 162, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/plasmaturret rotate: false - xy: 1012, 489 + xy: 551, 191 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/playerspawn rotate: false - xy: 656, 220 + xy: 172, 80 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerbooster rotate: false - xy: 666, 220 + xy: 95, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyor rotate: false - xy: 762, 321 + xy: 95, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyormove rotate: false - xy: 551, 141 + xy: 105, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaser rotate: false - xy: 553, 131 + xy: 95, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlasercorner rotate: false - xy: 553, 121 + xy: 105, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaserrouter rotate: false - xy: 553, 111 + xy: 115, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduit rotate: false - xy: 553, 101 + xy: 95, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduitbottom rotate: false - xy: 553, 91 + xy: 105, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduittop rotate: false - xy: 543, 87 + xy: 115, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pump rotate: false - xy: 553, 81 + xy: 125, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/repairturret rotate: false - xy: 551, 203 + xy: 556, 215 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/rock1 rotate: false - xy: 582, 219 + xy: 105, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2 rotate: false - xy: 585, 209 + xy: 115, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/router rotate: false - xy: 585, 199 + xy: 125, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator rotate: false - xy: 585, 189 + xy: 135, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator-top rotate: false - xy: 595, 212 + xy: 95, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand1 rotate: false - xy: 595, 202 + xy: 105, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand2 rotate: false - xy: 605, 212 + xy: 115, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand3 rotate: false - xy: 595, 192 + xy: 125, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock1 rotate: false - xy: 605, 202 + xy: 135, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock2 rotate: false - xy: 615, 212 + xy: 145, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock3 rotate: false - xy: 605, 192 + xy: 95, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -846,91 +846,91 @@ blocks/sandedge index: -1 blocks/shadow rotate: false - xy: 551, 191 + xy: 568, 215 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shieldgenerator rotate: false - xy: 625, 212 + xy: 115, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shotgunturret rotate: false - xy: 556, 215 + xy: 563, 203 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shrub rotate: false - xy: 625, 192 + xy: 145, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shrubshadow rotate: false - xy: 585, 179 + xy: 155, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter rotate: false - xy: 595, 182 + xy: 105, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sniperturret rotate: false - xy: 568, 215 + xy: 563, 191 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/snow1 rotate: false - xy: 605, 182 + xy: 115, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow2 rotate: false - xy: 615, 182 + xy: 125, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow3 rotate: false - xy: 625, 182 + xy: 135, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock1 rotate: false - xy: 635, 212 + xy: 145, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock2 rotate: false - xy: 635, 202 + xy: 155, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock3 rotate: false - xy: 635, 192 + xy: 115, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -944,28 +944,28 @@ blocks/snowedge index: -1 blocks/sorter rotate: false - xy: 635, 182 + xy: 125, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyor rotate: false - xy: 595, 172 + xy: 135, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyormove rotate: false - xy: 605, 172 + xy: 145, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall rotate: false - xy: 615, 172 + xy: 155, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -979,56 +979,56 @@ blocks/steelwall-large index: -1 blocks/steelwall-large-icon rotate: false - xy: 625, 172 + xy: 125, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone1 rotate: false - xy: 635, 172 + xy: 135, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 645, 218 + xy: 145, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 645, 208 + xy: 155, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock1 rotate: false - xy: 645, 198 + xy: 135, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 645, 188 + xy: 145, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 645, 178 + xy: 155, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 655, 210 + xy: 145, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1042,35 +1042,35 @@ blocks/stoneedge index: -1 blocks/stoneformer rotate: false - xy: 655, 200 + xy: 155, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonewall rotate: false - xy: 665, 210 + xy: 155, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter rotate: false - xy: 655, 190 + xy: 95, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter-top rotate: false - xy: 665, 200 + xy: 105, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/thermalgenerator rotate: false - xy: 655, 180 + xy: 115, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1084,56 +1084,56 @@ blocks/titancannon index: -1 blocks/titancannon-icon rotate: false - xy: 563, 203 + xy: 736, 263 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/titanium1 rotate: false - xy: 665, 190 + xy: 125, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 665, 180 + xy: 135, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 645, 168 + xy: 145, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 655, 170 + xy: 155, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 665, 170 + xy: 165, 70 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 833, 477 + xy: 165, 60 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 843, 477 + xy: 165, 50 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1147,49 +1147,49 @@ blocks/titaniumwall-large index: -1 blocks/titaniumwall-large-icon rotate: false - xy: 853, 477 + xy: 165, 40 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/turret rotate: false - xy: 563, 191 + xy: 736, 251 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/uranium1 rotate: false - xy: 760, 236 + xy: 165, 10 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium2 rotate: false - xy: 760, 226 + xy: 175, 70 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium3 rotate: false - xy: 760, 216 + xy: 175, 60 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uraniumdrill rotate: false - xy: 821, 409 + xy: 175, 50 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/water rotate: false - xy: 820, 399 + xy: 175, 40 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1203,14 +1203,14 @@ blocks/wateredge index: -1 blocks/waveturret rotate: false - xy: 736, 263 + xy: 748, 264 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 bullet rotate: false - xy: 533, 125 + xy: 543, 127 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1483,49 +1483,49 @@ enemyarrow index: -1 icon-coal rotate: false - xy: 891, 485 + xy: 931, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 901, 485 + xy: 941, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 911, 485 + xy: 951, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 921, 485 + xy: 961, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 931, 485 + xy: 971, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 941, 485 + xy: 981, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-uranium rotate: false - xy: 951, 485 + xy: 991, 485 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1560,28 +1560,28 @@ mechs/mech-standard index: -1 shell rotate: false - xy: 615, 202 + xy: 105, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot rotate: false - xy: 615, 192 + xy: 125, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot-long rotate: false - xy: 625, 202 + xy: 135, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanshell rotate: false - xy: 863, 477 + xy: 165, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1706,20 +1706,34 @@ ui/icons/icon-arrow orig: 14, 14 offset: 0, 0 index: -1 -ui/icons/icon-arrow-left +ui/icons/icon-arrow-down rotate: false xy: 869, 487 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icons/icon-arrow-right +ui/icons/icon-arrow-left rotate: false xy: 805, 459 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +ui/icons/icon-arrow-right + rotate: false + xy: 801, 447 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +ui/icons/icon-arrow-up + rotate: false + xy: 801, 435 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 ui/icons/icon-back rotate: false xy: 779, 402 @@ -1764,21 +1778,21 @@ ui/icons/icon-close-over index: -1 ui/icons/icon-crafting rotate: false - xy: 801, 447 + xy: 801, 423 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-cursor rotate: false - xy: 801, 435 + xy: 273, 85 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-defense rotate: false - xy: 801, 423 + xy: 285, 85 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1792,7 +1806,7 @@ ui/icons/icon-discord index: -1 ui/icons/icon-distribution rotate: false - xy: 273, 85 + xy: 297, 85 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1848,14 +1862,14 @@ ui/icons/icon-grid index: -1 ui/icons/icon-hold rotate: false - xy: 285, 85 + xy: 309, 85 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-holdDelete rotate: false - xy: 297, 85 + xy: 321, 85 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1869,7 +1883,7 @@ ui/icons/icon-home index: -1 ui/icons/icon-info rotate: false - xy: 309, 85 + xy: 333, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1911,21 +1925,21 @@ ui/icons/icon-loading index: -1 ui/icons/icon-menu rotate: false - xy: 321, 85 + xy: 345, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-none rotate: false - xy: 333, 89 + xy: 357, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-pause rotate: false - xy: 345, 89 + xy: 369, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1946,7 +1960,7 @@ ui/icons/icon-pick index: -1 ui/icons/icon-play rotate: false - xy: 357, 89 + xy: 381, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1960,14 +1974,14 @@ ui/icons/icon-play-2 index: -1 ui/icons/icon-power rotate: false - xy: 369, 89 + xy: 393, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-production rotate: false - xy: 381, 89 + xy: 405, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2044,7 +2058,7 @@ ui/icons/icon-save-map index: -1 ui/icons/icon-settings rotate: false - xy: 393, 93 + xy: 417, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2065,14 +2079,14 @@ ui/icons/icon-tools index: -1 ui/icons/icon-touch rotate: false - xy: 405, 93 + xy: 429, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-touchDelete rotate: false - xy: 417, 93 + xy: 441, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2093,7 +2107,7 @@ ui/icons/icon-undo index: -1 ui/icons/icon-weapon rotate: false - xy: 429, 93 + xy: 453, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2205,7 +2219,7 @@ ui/slider-knob-over index: -1 ui/slider-vertical rotate: false - xy: 746, 243 + xy: 92, 91 size: 8, 1 orig: 8, 1 offset: 0, 0 @@ -2314,42 +2328,42 @@ ui/window-empty index: -1 weapons/blaster rotate: false - xy: 575, 205 + xy: 533, 115 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/flamer rotate: false - xy: 403, 73 + xy: 443, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 533, 95 + xy: 102, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 801, 413 + xy: 122, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 819, 463 + xy: 95, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 756, 246 + xy: 165, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 47f8dad5efd9c14adcae391c7815d8ca8b08c6c3..fd18eaa9e643a2153c97bb6f8b3db0405a9608d6 100644 GIT binary patch delta 80677 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

GrdhWuXa0U0S)T1-#+1`` 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 delta 81046 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

  • ;U0w$$pK%$w&P+D$(h9lBHweEz?uc*FmdYfU9u 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 diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index 91722e269e..fe5553e141 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -1,14 +1,21 @@ package io.anuke.mindustry; import java.util.Date; +import java.util.Locale; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.I18NBundle; import io.anuke.mindustry.core.*; import io.anuke.mindustry.core.GameState.State; +import io.anuke.mindustry.io.BundleUtil; import io.anuke.mindustry.io.PlatformFunction; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.*; +import io.anuke.ucore.UCore; +import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; import io.anuke.ucore.function.Callable; @@ -26,27 +33,41 @@ public class Mindustry extends ModuleCore { @Override public void addDialog(TextField field){} }; - //always initialize blocks in this order, otherwise there are ID errors - public Block[] blockClasses = { - Blocks.air, - DefenseBlocks.compositewall, - DistributionBlocks.conduit, - ProductionBlocks.coaldrill, - WeaponBlocks.chainturret, - SpecialBlocks.enemySpawn - }; - @Override public void init(){ + loadBundle(); + module(Vars.world = new World()); module(Vars.control = new Control()); module(Vars.renderer = new Renderer()); module(Vars.ui = new UI()); } + + public void loadBundle(){ + I18NBundle.setExceptionOnMissingKey(false); + + FileHandle handle = Gdx.files.internal("bundles/bundle"); + + Locale locale = Locale.getDefault(); + Core.bundle = I18NBundle.createBundle(handle, locale); + + //always initialize blocks in this order, otherwise there are ID errors + Block[] blockClasses = { + Blocks.air, + DefenseBlocks.compositewall, + DistributionBlocks.conduit, + ProductionBlocks.coaldrill, + WeaponBlocks.chainturret, + SpecialBlocks.enemySpawn + }; + + UCore.log("Block classes: " + blockClasses.length); + } @Override public void postInit(){ Vars.control.reset(); + BundleUtil.buildBundle(Gdx.files.absolute("/home/anuke/bundle_en_US.properties")); } @Override diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index b1fe6f1961..673eb697a5 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -70,8 +70,6 @@ public class Vars{ public static final int tilesize = 8; - public static I18NBundle bundle; - public static Control control; public static Renderer renderer; public static UI ui; diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index acbc16a3c7..3388ad12a3 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.core; import static io.anuke.mindustry.Vars.*; import java.util.Arrays; +import java.util.Locale; import com.badlogic.gdx.Application.ApplicationType; import com.badlogic.gdx.Gdx; @@ -12,7 +13,9 @@ import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.controllers.Controller; import com.badlogic.gdx.controllers.ControllerAdapter; import com.badlogic.gdx.controllers.Controllers; +import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.I18NBundle; import com.badlogic.gdx.utils.reflect.ClassReflection; import io.anuke.mindustry.Mindustry; @@ -27,6 +30,7 @@ import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.input.AndroidInput; import io.anuke.mindustry.input.DesktopInput; import io.anuke.mindustry.input.InputHandler; +import io.anuke.mindustry.io.BundleUtil; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.resource.Weapon; @@ -80,6 +84,11 @@ public class Control extends Module{ if(Mindustry.args.contains("-debug", false)) Vars.debug = true; + FileHandle handle = Gdx.files.internal("bundles/bundle"); + + Locale locale = Locale.getDefault(); + Core.bundle = I18NBundle.createBundle(handle, locale); + Inputs.useControllers(false); log("Total blocks loaded: " + Block.getAllBlocks().size); diff --git a/core/src/io/anuke/mindustry/core/Tutorial.java b/core/src/io/anuke/mindustry/core/Tutorial.java index 314df42489..e3fd04eecf 100644 --- a/core/src/io/anuke/mindustry/core/Tutorial.java +++ b/core/src/io/anuke/mindustry/core/Tutorial.java @@ -18,6 +18,7 @@ import io.anuke.ucore.scene.builders.table; import io.anuke.ucore.scene.ui.ImageButton; import io.anuke.ucore.scene.ui.Label; import io.anuke.ucore.scene.ui.TextButton; +import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Tmp; @@ -171,35 +172,30 @@ public class Tutorial{ } } - enum Stage{ + public enum Stage{ intro{ { - text = "[yellow]Welcome to the tutorial.[] To begin, press 'next'."; } }, moveDesktop{ { desktopOnly = true; - text = "To move, use the [orange][[WASD][] keys. Hold [orange]shift[] to boost. Hold [orange]CTRL[] while using the [orange]scrollwheel[] to zoom in or out."; } }, shoot{ { desktopOnly = true; - text = "Use your mouse to aim, hold [orange]left mouse button[] to shoot. Try practicing on the [yellow]target[]."; } }, moveAndroid{ { androidOnly = true; - text = "To pan the view, drag one finger across the screen. Pinch and drag to zoom in or out."; } }, placeSelect{ { canBack = false; canPlace = true; - text = "Try selecting a [yellow]conveyor[] from the block menu in the bottom right."; } void onSwitch(){ @@ -216,7 +212,6 @@ public class Tutorial{ blockPlaceX = 0; blockPlaceY = -2; targetBlock = DistributionBlocks.conveyor; - text = "Use the [orange][[scrollwheel][] to rotate the conveyor to face [orange]forwards[], then place it in the [yellow]marked location[] using the [orange][[left mouse button][]."; } }, placeConveyorAndroid{ @@ -229,16 +224,12 @@ public class Tutorial{ blockPlaceX = 0; blockPlaceY = -2; targetBlock = DistributionBlocks.conveyor; - text = "Use the [orange][[rotate button][] to rotate the conveyor to face [orange]forwards[], drag it into position with one finger, then place it in the [yellow]marked location[] using the [orange][[checkmark][]."; } }, placeConveyorAndroidInfo{ { androidOnly = true; canBack = false; - text = "Alternatively, you can press the crosshair icon in the bottom left to switch to [orange][[touch mode][], and " - + "place blocks by tapping on the screen. In touch mode, blocks can be rotated with the arrow at the bottom left. " - + "Press [yellow]next[] to try it out."; } void onSwitch(){ @@ -254,7 +245,6 @@ public class Tutorial{ blockPlaceX = 0; blockPlaceY = -3; targetBlock = ProductionBlocks.stonedrill; - text = "Now, select and place a [yellow]stone drill[] at the marked location."; } void onSwitch(){ @@ -264,27 +254,23 @@ public class Tutorial{ blockInfo{ { canBack = true; - text = "If you want to learn more about a block, you can tap the [orange]question mark[] in the top right to read its description."; } }, deselectDesktop{ { desktopOnly = true; canBack = false; - text = "You can de-select a block using the [orange][[right mouse button][]."; } }, deselectAndroid{ { androidOnly = true; canBack = false; - text = "You can deselect a block by pressing the [orange]X[] button."; } }, drillPlaced{ { canBack = false; - text = "The drill will now produce [yellow]stone,[] output it onto the conveyor, then move it into the [yellow]core[]."; } void onSwitch(){ @@ -293,18 +279,15 @@ public class Tutorial{ }, drillInfo{ { - text = "Different ores need different drills. Stone requires stone drills, iron requires iron drills, etc."; } }, drillPlaced2{ { - text = "Moving items into the core puts them in your [yellow]item inventory[], in the top left. Placing blocks uses items from your inventory."; } }, moreDrills{ { canBack = false; - text = "You can link many drills and conveyors up together, like so."; } void onSwitch(){ @@ -327,23 +310,20 @@ public class Tutorial{ targetBlock = Blocks.air; blockPlaceX = 2; blockPlaceY = -2; - text = !Vars.android ? - "You can delete blocks by clicking the [orange]right mouse button[] on the block you want to delete. Try deleting this conveyor.": - "You can delete blocks by [orange]selecting the crosshair[] in the [orange]break mode menu[] in the bottom left and tapping a block. Try deleting this conveyor."; + desktopOnly = true; } }, - /* - deleteBlock2{ + deleteBlockAndroid{ { canBack = false; canForward = false; showBlock = true; targetBlock = Blocks.air; - blockPlaceX = -2; + blockPlaceX = 2; blockPlaceY = -2; - text = "Try deleting this other conveyor too."; + androidOnly = true; } - },*/ + }, placeTurret{ { canBack = false; @@ -353,7 +333,6 @@ public class Tutorial{ targetBlock = WeaponBlocks.turret; blockPlaceX = 2; blockPlaceY = 2; - text = "Now, select and place a [yellow]turret[] at the [yellow]marked location[]."; } void onSwitch(){ @@ -363,8 +342,6 @@ public class Tutorial{ placedTurretAmmo{ { canBack = false; - text = "This turret will now accept [yellow]ammo[] from the conveyor. You can see how much ammo it has by " + - (Vars.android ? "tapping it" : "hovering over it") + " and checking the [green]green bar[]."; } void onSwitch(){ @@ -377,38 +354,30 @@ public class Tutorial{ turretExplanation{ { canBack = false; - text = "Turrets will automatically shoot at the nearest enemy in range, as long as they have enough ammo."; } }, waves{ { - text = "Every [yellow]" + (int)(Vars.wavespace/60) + "[] seconds, a wave of [coral]enemies[] will spawn in specific locations and attempt to destroy the core."; } }, coreDestruction{ { - text = "Your objective is to [yellow]defend the core[]. If the core is destroyed, you [coral]lose the game[]."; } }, pausingDesktop{ { desktopOnly = true; - text = "If you ever need to take a break, press the [orange]pause button[] in the top left or [orange]space[] " - + "to pause the game. You can still select and place blocks while paused, but cannot move or shoot."; } }, pausingAndroid{ { androidOnly = true; - text = "If you ever need to take a break, press the [orange]pause button[] in the top left" - + " to pause the game. You can still place select and place blocks while paused."; } }, purchaseWeapons{ { desktopOnly = true; canBack = false; - text = "You can purchase new [yellow]weapons[] for your mech by opening the upgrade menu in the bottom left."; } void onSwitch(){ @@ -420,7 +389,6 @@ public class Tutorial{ { canBack = false; desktopOnly = true; - text = "Switch weapons by either clicking its icon in the bottom left, or using numbers [orange][[1-9][]."; } void onSwitch(){ @@ -435,7 +403,6 @@ public class Tutorial{ { canBack = false; canForward = false; - text = "Here comes a wave now. Destroy them."; } void update(Tutorial t){ @@ -453,7 +420,6 @@ public class Tutorial{ pumpDesc{ { canBack = false; - text = "In later waves, you might need to use [yellow]pumps[] to distribute liquids for generators or extractors."; } }, pumpPlace{ @@ -465,7 +431,6 @@ public class Tutorial{ targetBlock = ProductionBlocks.pump; blockPlaceX = 6; blockPlaceY = -2; - text = "Pumps work similarly to drills, except that they produce liquids instead of items. Try placing a pump on the [yellow]designated oil[]."; } void onSwitch(){ @@ -484,7 +449,6 @@ public class Tutorial{ blockPlaceX = 5; blockPlaceY = -2; blockRotation = 2; - text = "Now place a [orange]conduit[] leading away from the pump."; } void onSwitch(){ @@ -502,7 +466,6 @@ public class Tutorial{ blockPlaceX = 4; blockPlaceY = -2; blockRotation = 1; - text = "And a few more..."; } void onSwitch(){ @@ -519,7 +482,6 @@ public class Tutorial{ blockPlaceX = 4; blockPlaceY = -1; blockRotation = 1; - text = "And a few more..."; } void onSwitch(){ @@ -535,7 +497,6 @@ public class Tutorial{ targetBlock = ProductionBlocks.combustiongenerator; blockPlaceX = 4; blockPlaceY = 0; - text = "Now, place a [orange]combustion generator[] block at the end of the conduit."; } void onSwitch(){ @@ -548,7 +509,6 @@ public class Tutorial{ generatorExplain{ { canBack = false; - text = "This generator will now create [yellow]power[] from the oil."; } }, lasers{ @@ -557,7 +517,6 @@ public class Tutorial{ canForward = false; showBlock = true; canPlace = true; - text = "Power is distributed using [yellow]power lasers[]. Rotate and place one here."; blockPlaceX = 4; blockPlaceY = 4; blockRotation = 2; @@ -571,14 +530,11 @@ public class Tutorial{ laserExplain{ { canBack = false; - text = "The generator will now move power into the laser block. An [yellow]opaque[] beam means that it is currently transmitting power, " - + "and a [yellow]transparent[] beam means it is not."; } }, laserMore{ { canBack = false; - text = "You can check how much power a block has by hovering over it and checking the [yellow]yellow bar[] at the top."; } }, healingTurret{ @@ -591,7 +547,6 @@ public class Tutorial{ blockPlaceX = 1; blockPlaceY = 4; targetBlock = DefenseBlocks.repairturret; - text = "This laser can be used to power a [lime]repair turret[]. Place one here."; } void onSwitch(){ @@ -601,7 +556,6 @@ public class Tutorial{ healingTurretExplain{ { canBack = false; - text = "As long as it has power, this turret will [lime]repair nearby blocks.[] When playing, make sure you get one in your base as quickly as possible!"; } }, smeltery{ @@ -614,7 +568,6 @@ public class Tutorial{ blockPlaceX = 0; blockPlaceY = -6; targetBlock = ProductionBlocks.smelter; - text = "Many blocks require [orange]steel[] to make, which requires a [orange]smelter[] to craft. Place one here."; } void onSwitch(){ @@ -627,7 +580,6 @@ public class Tutorial{ smelterySetup{ { canBack = false; - text = "This smelter will now produce [orange]steel[] from the input coal and iron."; } void onSwitch(){ @@ -643,11 +595,10 @@ public class Tutorial{ }, end{ { - text = "And that concludes the tutorial! Good luck!"; canBack = false; } }; - String text = "no text"; + public final String text = Bundles.getNotNull("tutorial."+name()+".text"); boolean androidOnly; boolean desktopOnly; diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index 287fe3ddf4..fef4f27cf3 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -43,6 +43,7 @@ import io.anuke.ucore.scene.ui.*; import io.anuke.ucore.scene.ui.Window.WindowStyle; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; +import io.anuke.ucore.util.Bundles; public class UI extends SceneModule{ Table loadingtable, desctable, configtable; @@ -190,20 +191,18 @@ public class UI extends SceneModule{ settingserror.hide(); }).size(80f, 55f).pad(4); - gameerror = new Dialog("An error has occured", "dialog"); - gameerror.content().add(new Label("[SCARLET]An unexpected error has occured, which would have caused a crash. " - + "[]Please report the exact circumstances under which this error occured to the developer: " - + "\n[ORANGE]anukendev@gmail.com[]"){{ - setWrap(true); - }}).width(600f).pad(10f); - gameerror.buttons().addButton("OK", gameerror::hide).size(200f, 50); + gameerror = new Dialog("$text.error.crashtitle", "dialog"); + gameerror.content().labelWrap("$text.error.crashmessage").width(600f).pad(10f); + gameerror.buttons().addButton("#text.ok", gameerror::hide).size(200f, 50); discord = new Dialog("Discord", "dialog"); discord.content().margin(12f); - discord.content().add("Join the mindustry discord!\n[orange]" + Vars.discordURL); + discord.content().add("$text.discord"); + discord.content().row(); + discord.content().add("[orange]"+Vars.discordURL); discord.buttons().defaults().size(200f, 50); - discord.buttons().addButton("Open link", () -> Mindustry.platforms.openLink(Vars.discordURL)); - discord.buttons().addButton("Back", discord::hide); + discord.buttons().addButton("$text.openlink", () -> Mindustry.platforms.openLink(Vars.discordURL)); + discord.buttons().addButton("$text.back", discord::hide); load = new LoadDialog(); @@ -218,18 +217,18 @@ public class UI extends SceneModule{ prefs.sound.volumePrefs(); - prefs.game.sliderPref("difficulty", "Difficulty", 1, 0, 2, i -> i == 0 ? "Easy" : i == 1 ? "Normal" : "Hard"); + prefs.game.sliderPref("difficulty", 1, 0, 2, i -> Bundles.get("setting.difficulty." + (i == 0 ? "easy" : i == 1 ? "normal" : "hard"))); prefs.game.screenshakePref(); - prefs.game.checkPref("smoothcam", "Smooth Camera", true); - prefs.game.checkPref("indicators", "Enemy Indicators", true); - prefs.game.checkPref("effects", "Display Effects", true); - prefs.game.sliderPref("sensitivity", "Controller Sensitivity", 100, 10, 300, i -> i + "%"); + prefs.game.checkPref("smoothcam", true); + prefs.game.checkPref("indicators", true); + prefs.game.checkPref("effects", true); + prefs.game.sliderPref("sensitivity", 100, 10, 300, i -> i + "%"); - prefs.graphics.checkPref("fps", "Show FPS", false); - prefs.graphics.checkPref("vsync", "VSync", true, b -> Gdx.graphics.setVSync(b)); - prefs.graphics.checkPref("lasers", "Show Power Lasers", true); - prefs.graphics.checkPref("healthbars", "Show Entity Health bars", true); - prefs.graphics.checkPref("pixelate", "Pixelate Screen", true, b->{ + prefs.graphics.checkPref("fps", false); + prefs.graphics.checkPref("vsync", true, b -> Gdx.graphics.setVSync(b)); + prefs.graphics.checkPref("lasers", true); + prefs.graphics.checkPref("healthbars", true); + prefs.graphics.checkPref("pixelate", true, b->{ if(b){ Vars.renderer.pixelSurface.setScale(Core.cameraScale); Vars.renderer.shadowSurface.setScale(Core.cameraScale); @@ -270,19 +269,20 @@ public class UI extends SceneModule{ about.content().row(); } - restart = new Dialog("The core was destroyed.", "dialog"); + restart = new Dialog("$text.gameover", "dialog"); restart.shown(()->{ restart.content().clearChildren(); if(control.isHighScore()){ - restart.content().add("[YELLOW]New highscore!").pad(6); + restart.content().add("$text.highscore").pad(6); restart.content().row(); } - restart.content().add("You lasted until wave [GREEN]" + control.getWave() + "[].").pad(12).get(); + restart.content().add("$text.lasted").pad(12).get(); + restart.content().add("[GREEN]" + control.getWave()); restart.pack(); }); - restart.getButtonTable().addButton("Back to menu", ()->{ + restart.getButtonTable().addButton("$text.menu", ()->{ restart.hide(); GameState.set(State.menu); control.reset(); @@ -305,7 +305,7 @@ public class UI extends SceneModule{ get().addImage("white").growX() .height(3f).pad(4f).growX().get().setColor(Colors.get("accent")); row(); - new label("[accent]Loading..."){{ + new label("$text.loading"){{ get().setName("namelabel"); }}.pad(10); row(); @@ -370,7 +370,7 @@ public class UI extends SceneModule{ } public void showError(String text){ - new Dialog("[crimson]An error has occured", "dialog"){{ + new Dialog("$text.error.title", "dialog"){{ content().margin(15); content().add(text); getButtonTable().addButton("OK", this::hide).size(90, 50).pad(4); @@ -378,7 +378,7 @@ public class UI extends SceneModule{ } public void showErrorClose(String text){ - new Dialog("[crimson]A critical error has occured", "dialog"){{ + new Dialog("$text.error.title", "dialog"){{ content().margin(15); content().add(text); getButtonTable().addButton("Exit", Gdx.app::exit).size(90, 50).pad(4); @@ -386,7 +386,7 @@ public class UI extends SceneModule{ } public void showLoading(){ - showLoading("[accent]Loading.."); + showLoading("$text.loading"); } public void showLoading(String text){ @@ -479,13 +479,17 @@ public class UI extends SceneModule{ public void updateItems(){ ((HudFragment)hudfrag).updateItems(); } - + + public MindustrySettingsDialog getPrefs() { + return prefs; + } + public void showConfirm(String title, String text, Listenable confirmed){ FloatingDialog dialog = new FloatingDialog(title); dialog.content().add(text).pad(4f); dialog.buttons().defaults().size(200f, 54f).pad(2f); - dialog.buttons().addButton("Cancel", dialog::hide); - dialog.buttons().addButton("OK", () -> { + dialog.buttons().addButton("$text.cancel", dialog::hide); + dialog.buttons().addButton("$text.ok", () -> { dialog.hide(); confirmed.listen(); }); diff --git a/core/src/io/anuke/mindustry/io/BundleUtil.java b/core/src/io/anuke/mindustry/io/BundleUtil.java new file mode 100644 index 0000000000..eaa3d570a9 --- /dev/null +++ b/core/src/io/anuke/mindustry/io/BundleUtil.java @@ -0,0 +1,79 @@ +package io.anuke.mindustry.io; + +import com.badlogic.gdx.Game; +import com.badlogic.gdx.files.FileHandle; +import io.anuke.mindustry.Vars; +import io.anuke.mindustry.core.Tutorial; +import io.anuke.mindustry.core.Tutorial.Stage; +import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.resource.Weapon; +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.GameMode; +import io.anuke.mindustry.world.Map; +import io.anuke.ucore.core.Inputs.DeviceType; +import io.anuke.ucore.core.KeyBinds; +import io.anuke.ucore.core.KeyBinds.Keybind; +import io.anuke.ucore.scene.ui.SettingsDialog.SettingsTable.Setting; +import io.anuke.ucore.util.Mathf; + +import java.io.File; + +public class BundleUtil { + private static FileHandle file; + + public static void buildBundle(FileHandle file){ + BundleUtil.file = file; + + file.writeString("", false); + write("about.text=" + join(Vars.aboutText)); + write("discord.text=Join the mindustry discord!\n[orange]"); + + Mathf.each(table -> { + for(Setting setting : table.getSettings()){ + write("setting." + setting.name + ".name=" + setting.title); + } + }, Vars.ui.getPrefs().game, Vars.ui.getPrefs().graphics, Vars.ui.getPrefs().sound); + + for(Map map : Vars.world.maps().list()){ + write("map." + map.name + ".name=" + map.name); + } + for(Tutorial.Stage stage : Stage.values()){ + write("tutorial." + stage.name() + ".text=" + stage.text); + } + for(Keybind bind : KeyBinds.getSection("default").keybinds.get(DeviceType.keyboard)){ + write("keybind." + bind.name + ".name=" + bind.name); + } + for(GameMode mode : GameMode.values()){ + write("mode." + mode.name() + ".name=" + mode.name()); + } + for(Weapon weapon : Weapon.values()){ + write("weapon." + weapon.name() + ".name=" + weapon.name()); + write("weapon." + weapon.name() + ".description=" + weapon.description); + } + for(Item item : Item.values()){ + write("item." + item.name() + ".name=" + item.name()); + } + for(Liquid liquid : Liquid.values()){ + write("liquid." + liquid.name() + ".name=" + liquid.name()); + } + for(Block block : Block.getAllBlocks()){ + write("block." + block.name + ".name=" + block.formalName); + if(block.fullDescription != null) write("block." + block.name + ".fulldescription=" + block.fullDescription); + if(block.description != null) write("block." + block.name + ".description=" + block.description); + } + } + + private static void write(String string){ + file.writeString(string.replaceAll("\\n", "\\\\n") + "\n", true); + } + + public static String join(String[] strings){ + String s = ""; + for(String string : strings){ + s += string + "\n"; + } + return s; + } + +} diff --git a/core/src/io/anuke/mindustry/resource/Weapon.java b/core/src/io/anuke/mindustry/resource/Weapon.java index 9ebad11f24..58eee87e4c 100644 --- a/core/src/io/anuke/mindustry/resource/Weapon.java +++ b/core/src/io/anuke/mindustry/resource/Weapon.java @@ -12,10 +12,11 @@ import io.anuke.mindustry.graphics.Fx; import io.anuke.ucore.core.Effects; import io.anuke.ucore.entities.Entity; import io.anuke.ucore.util.Angles; +import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; public enum Weapon{ - blaster(15, BulletType.shot, "Shoots a slow, weak bullet."){ + blaster(15, BulletType.shot){ { unlocked = true; } @@ -26,7 +27,7 @@ public enum Weapon{ Effects.effect(Fx.shoot3, p.x + vector.x, p.y+vector.y); } }, - triblaster(13, BulletType.shot, "Shoots 3 bullets in a spread.", stack(Item.iron, 40)){ + triblaster(13, BulletType.shot, stack(Item.iron, 40)){ @Override public void shoot(Player p){ @@ -41,7 +42,7 @@ public enum Weapon{ } }, - multigun(6, BulletType.multishot, "Shoots inaccurate bullets with a high\nrate of fire.", stack(Item.iron, 60), stack(Item.steel, 20)){ + multigun(6, BulletType.multishot, stack(Item.iron, 60), stack(Item.steel, 20)){ @Override public void shoot(Player p){ float ang = mouseAngle(p); @@ -52,7 +53,7 @@ public enum Weapon{ Effects.effect(Fx.shoot2, p.x + vector.x, p.y+vector.y); } }, - flamer(5, BulletType.flame, "Shoots a stream of fire.", stack(Item.steel, 60), stack(Item.coal, 60)){ + flamer(5, BulletType.flame, stack(Item.steel, 60), stack(Item.coal, 60)){ { shootsound = "flame2"; @@ -67,7 +68,7 @@ public enum Weapon{ bullet(p, p.x, p.y, ang + Mathf.range(12)); } }, - railgun(40, BulletType.sniper, "Shoots one long-range bullet.", stack(Item.steel, 60), stack(Item.iron, 60)){ + railgun(40, BulletType.sniper, stack(Item.steel, 60), stack(Item.iron, 60)){ { shootsound = "railgun"; @@ -81,7 +82,7 @@ public enum Weapon{ Effects.effect(Fx.railshoot, p.x + vector.x, p.y+vector.y); } }, - mortar(100, BulletType.shell, "Shoots a slow, but damaging shell.", stack(Item.titanium, 40), stack(Item.steel, 60)){ + mortar(100, BulletType.shell, stack(Item.titanium, 40), stack(Item.steel, 60)){ { shootsound = "bigshot"; @@ -100,15 +101,15 @@ public enum Weapon{ public String shootsound = "shoot"; public boolean unlocked; public ItemStack[] requirements; - public String description = "no desc for you"; + public final String description; Vector2 vector = new Vector2(); - private Weapon(float reload, BulletType type, String desc, ItemStack... requirements){ + private Weapon(float reload, BulletType type, ItemStack... requirements){ this.reload = reload; this.type = type; this.requirements = requirements; - this.description = desc; + this.description = Bundles.getNotNull("weapon."+name()+".description"); } public void shoot(Player p){ diff --git a/core/src/io/anuke/mindustry/ui/FileChooser.java b/core/src/io/anuke/mindustry/ui/FileChooser.java index 286637b07f..0427588377 100644 --- a/core/src/io/anuke/mindustry/ui/FileChooser.java +++ b/core/src/io/anuke/mindustry/ui/FileChooser.java @@ -59,7 +59,7 @@ public class FileChooser extends FloatingDialog{ if(!open) Mindustry.platforms.addDialog(filefield); filefield.setDisabled(open); - ok = new TextButton(open ? "Open" : "Save"); + ok = new TextButton(open ? "$text.save" : "$text.save"); ok.clicked(() -> { if(ok.isDisabled()) return; @@ -74,8 +74,8 @@ public class FileChooser extends FloatingDialog{ filefield.change(); - TextButton cancel = new TextButton("Cancel"); - cancel.clicked(() -> hide()); + TextButton cancel = new TextButton("$text.cancel"); + cancel.clicked(this::hide); navigation = new TextField(""); navigation.setTouchable(Touchable.disabled); diff --git a/core/src/io/anuke/mindustry/ui/LevelDialog.java b/core/src/io/anuke/mindustry/ui/LevelDialog.java index 6fbbdf34bb..f176d9f760 100644 --- a/core/src/io/anuke/mindustry/ui/LevelDialog.java +++ b/core/src/io/anuke/mindustry/ui/LevelDialog.java @@ -14,6 +14,7 @@ import io.anuke.ucore.scene.ui.layout.Stack; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.utils.ClickListener; import io.anuke.ucore.scene.utils.Elements; +import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Tmp; public class LevelDialog extends FloatingDialog{ @@ -22,7 +23,7 @@ public class LevelDialog extends FloatingDialog{ private ScrollPane pane; public LevelDialog(){ - super("Level Select"); + super("$text.level.select"); getTitleTable().getCell(title()).growX().center(); getTitleTable().center(); addCloseButton(); @@ -43,10 +44,10 @@ public class LevelDialog extends FloatingDialog{ Table selmode = new Table(); ButtonGroup group = new ButtonGroup<>(); - selmode.add("Gamemode: ").padRight(10f); + selmode.add("$text.level.mode").padRight(15f); for(GameMode mode : GameMode.values()){ - TextButton b = Elements.newButton(mode.toString(), "toggle", ()->{ + TextButton b = Elements.newButton("$mode."+mode.name()+".name", "toggle", ()->{ Vars.control.setMode(mode); }); group.add(b); @@ -66,9 +67,9 @@ public class LevelDialog extends FloatingDialog{ } Table inset = new Table("pane-button"); - inset.add("[accent]"+map.name).pad(3f); + inset.add("[accent]" + Bundles.get("map."+map.name+".name", map.name)).pad(3f); inset.row(); - inset.label((() -> "High Score: [accent]" + Settings.getInt("hiscore" + map.name))) + inset.label((() -> Bundles.format("text.level.highscore", Settings.getInt("hiscore" + map.name)))) .pad(3f); inset.pack(); @@ -87,7 +88,7 @@ public class LevelDialog extends FloatingDialog{ image.row(); delete[0] = image.addButton("Delete", () -> { Timers.run(1f, () -> { - Vars.ui.showConfirm("Confirm Delete", "Are you sure you want to delete\nthe map \"[orange]" + map.name + "[]\"?", () -> { + Vars.ui.showConfirm("$text.level.delete.title", Bundles.format("text.level.delete", Bundles.get("map."+map.name+".name", map.name)), () -> { Vars.world.maps().removeMap(map); reload(); Core.scene.setScrollFocus(pane); diff --git a/core/src/io/anuke/mindustry/ui/LoadDialog.java b/core/src/io/anuke/mindustry/ui/LoadDialog.java index c90e5070ef..d9469de536 100644 --- a/core/src/io/anuke/mindustry/ui/LoadDialog.java +++ b/core/src/io/anuke/mindustry/ui/LoadDialog.java @@ -12,12 +12,13 @@ import io.anuke.ucore.scene.ui.Label; import io.anuke.ucore.scene.ui.ScrollPane; import io.anuke.ucore.scene.ui.TextButton; import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.util.Bundles; public class LoadDialog extends FloatingDialog{ ScrollPane pane; public LoadDialog() { - this("Load Game"); + this("$text.loadgame"); } public LoadDialog(String title) { @@ -35,7 +36,7 @@ public class LoadDialog extends FloatingDialog{ private void setup(){ content().clear(); - content().add("Select a save slot.").padBottom(2); + content().add("$text.selectslot").padBottom(2); content().row(); Table slots = new Table(); @@ -46,15 +47,15 @@ public class LoadDialog extends FloatingDialog{ for(int i = 0; i < Vars.saveSlots; i++){ - TextButton button = new TextButton("[accent]Slot " + (i + 1)); + TextButton button = new TextButton(Bundles.format("text.slot", (i + 1))); button.margin(12); button.getLabelCell().top().left().growX(); button.row(); - Label info = new Label("[gray]" + (!SaveIO.isSaveValid(i) ? "" : SaveIO.getMode(i) + ", " - + SaveIO.getMap(i).name + ", Wave " + SaveIO.getWave(i) - + "\nLast Saved: " + SaveIO.getTimeString(i))); + Label info = new Label("[gray]" + (!SaveIO.isSaveValid(i) ? Bundles.get("text.empty") : SaveIO.getMode(i) + ", " + + SaveIO.getMap(i).name + ", " + Bundles.format("text.save.wave", SaveIO.getWave(i)) + "\n" + + Bundles.format("text.save.date", SaveIO.getTimeString(i)))); info.setAlignment(Align.center, Align.center); button.add(info).padBottom(3).padTop(7); @@ -88,7 +89,7 @@ public class LoadDialog extends FloatingDialog{ Vars.ui.hideMenu(); GameState.set(State.menu); Vars.control.reset(); - Vars.ui.showError("[orange]Save file corrupted or invalid!"); + Vars.ui.showError("$text.save.corrupted"); return; } }); diff --git a/core/src/io/anuke/mindustry/ui/MenuDialog.java b/core/src/io/anuke/mindustry/ui/MenuDialog.java index e923274856..05846f0337 100644 --- a/core/src/io/anuke/mindustry/ui/MenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/MenuDialog.java @@ -31,32 +31,32 @@ public class MenuDialog extends FloatingDialog{ if(!Vars.android){ content().defaults().width(220).height(50); - content().addButton("Back", () -> { + content().addButton("$text.back", () -> { hide(); if(!wasPaused) GameState.set(State.playing); }); content().row(); - content().addButton("Settings", () -> { + content().addButton("$text.settings", () -> { ui.showPrefs(); }); if(!Vars.gwt){ content().row(); - content().addButton("Save Game", () -> { + content().addButton("$text.savegame", () -> { save.show(); }); content().row(); - content().addButton("Load Game", () -> { + content().addButton("$text.loadgame", () -> { load.show(); }); } content().row(); - content().addButton("Quit", () -> { - new ConfirmDialog("Confirm", "Are you sure you want to quit?", () -> { + content().addButton("$text.quit", () -> { + new ConfirmDialog("$text.confirm", "$text.quit.confirm", () -> { hide(); GameState.set(State.menu); }){ @@ -79,16 +79,16 @@ public class MenuDialog extends FloatingDialog{ hide(); if(!wasPaused) GameState.set(State.playing); - }).text("Back").padTop(4f); + }).text("$text.back").padTop(4f); - new imagebutton("icon-tools", isize, () -> ui.showPrefs()).text("Settings").padTop(4f); + new imagebutton("icon-tools", isize, () -> ui.showPrefs()).text("$text.settings").padTop(4f); - new imagebutton("icon-save", isize, ()-> save.show()).text("Save").padTop(4f); + new imagebutton("icon-save", isize, ()-> save.show()).text("$text.save").padTop(4f); - new imagebutton("icon-load", isize, () -> load.show()).text("Load").padTop(4f); + new imagebutton("icon-load", isize, () -> load.show()).text("$text.load").padTop(4f); new imagebutton("icon-quit", isize, () -> { - new ConfirmDialog("Confirm", "Are you sure you want to quit?", () -> { + new ConfirmDialog("$text.confirm", "$text.quit.confirm", () -> { hide(); GameState.set(State.menu); }){{ diff --git a/core/src/io/anuke/mindustry/ui/MindustryKeybindDialog.java b/core/src/io/anuke/mindustry/ui/MindustryKeybindDialog.java index 3e25ec66e5..86a3c2d3b9 100644 --- a/core/src/io/anuke/mindustry/ui/MindustryKeybindDialog.java +++ b/core/src/io/anuke/mindustry/ui/MindustryKeybindDialog.java @@ -21,7 +21,7 @@ public class MindustryKeybindDialog extends KeybindDialog{ @Override public void addCloseButton(){ - buttons().addImageTextButton("Back", "icon-arrow-left", 30f, this::hide).size(230f, 64f); + buttons().addImageTextButton("$text.back", "icon-arrow-left", 30f, this::hide).size(230f, 64f); keyDown(key->{ if(key == Keys.ESCAPE || key == Keys.BACK) diff --git a/core/src/io/anuke/mindustry/ui/MindustrySettingsDialog.java b/core/src/io/anuke/mindustry/ui/MindustrySettingsDialog.java index 6beeb53919..c71f9c786f 100644 --- a/core/src/io/anuke/mindustry/ui/MindustrySettingsDialog.java +++ b/core/src/io/anuke/mindustry/ui/MindustrySettingsDialog.java @@ -39,7 +39,7 @@ public class MindustrySettingsDialog extends SettingsDialog{ Consumer s = table -> { table.row(); - table.addImageTextButton("Back", "icon-arrow-left", 10*3, this::back).size(240f, 60f).colspan(2).padTop(15f); + table.addImageTextButton("$text.back", "icon-arrow-left", 10*3, this::back).size(240f, 60f).colspan(2).padTop(15f); }; game = new SettingsTable(s); @@ -51,15 +51,15 @@ public class MindustrySettingsDialog extends SettingsDialog{ prefs.margin(14f); menu.defaults().size(300f, 60f).pad(3f); - menu.addButton("Game", () -> visible(0)); + menu.addButton("$text.settings.game", () -> visible(0)); menu.row(); - menu.addButton("Graphics", () -> visible(1)); + menu.addButton("$text.settings.graphics", () -> visible(1)); menu.row(); - menu.addButton("Sound", () -> visible(2)); + menu.addButton("$text.settings.sound", () -> visible(2)); if(!Vars.android) { menu.row(); - menu.addButton("Controls", () -> Vars.ui.showControls()); + menu.addButton("$text.settings.controls", () -> Vars.ui.showControls()); } prefs.clearChildren(); @@ -89,7 +89,7 @@ public class MindustrySettingsDialog extends SettingsDialog{ @Override public void addCloseButton(){ - buttons().addImageTextButton("Menu", "icon-arrow-left", 30f, this::hide).size(230f, 64f); + buttons().addImageTextButton("$text.menu", "icon-arrow-left", 30f, this::hide).size(230f, 64f); keyDown(key->{ if(key == Keys.ESCAPE || key == Keys.BACK) diff --git a/core/src/io/anuke/mindustry/ui/SaveDialog.java b/core/src/io/anuke/mindustry/ui/SaveDialog.java index 486d367bb1..edb2b27f5c 100644 --- a/core/src/io/anuke/mindustry/ui/SaveDialog.java +++ b/core/src/io/anuke/mindustry/ui/SaveDialog.java @@ -8,18 +8,19 @@ import io.anuke.ucore.core.Timers; import io.anuke.ucore.scene.ui.ConfirmDialog; import io.anuke.ucore.scene.ui.TextButton; import io.anuke.ucore.scene.ui.layout.Cell; +import io.anuke.ucore.util.Bundles; public class SaveDialog extends LoadDialog{ public SaveDialog() { - super("Save Game"); + super("$text.savegame"); } @Override public void modifyButton(TextButton button, int slot){ button.clicked(() -> { if(SaveIO.isSaveValid(slot)){ - new ConfirmDialog("Overwrite", "Are you sure you want to overwrite\nthis save slot?", () -> { + new ConfirmDialog("$text.overwrite", "$text.save.overwrite", () -> { save(slot); }){ { @@ -35,7 +36,7 @@ public class SaveDialog extends LoadDialog{ } void save(int slot){ - Vars.ui.showLoading("[accent]Saving..."); + Vars.ui.showLoading("text.saveload"); Timers.runTask(5f, () -> { hide(); @@ -45,7 +46,7 @@ public class SaveDialog extends LoadDialog{ }catch(Throwable e){ e = (e.getCause() == null ? e : e.getCause()); - Vars.ui.showError("[orange]Failed to save game!\n[white]" + ClassReflection.getSimpleName(e.getClass()) + ": " + e.getMessage() + "\n" + "at " + e.getStackTrace()[0].getFileName() + ":" + e.getStackTrace()[0].getLineNumber()); + Vars.ui.showError("[orange]"+Bundles.get("text.savefail")+"\n[white]" + ClassReflection.getSimpleName(e.getClass()) + ": " + e.getMessage() + "\n" + "at " + e.getStackTrace()[0].getFileName() + ":" + e.getStackTrace()[0].getLineNumber()); } }); } diff --git a/core/src/io/anuke/mindustry/ui/UpgradeDialog.java b/core/src/io/anuke/mindustry/ui/UpgradeDialog.java index fdaac77827..a4057979a0 100644 --- a/core/src/io/anuke/mindustry/ui/UpgradeDialog.java +++ b/core/src/io/anuke/mindustry/ui/UpgradeDialog.java @@ -21,7 +21,7 @@ public class UpgradeDialog extends FloatingDialog{ boolean wasPaused = false; public UpgradeDialog() { - super("Upgrades"); + super("$text.upgrades"); setup(); } @@ -107,7 +107,7 @@ public class UpgradeDialog extends FloatingDialog{ tiptable.add("[gray]" + description).left(); tiptable.row(); if(control.hasWeapon(weapon)){ - tiptable.add("[LIME]Purchased!").padTop(6).left(); + tiptable.add("$text.purchased").padTop(6).left(); } tiptable.margin(14f); }; @@ -131,7 +131,7 @@ public class UpgradeDialog extends FloatingDialog{ }); } - content().add("Weapons"); + content().add("$text.weapons"); content().row(); content().add(weptab); content().row(); diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index 6ddd0482da..45272a9b2e 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -2,9 +2,12 @@ package io.anuke.mindustry.ui.fragments; import static io.anuke.mindustry.Vars.*; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Colors; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.math.Interpolation; +import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.core.GameState; @@ -13,9 +16,11 @@ import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.resource.Recipe; import io.anuke.mindustry.resource.Section; import io.anuke.mindustry.ui.FloatingDialog; +import io.anuke.ucore.UCore; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Draw; import io.anuke.ucore.graphics.Hue; +import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.builders.button; import io.anuke.ucore.scene.builders.imagebutton; import io.anuke.ucore.scene.builders.table; @@ -23,6 +28,7 @@ import io.anuke.ucore.scene.event.Touchable; import io.anuke.ucore.scene.ui.*; import io.anuke.ucore.scene.ui.layout.Stack; import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; public class BlocksFragment implements Fragment{ @@ -38,7 +44,7 @@ public class BlocksFragment implements Fragment{ visible(() -> !GameState.is(State.menu)); - new table(){{ + Table blocks = new table(){{ new table("button") {{ visible(() -> player.recipe != null); @@ -108,10 +114,8 @@ public class BlocksFragment implements Fragment{ image.getImageCell().size(size); image.update(() -> { - boolean canPlace = !control.getTutorial().active() || control.getTutorial().canPlace(); boolean has = (control.hasItems(r.requirements)) && canPlace; - //image.setDisabled(!has); image.setChecked(player.recipe == r); image.setTouchable(canPlace ? Touchable.enabled : Touchable.disabled); image.getImage().setColor(has ? Color.WHITE : Hue.lightness(0.33f)); @@ -133,22 +137,42 @@ public class BlocksFragment implements Fragment{ add(stack).colspan(Section.values().length); margin(10f); - get().marginLeft(0f); - get().marginRight(0f); + marginLeft(0f); + marginRight(0f); end(); }}.right().bottom().uniformX(); visible(() -> !GameState.is(State.menu) && shown); - }}.end(); + }}.end().get(); row(); - new imagebutton("icon-arrow-down", 10*2, () -> { - shown = !shown; - }).padBottom(-5).uniformX().fillX() - .update(i -> i.getStyle().imageUp = Core.skin.getDrawable(shown ? "icon-arrow-down" : "icon-arrow-up")); + ImageButton buttons[] = new ImageButton[2]; + float size = 46f; + + float t = 0.2f; + Interpolation ip = Interpolation.pow3Out; + + //TODO fix glitch when resizing + buttons[0] = new imagebutton("icon-arrow-down", 10*2, () -> { + if(blocks.getActions().size != 0) return; + blocks.actions(Actions.translateBy(0, -blocks.getHeight(), t, ip), Actions.call(() -> shown = false)); + buttons[0].actions(Actions.fadeOut(t)); + buttons[1].actions(Actions.fadeIn(t)); + }).padBottom(-5).visible(() -> shown).height(size).uniformX().fillX() + .update(i -> i.getStyle().imageUp = Core.skin.getDrawable(shown ? "icon-arrow-down" : "icon-arrow-up")).get(); + + buttons[1] = new imagebutton("icon-arrow-up", 10*2, () -> { + if(blocks.getActions().size != 0) return; + blocks.actions(Actions.translateBy(0, blocks.getHeight(), t, ip)); + shown = true; + buttons[0].actions(Actions.fadeIn(t)); + buttons[1].actions(Actions.fadeOut(t)); + }).touchable(() -> shown ? Touchable.disabled : Touchable.enabled).size(size).padBottom(-5).padLeft(-size).get(); + + buttons[1].getColor().a = 0f; }}.end(); } @@ -187,7 +211,7 @@ public class BlocksFragment implements Fragment{ boolean wasPaused = GameState.is(State.paused); GameState.set(State.paused); - FloatingDialog d = new FloatingDialog("Block Info"); + FloatingDialog d = new FloatingDialog("$text.blocks.blockinfo"); Table table = new Table(); table.defaults().pad(1f); ScrollPane pane = new ScrollPane(table, "clear"); @@ -204,7 +228,7 @@ public class BlocksFragment implements Fragment{ d.content().add(pane).grow(); if(statlist.size > 0){ - table.add("[accent]extra block info:").padTop(6).padBottom(5).left(); + table.add("$text.blocks.extrainfo").padTop(6).padBottom(5).left(); table.row(); } @@ -213,7 +237,7 @@ public class BlocksFragment implements Fragment{ table.row(); } - d.buttons().addButton("OK", ()->{ + d.buttons().addButton("$text.ok", ()->{ if(!wasPaused) GameState.set(State.playing); d.hide(); }).size(110, 50).pad(10f); @@ -252,7 +276,7 @@ public class BlocksFragment implements Fragment{ desctable.row(); - Label label = new Label("[health]health: " + recipe.result.health + (recipe.result.description == null ? + Label label = new Label("[health]"+ Bundles.get("text.health")+": " + recipe.result.health + (recipe.result.description == null ? "" : ("\n[]" + recipe.result.description))); label.setWrap(true); desctable.add(label).width(200).padTop(4).padBottom(2); diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 910f016d6d..676be94c8b 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -23,6 +23,7 @@ import io.anuke.ucore.scene.ui.Image; import io.anuke.ucore.scene.ui.Label; import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.util.Bundles; public class HudFragment implements Fragment{ private Table itemtable, respawntable; @@ -91,7 +92,7 @@ public class HudFragment implements Fragment{ atop(); new table("pane"){{ - new label("[orange]< paused >").scale(0.75f).pad(6); + new label("[orange]< "+ Bundles.get("text.paused") + " >").scale(0.75f).pad(6); }}.end(); }}.end(); @@ -122,7 +123,7 @@ public class HudFragment implements Fragment{ new table(){{ new table("pane"){{ - new label(()->"[orange]Respawning in " + (int)(control.getRespawnTime()/60)).scale(0.75f).pad(10); + new label(()->"[orange]"+Bundles.get("text.respawn")+" " + (int)(control.getRespawnTime()/60)).scale(0.75f).pad(10); visible(()->control.getRespawnTime() > 0 && !GameState.is(State.menu)); @@ -149,10 +150,10 @@ public class HudFragment implements Fragment{ } } - private String printEnemiesRemaining() { + private String getEnemiesRemaining() { if(control.getEnemiesRemaining() == 1) { - return " enemy left"; - } else return " enemies left"; + return Bundles.format("text.single", control.getEnemiesRemaining()); + } else return Bundles.format("text.enemies", control.getEnemiesRemaining()); } private void addWaveTable(){ @@ -163,13 +164,14 @@ public class HudFragment implements Fragment{ new table(){{ aleft(); - new label(()->"[orange]Wave " + control.getWave()).scale(fontscale*1.5f).left(); + new label(() -> Bundles.format("text.wave", control.getWave())).scale(fontscale*1.5f).left(); row(); new label(()-> control.getEnemiesRemaining() > 0 ? - control.getEnemiesRemaining() + printEnemiesRemaining() : - (control.getTutorial().active() || Vars.control.getMode().toggleWaves) ? "waiting..." : "Wave in " + (int) (control.getWaveCountdown() / 60f)) + getEnemiesRemaining() : + (control.getTutorial().active() || Vars.control.getMode().toggleWaves) ? "$text.waiting" + : Bundles.format("text.wave.waiting", (int) (control.getWaveCountdown() / 60f))) .minWidth(140).left(); margin(12f); diff --git a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java index f1633310ee..08a24e1ff6 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java @@ -56,22 +56,22 @@ public class MenuFragment implements Fragment{ defaults().size(120f).pad(5); float isize = 14f*4; - new imagebutton("icon-play-2", isize, () -> ui.showLevels()).text("Play").padTop(4f); + new imagebutton("icon-play-2", isize, () -> ui.showLevels()).text("$text.play").padTop(4f); - new imagebutton("icon-tutorial", isize, () -> control.playMap(world.maps().getMap("tutorial"))).text("Tutorial").padTop(4f); + new imagebutton("icon-tutorial", isize, () -> control.playMap(world.maps().getMap("tutorial"))).text("$text.tutorial").padTop(4f); - new imagebutton("icon-load", isize, () -> ui.showLoadGame()).text("Load").padTop(4f); + new imagebutton("icon-load", isize, () -> ui.showLoadGame()).text("$text.load").padTop(4f); row(); - new imagebutton("icon-editor", isize, () -> ui.showEditor()).text("Editor").padTop(4f); + new imagebutton("icon-editor", isize, () -> ui.showEditor()).text("$text.editor").padTop(4f); - new imagebutton("icon-tools", isize, () -> ui.showPrefs()).text("Settings").padTop(4f); + new imagebutton("icon-tools", isize, () -> ui.showPrefs()).text("$text.settings").padTop(4f); if(Mindustry.donationsCallable != null){ new imagebutton("icon-donate", isize, () -> { Mindustry.donationsCallable.run(); - }).text("Donate").padTop(4f); + }).text("$text.donate").padTop(4f); } visible(()->GameState.is(State.menu)); diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java index 162d08c5e6..ee4e71c7a4 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -28,7 +28,7 @@ public class PlacementFragment implements Fragment{ touchable(Touchable.enabled); aleft(); - new label("place mode"); + new label("$text.placemode"); row(); new table("pane"){{ @@ -76,7 +76,7 @@ public class PlacementFragment implements Fragment{ abottom(); aleft(); - new label("break mode"); + new label("$text.breakmode"); row(); new table("pane"){{ diff --git a/core/src/io/anuke/mindustry/ui/fragments/WeaponFragment.java b/core/src/io/anuke/mindustry/ui/fragments/WeaponFragment.java index a65bfbaa93..0ed2654e16 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/WeaponFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/WeaponFragment.java @@ -28,7 +28,7 @@ public class WeaponFragment implements Fragment{ public void updateWeapons(){ weapontable.clearChildren(); - ButtonGroup group = new ButtonGroup(); + ButtonGroup group = new ButtonGroup<>(); weapontable.defaults().size(58, 62); @@ -52,14 +52,14 @@ public class WeaponFragment implements Fragment{ String description = weapon.description; tiptable.background("button"); - tiptable.add("" + weapon.name(), 0.5f).left().padBottom(3f); + tiptable.add("weapon."+weapon.name()+".name", 0.5f).left().padBottom(3f); tiptable.row(); tiptable.row(); tiptable.add("[GRAY]" + description).left(); tiptable.margin(14f); - Tooltip tip = new Tooltip(tiptable); + Tooltip tip = new Tooltip<>(tiptable); tip.setInstant(true); diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 04f06e4595..1b8dc783ee 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -15,6 +15,7 @@ import io.anuke.mindustry.resource.Liquid; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; +import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Tmp; public class Block{ @@ -29,7 +30,7 @@ public class Block{ /**internal ID*/ public final int id; /**display name*/ - public String formalName; + public final String formalName; /**played on destroy*/ public Effect explosionEffect = Fx.blockexplosion; /**played on destroy*/ @@ -67,9 +68,9 @@ public class Block{ /**multiblock width/height*/ public int width = 1, height = 1; /**Brief block description. Should be short enough fit in the place menu.*/ - public String description; + public final String description; /**Detailed description of the block. Can be as long as necesary.*/ - public String fullDescription; + public final String fullDescription; /**Whether to draw this block in the expanded draw range.*/ public boolean expanded = false; /**Max of timers used.*/ @@ -83,7 +84,9 @@ public class Block{ blocks.add(this); this.name = name; - this.formalName = name; + this.formalName = Bundles.get("block." + name + ".name", name); + this.description = Bundles.get("block." + name + ".description"); + this.fullDescription = Bundles.get("block." + name + ".fulldescription"); this.solid = false; this.id = lastid++; } diff --git a/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java index 625581c371..70f21a9d30 100644 --- a/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java @@ -11,66 +11,43 @@ public class DefenseBlocks{ stonewall = new Wall("stonewall"){{ health = 50; - formalName = "stone wall"; - fullDescription = "A cheap defensive block. Useful for protecting the core and turrets in the first few waves."; }}, ironwall = new Wall("ironwall"){{ health = 80; - formalName = "iron wall"; - fullDescription = "A basic defensive block. Provides protection from enemies."; }}, steelwall = new Wall("steelwall"){{ health = 110; - formalName = "steel wall"; - fullDescription = "A standard defensive block. adequate protection from enemies."; }}, titaniumwall = new Wall("titaniumwall"){{ health = 150; - formalName = "titanium wall"; - fullDescription = "A strong defensive block. Provides protection from enemies."; }}, diriumwall = new Wall("duriumwall"){{ health = 190; - formalName = "dirium wall"; - fullDescription = "A very strong defensive block. Provides protection from enemies."; }}, compositewall = new Wall("compositewall"){{ health = 270; - formalName = "composite wall"; }}, steelwalllarge = new Wall("steelwall-large"){{ health = 110*4; - formalName = "large steel wall"; width = height = 2; - fullDescription = "A standard defensive block. Spans multiple tiles."; }}, titaniumwalllarge = new Wall("titaniumwall-large"){{ health = 150*4; - formalName = "large titanium wall"; width = height = 2; - fullDescription = "A strong defensive block. Spans multiple tiles."; }}, diriumwalllarge = new Wall("duriumwall-large"){{ health = 190*4; - formalName = "large dirium wall"; width = height = 2; - fullDescription = "A very strong defensive block. Spans multiple tiles."; }}, titaniumshieldwall = new ShieldedWallBlock("titaniumshieldwall"){{ - fullDescription = "A strong defensive block, with an extra built-in shield. Requires power. " - + "Uses energy to absorb enemy bullets. It is recommended to use power boosters to provide energy to this block."; health = 150; - formalName = "shielded wall"; }}, repairturret = new RepairTurret("repairturret"){ { - fullDescription = "Repairs nearby damaged blocks in range at a slow rate. " - + "Uses small amounts of power."; - formalName = "repair turret"; range = 30; reload = 60f; health = 60; @@ -79,9 +56,6 @@ public class DefenseBlocks{ megarepairturret = new RepairTurret("megarepairturret"){ { - fullDescription = "Repairs nearby damaged blocks in range at a decent rate. " - + "Uses power."; - formalName = "repair turret II"; range = 44; reload = 30f; powerUsed = 0.15f; @@ -91,21 +65,13 @@ public class DefenseBlocks{ shieldgenerator = new ShieldBlock("shieldgenerator"){ { - //TODO - fullDescription = "An advanced defensive block. Shields all the blocks in a radius from attack. Uses power at a slow rate when idle, " - + "but drains energy quickly on bullet contact."; - formalName = "shield generator"; + } }, door = new Door("door"){{ - fullDescription = "A block than can be opened and closed by tapping it."; - description = "Opens and closes.\n[interact]Tap to toggle"; health = 90; }}, largedoor = new Door("door-large"){{ - formalName = "large door"; - fullDescription = "A block than can be opened and closed by tapping it."; - description = "Opens and closes.\n[interact]Tap to toggle"; openfx = Fx.dooropenlarge; closefx = Fx.doorcloselarge; health = 90*4; diff --git a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java index 59818120dc..2153999a45 100644 --- a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java @@ -9,107 +9,58 @@ public class DistributionBlocks{ public static final Block conduit = new LiquidBlock("conduit"){{ - fullDescription = "Basic liquid transport block. Works like a conveyor, but with liquids. " - + "Best used with pumps or other conduits. Can be used as a bridge over liquids for enemies and players."; health = 45; }}, pulseconduit = new LiquidBlock("pulseconduit"){{ - formalName = "pulse conduit"; - fullDescription = "Advanced liquid transport block. Transports liquids faster and stores more than standard conduits."; liquidCapacity = 16f; flowfactor = 4.9f; health = 65; }}, liquidrouter = new LiquidRouter("liquidrouter"){{ - description = "Splits input liquid into 3 directions."; - fullDescription = "Works similarly to a router. Accepts liquid input from one side and outputs it to the other sides. " - + "Useful for splitting liquid from a single conduit into multiple other conduits."; - formalName = "liquid router"; + }}, conveyor = new Conveyor("conveyor"){{ - fullDescription = "Basic item transport block. Moves items forward and automatically deposits them into turrets or crafters. " - + "Rotatable. Can be used as a bridge over liquids for enemies and players."; }}, steelconveyor = new Conveyor("steelconveyor"){{ health = 55; speed = 0.04f; - formalName = "steel conveyor"; - fullDescription = "Advanced item transport block. Moves items faster than standard conveyors."; }}, pulseconveyor = new Conveyor("poweredconveyor"){{ health = 75; speed = 0.09f; - formalName = "pulse conveyor"; - fullDescription = "The ultimate item transport block. Moves items faster than steel conveyors."; }}, router = new Router("router"){{ - description = "Split input materials into 3 directions."; - fullDescription = "Accepts items from one direction and outputs them to 3 other directions. Can also store a certain amount of items." - + "Useful for splitting the materials from one drill into multiple turrets."; + }}, junction = new Junction("junction"){{ - description = "Serves as a conveyor junction."; - fullDescription = "Acts as a bridge for two crossing conveyor belts. Useful in situations with " - + "two different conveyors carrying different materials to different locations."; }}, tunnel = new TunnelConveyor("conveyortunnel"){{ - formalName = "conveyor tunnel"; - description = "Transports items under blocks."; - fullDescription = "Transports item under blocks. " - + "To use, place one tunnel leading into the block to be tunneled under, and one on the other side."; }}, liquidjunction = new LiquidJunction("liquidjunction"){{ - formalName = "liquid junction"; - fullDescription = "Acts as a bridge for two crossing conduits. Useful in situations with " - + "two different conduits carrying different liquids to different locations."; + }}, liquiditemjunction = new LiquidItemJunction("liquiditemjunction"){{ - formalName = "liquid-item junction"; - description = "Serves as a junction for items and liquids."; - fullDescription = "Acts as a bridge for crossing conduits and conveyors."; }}, powerbooster = new PowerBooster("powerbooster"){{ - formalName = "power booster"; powerRange = 4; - description = "Distributes power within a radius."; - fullDescription = "Distributes power to all blocks within its radius. "; }}, powerlaser = new PowerLaser("powerlaser"){{ - formalName = "power laser"; - description = "Transmits power."; - fullDescription = "Creates a laser that transmits power to the block in front of it. Does not generate any power itself. " - + "Best used with generators or other lasers."; }}, powerlaserrouter = new PowerLaserRouter("powerlaserrouter"){{ - formalName = "laser router"; - description = "Splits input power into 3 lasers."; - fullDescription = "Laser that distributes power to three directions at once. " - + "Useful in situations where it is required to power multiple blocks from one generator."; }}, powerlasercorner = new PowerLaserRouter("powerlasercorner"){{ laserDirections = 2; - formalName = "laser corner"; - description = "Splits input power into 2 lasers."; - fullDescription = "Laser that distributes power to two directions at once. " - + "Useful in situations where it is required to power multiple blocks from one generator, and a router is imprecise."; }}, teleporter = new Teleporter("teleporter"){{ - description = "[interact]Tap block to config[]"; - fullDescription = "Advanced item transport block. Teleporters input items to other teleporters of the same color." - + " Does nothing if no teleporters of the same color exist. If multiple teleporters exist of the same color, a random one is selected." - + " Tap and click the arrows to change color."; }}, sorter = new Sorter("sorter"){{ - description = "[interact]Tap block to config[]"; - fullDescription = "Sorts item by material type. Material to accept is indicated by the color in the block. " - + "All items that match the sort material are outputted forward, everything else is outputted to the left and right."; }}; } diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 98a2d7b36d..ada072edf1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -7,46 +7,20 @@ import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.defense.CoreBlock; import io.anuke.mindustry.world.blocks.types.production.*; import io.anuke.ucore.core.Effects; public class ProductionBlocks{ public static final Block - core = new Block("core"){ - { - health = 800; - solid = true; - destructible = true; - width = 3; - height = 3; - } - - @Override - public int handleDamage(Tile tile, int amount){ - return Vars.debug ? 0 : amount; - } - - @Override - public void handleItem(Item item, Tile tile, Tile source){ - Vars.control.addItem(item, 1); - } - - @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - return true; - } - }, + core = new CoreBlock("core"), pump = new Pump("pump"){{ - description = "Pumps liquids into nearby conduits."; - fullDescription = "Pumps liquids from a source block- usually water, lava or oil. Outputs liquid into nearby conduits."; }}, fluxpump = new Pump("fluxpump"){{ pumpAmount = 3f; - description = "Pumps liquids into nearby conduits."; - fullDescription = "An advanced version of the pump. Stores more liquid and pumps liquid faster."; }}, smelter = new Crafter("smelter"){ @@ -54,8 +28,6 @@ public class ProductionBlocks{ health = 70; requirements = new Item[]{Item.coal, Item.iron}; result = Item.steel; - description = "Converts coal + iron to steel."; - fullDescription = "The essential crafting block. When inputted 1x iron and 1x coal, outputs one steel."; } }, @@ -64,14 +36,11 @@ public class ProductionBlocks{ health = 90; requirements = new Item[]{Item.titanium, Item.steel}; result = Item.dirium; - description = "Converts steel + titanium to dirium."; - fullDescription = "An advanced crafting block. When inputted 1x titanium and 1x steel, outputs one dirium."; } }, coalpurifier = new LiquidCrafter("coalpurifier"){ { - formalName = "coal extractor"; input = Item.stone; inputAmount = 5; inputLiquid = Liquid.water; @@ -79,14 +48,11 @@ public class ProductionBlocks{ output = Item.coal; health = 50; purifyTime = 50; - description = "Converts stone + water to coal."; - fullDescription = "A basic extractor block. Outputs coal when supplied with large amounts of water and stone."; } }, titaniumpurifier = new LiquidCrafter("titaniumpurifier"){ { - formalName = "titanium extractor"; input = Item.iron; inputAmount = 6; inputLiquid = Liquid.water; @@ -95,14 +61,11 @@ public class ProductionBlocks{ purifyTime = 60; output = Item.titanium; health = 70; - description = "Converts iron + water to titanium."; - fullDescription = "A standard extractor block. Outputs titanium when supplied with large amounts of water and iron."; } }, oilrefinery = new LiquidCrafter("oilrefinery"){ { - formalName = "oil refinery"; inputLiquid = Liquid.oil; liquidAmount = 45f; liquidCapacity = 46f; @@ -110,14 +73,11 @@ public class ProductionBlocks{ output = Item.coal; health = 80; craftEffect = Fx.purifyoil; - description = "Converts oil to coal."; - fullDescription = "Refines large amounts of oil into coal items. Useful for fueling coal-based turrets when coal veins are scarce."; } }, stoneformer = new LiquidCrafter("stoneformer"){ { - formalName = "stone former"; input = null; inputLiquid = Liquid.lava; liquidAmount = 16f; @@ -126,14 +86,11 @@ public class ProductionBlocks{ output = Item.stone; health = 80; craftEffect = Fx.purifystone; - description = "Converts lava to stone."; - fullDescription = "Soldifies liquid lava into stone. Useful for producing massive amounts of stone for coal purifiers."; } }, lavasmelter = new LiquidCrafter("lavasmelter"){ { - formalName = "lava smelter"; input = Item.iron; inputAmount = 1; inputLiquid = Liquid.lava; @@ -143,8 +100,6 @@ public class ProductionBlocks{ output = Item.steel; health = 80; craftEffect = Fx.purifystone; - description = "Converts iron + lava to steel."; - fullDescription = "Uses lava to convert iron to steel. An alternative to smelteries. Useful in situations where coal is scarace."; } }, @@ -152,42 +107,27 @@ public class ProductionBlocks{ resource = Blocks.stone; result = Item.stone; time = 4; - formalName = "stone drill"; - description = "Mines 1 "+resource.name+" every "+time+" seconds."; - fullDescription = "The essential drill. When placed on stone tiles, outputs stone at a slow pace indefinitely."; }}, irondrill = new Drill("irondrill"){{ resource = Blocks.iron; result = Item.iron; - formalName = "iron drill"; - description = "Mines 1 "+resource.name+" every "+time+" seconds."; - fullDescription = "A basic drill. When placed on iron ore tiles, outputs iron at a slow pace indefinitely."; }}, coaldrill = new Drill("coaldrill"){{ resource = Blocks.coal; result = Item.coal; - formalName = "coal drill"; - description = "Mines 1 "+resource.name+" every "+time+" seconds."; - fullDescription = "A basic drill. When placed on coal ore tiles, outputs coal at a slow pace indefinitely."; }}, uraniumdrill = new Drill("uraniumdrill"){{ resource = Blocks.uranium; result = Item.uranium; - formalName = "uranium drill"; time = 7; - description = "Mines 1 "+resource.name+" every "+time+" seconds."; - fullDescription = "An advanced drill. When placed on uranium ore tiles, outputs uranium at a slow pace indefinitely."; }}, titaniumdrill = new Drill("titaniumdrill"){{ resource = Blocks.titanium; result = Item.titanium; - formalName = "titanium drill"; - description = "Mines 1 "+resource.name+" every "+time+" seconds."; - fullDescription = "An advanced drill. When placed on titanium ore tiles, outputs titanium at a slow pace indefinitely."; }}, omnidrill = new Drill("omnidrill"){ @@ -196,9 +136,6 @@ public class ProductionBlocks{ resource = null; result = null; time = 3; - formalName = "omnidrill"; - description = "Mines 1 of any resource every "+time+" seconds."; - fullDescription = "The ultimate drill. Will mine any ore it is placed on at a rapid pace."; } @Override @@ -217,62 +154,42 @@ public class ProductionBlocks{ }, coalgenerator = new ItemPowerGenerator("coalgenerator"){ { - //TODO - formalName = "coal generator"; generateItem = Item.coal; powerOutput = 0.05f; powerCapacity = 40f; - description = "Generates power from coal."; - fullDescription = "The essential generator. Generates power from coal. Outputs power as lasers to its 4 sides."; } }, thermalgenerator = new LiquidPowerGenerator("thermalgenerator"){ { - formalName = "thermal generator"; - //TODO generateLiquid = Liquid.lava; maxLiquidGenerate = 0.5f; powerPerLiquid = 0.09f; powerCapacity = 40f; - description = "Generates power from lava."; - fullDescription = "Generates power from lava. Outputs power as lasers to its 4 sides."; generateEffect = Fx.redgeneratespark; } }, combustiongenerator = new LiquidPowerGenerator("combustiongenerator"){ { - formalName = "combustion generator"; - //TODO generateLiquid = Liquid.oil; maxLiquidGenerate = 0.4f; powerPerLiquid = 0.13f; powerCapacity = 40f; - description = "Generates power from oil."; - fullDescription = "Generates power from oil. Outputs power as lasers to its 4 sides."; } }, rtgenerator = new ItemPowerGenerator("rtgenerator"){ { - //TODO make this generate slowly - formalName = "RTG generator"; generateItem = Item.uranium; powerCapacity = 40f; powerOutput = 0.04f; itemDuration = 240f; - description = "Generates power from uranium."; - fullDescription = "Generates small amounts of power from the radioactive decay of uranium. Outputs power as lasers to its 4 sides."; } }, nuclearReactor = new NuclearReactor("nuclearreactor"){ { - //TODO - formalName = "nuclear reactor"; width = 3; height = 3; health = 600; breaktime *= 2.3f; - fullDescription = "An advanced version of the RTG Generator, and the ultimate power generator. Generates power from uranium. Requires constant water cooling. " - + "Highly volatile; will explode violently if insufficient amounts of coolant are supplied. "; } }; } diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index bffbfc34c9..07ce77b5f7 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -22,26 +22,22 @@ public class WeaponBlocks{ turret = new Turret("turret"){ { - formalName = "turret"; range = 52; reload = 15f; bullet = BulletType.stone; health = 50; ammo = Item.stone; - fullDescription = "A basic, cheap turret. Uses stone for ammo. Has slightly more range than the double-turret."; } }, doubleturret = new Turret("doubleturret"){ { - formalName = "double turret"; range = 44; reload = 13f; bullet = BulletType.stone; ammo = Item.stone; health = 55; health = 50; - fullDescription = "A slightly more powerful version of the turret. Uses stone for ammo. Does significantly more damage, but has a lower range. Shoots two bullets."; } @Override @@ -58,19 +54,16 @@ public class WeaponBlocks{ machineturret = new Turret("machineturret"){ { - formalName = "gattling turret"; range = 65; reload = 7f; bullet = BulletType.iron; ammo = Item.iron; health = 65; - fullDescription = "A standard all-around turret. Uses iron for ammo. Has a fast fire rate with decent damage."; } }, shotgunturret = new Turret("shotgunturret"){ { - formalName = "splitter turret"; range = 50; reload = 30f; bullet = BulletType.iron; @@ -79,36 +72,28 @@ public class WeaponBlocks{ shots = 5; inaccuracy = 15f; shotDelayScale = 0.7f; - fullDescription = "A standard turret. Uses iron for ammo. Shoots a spread of 7 bullets. " - + "Lower range, but higher damage output than the gattling turret."; } }, flameturret = new Turret("flameturret"){ { - formalName = "flamer turret"; range = 35f; reload = 5f; bullet = BulletType.flame; ammo = Item.coal; health = 90; - fullDescription = "Advanced close-range turret. Uses coal for ammo. Has very low range, but very high damage. " - + "Good for close quarters. Recommended to be used behind walls."; } }, sniperturret = new Turret("sniperturret"){ { shootsound = "railgun"; - formalName = "railgun turret"; range = 120; reload = 50f; bullet = BulletType.sniper; ammo = Item.steel; health = 70; shootEffect = Fx.railshot; - fullDescription = "Advanced long-range turret. Uses steel for ammo. Very high damage, but low fire rate. " - + "Expensive to use, but can be placed far away from enemy lines due to its range."; } }, @@ -116,16 +101,12 @@ public class WeaponBlocks{ { shootsound = "bigshot"; rotatespeed = 0.1f; - formalName = "flak turret"; range = 120; reload = 100f; bullet = BulletType.shell; ammo = Item.coal; ammoMultiplier = 5; health = 110; - fullDescription = "Advanced splash-damage turret. Uses coal for ammo. " - + "Very slow fire rate and bullets, but very high single-target and splash damage. " - + "Useful for large crowds of enemies."; shootEffect = Fx.mortarshot; shootShake = 2f; } @@ -135,27 +116,21 @@ public class WeaponBlocks{ { shootsound = "laser"; beamColor = Color.SKY; - formalName = "laser turret"; range = 60; reload = 4f; damage = 10; health = 110; powerUsed = 0.2f; - fullDescription = "Advanced single-target turret. Uses power. Good medium-range all-around turret. " - + "Single-target only. Never misses."; } }, teslaturret = new PowerTurret("waveturret"){ { shootsound = "tesla"; - formalName = "tesla turret"; range = 70; reload = 15f; bullet = BulletType.shell; health = 140; - fullDescription = "Advanced multi-target turret. Uses power. Medium range. Never misses." - + "Average to low damage, but can hit multiple enemies simultaneously with chain lighting."; } @Override @@ -172,15 +147,12 @@ public class WeaponBlocks{ { shootsound = "flame2"; inaccuracy = 7f; - formalName = "plasma turret"; range = 60f; reload = 3f; bullet = BulletType.plasmaflame; ammo = Item.coal; health = 180; ammoMultiplier = 40; - fullDescription = "Highly advanced version of the flamer turret. Uses coal as ammo. " - + "Very high damage, low to medium range."; } }, @@ -188,7 +160,6 @@ public class WeaponBlocks{ { shootsound = "bigshot"; inaccuracy = 8f; - formalName = "chain turret"; range = 80f; reload = 8f; bullet = BulletType.chain; @@ -198,8 +169,6 @@ public class WeaponBlocks{ shootCone = 9f; ammoMultiplier = 8; shots = 2; - fullDescription = "The ultimate rapid-fire turret. Uses uranium as ammo. Shoots large slugs at a high fire rate. " - + "Medium range. Spans multiple tiles. Extremely tough."; shootEffect = Fx.chainshot; } @@ -226,7 +195,6 @@ public class WeaponBlocks{ titanturret = new Turret("titancannon"){ { shootsound = "blast"; - formalName = "titan cannon"; range = 120f; reload = 23f; bullet = BulletType.titanshell; @@ -236,8 +204,6 @@ public class WeaponBlocks{ width = height = 3; rotatespeed = 0.07f; shootCone = 9f; - fullDescription = "The ultimate long-range turret. Uses uranium as ammo. Shoots large splash-damage shells at a medium rate of fire. " - + "Long range. Spans multiple tiles. Extremely tough."; shootEffect = Fx.titanshot; shootShake = 3f; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java new file mode 100644 index 0000000000..abf97f32d5 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java @@ -0,0 +1,34 @@ +package io.anuke.mindustry.world.blocks.types.defense; + +import io.anuke.mindustry.Vars; +import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.Tile; + +public class CoreBlock extends Block { + + public CoreBlock(String name) { + super(name); + + health = 800; + solid = true; + destructible = true; + width = 3; + height = 3; + } + + @Override + public int handleDamage(Tile tile, int amount){ + return Vars.debug ? 0 : amount; + } + + @Override + public void handleItem(Item item, Tile tile, Tile source){ + Vars.control.addItem(item, 1); + } + + @Override + public boolean acceptItem(Item item, Tile dest, Tile source){ + return true; + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java index ce0987ca1a..eb6df6e021 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java @@ -26,11 +26,6 @@ public class PowerTurret extends Turret implements PowerAcceptor{ ammo = null; } - @Override - public void postInit(){ - description = "[turretinfo]Uses power."; - } - @Override public void getStats(Array list){ super.getStats(list); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java index 81f3305f9e..b21691e49a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java @@ -32,11 +32,6 @@ public class RepairTurret extends PowerTurret{ list.add("[turretinfo]Repairs/Second: " + Strings.toFixed(60f/reload, 1)); } - @Override - public void postInit(){ - description = "[powerinfo]Uses power[white]\nRepairs nearby blocks."; - } - @Override public void update(Tile tile){ PowerTurretEntity entity = tile.entity(); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index 471f216ddb..5b103d4d73 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -71,12 +71,6 @@ public class Turret extends Block{ list.add("[turretinfo]Shots: " + shots); } - @Override - public void postInit(){ - if(ammo != null) - description = "[turretinfo]Ammo: " + ammo; - } - @Override public boolean canReplace(Block other){ return other instanceof Turret;