From 6709d9856dc654d6f889d13eb380f7124b9ddd3d Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 19 May 2017 18:08:55 -0400 Subject: [PATCH] Implemented sprite caching, water, grass, and improved performance --- core/assets/maps/maze.png | Bin 1394 -> 1610 bytes core/assets/maps/test.png | Bin 608 -> 2030 bytes core/assets/sprites/mindustry.atlas | 204 +++++--- core/assets/sprites/mindustry.png | Bin 4662 -> 6045 bytes core/assets/ui/out/icon-arrow-down.png | Bin 115 -> 0 bytes core/assets/ui/out/icon-arrow-left.png | Bin 130 -> 0 bytes core/assets/ui/out/icon-arrow-right.png | Bin 129 -> 0 bytes core/assets/ui/out/icon-arrow-up.png | Bin 113 -> 0 bytes core/assets/ui/out/icon-copy.png | Bin 91 -> 0 bytes core/assets/ui/out/icon-cursor.png | Bin 101 -> 0 bytes core/assets/ui/out/icon-defense.png | Bin 168 -> 198 bytes core/assets/ui/out/icon-dots-down.png | Bin 91 -> 0 bytes core/assets/ui/out/icon-dots.png | Bin 82 -> 0 bytes core/assets/ui/out/icon-down.png | Bin 114 -> 0 bytes core/assets/ui/out/icon-drive.png | Bin 95 -> 0 bytes core/assets/ui/out/icon-eraser.png | Bin 102 -> 0 bytes core/assets/ui/out/icon-file-audio.png | Bin 534 -> 0 bytes core/assets/ui/out/icon-file-image.png | Bin 387 -> 0 bytes core/assets/ui/out/icon-file-pdf.png | Bin 635 -> 0 bytes core/assets/ui/out/icon-file-text.png | Bin 99 -> 0 bytes core/assets/ui/out/icon-fill.png | Bin 100 -> 0 bytes core/assets/ui/out/icon-folder-new.png | Bin 573 -> 0 bytes core/assets/ui/out/icon-folder-parent.png | Bin 103 -> 0 bytes core/assets/ui/out/icon-folder-star.png | Bin 441 -> 0 bytes core/assets/ui/out/icon-folder.png | Bin 90 -> 0 bytes core/assets/ui/out/icon-grid.png | Bin 88 -> 0 bytes core/assets/ui/out/icon-home.png | Bin 105 -> 0 bytes core/assets/ui/out/icon-list-settings.png | Bin 677 -> 0 bytes core/assets/ui/out/icon-load-1.png | Bin 93 -> 0 bytes core/assets/ui/out/icon-load-2.png | Bin 95 -> 0 bytes core/assets/ui/out/icon-load-3.png | Bin 95 -> 0 bytes core/assets/ui/out/icon-lock-open.png | Bin 110 -> 0 bytes core/assets/ui/out/icon-lock.png | Bin 104 -> 0 bytes core/assets/ui/out/icon-minus.png | Bin 96 -> 0 bytes core/assets/ui/out/icon-open-gray.png | Bin 117 -> 0 bytes core/assets/ui/out/icon-open.png | Bin 98 -> 0 bytes core/assets/ui/out/icon-pencil.png | Bin 108 -> 0 bytes core/assets/ui/out/icon-pick.png | Bin 101 -> 0 bytes core/assets/ui/out/icon-plus.png | Bin 116 -> 0 bytes core/assets/ui/out/icon-redo.png | Bin 104 -> 0 bytes core/assets/ui/out/icon-refresh.png | Bin 580 -> 0 bytes core/assets/ui/out/icon-rename.png | Bin 83 -> 0 bytes core/assets/ui/out/icon-star-outline.png | Bin 670 -> 0 bytes core/assets/ui/out/icon-star.png | Bin 486 -> 0 bytes core/assets/ui/out/icon-tap.png | Bin 99 -> 0 bytes core/assets/ui/out/icon-trash.png | Bin 108 -> 0 bytes core/assets/ui/out/icon-undo.png | Bin 106 -> 0 bytes core/assets/ui/out/icon-up.png | Bin 107 -> 0 bytes core/assets/ui/out/icon-zoom.png | Bin 109 -> 0 bytes core/assets/ui/uiskin.atlas | 468 +++--------------- core/assets/ui/uiskin.json | 2 +- core/assets/ui/uiskin.png | Bin 19675 -> 11998 bytes core/src/io/anuke/mindustry/EffectLoader.java | 26 +- core/src/io/anuke/mindustry/Input.java | 6 +- core/src/io/anuke/mindustry/Renderer.java | 67 ++- core/src/io/anuke/mindustry/UI.java | 78 ++- core/src/io/anuke/mindustry/Vars.java | 3 +- core/src/io/anuke/mindustry/World.java | 8 + .../src/io/anuke/mindustry/ai/MHueristic.java | 4 +- .../anuke/mindustry/entities/BulletType.java | 18 +- .../io/anuke/mindustry/entities/Player.java | 4 + .../src/io/anuke/mindustry/ui/MenuDialog.java | 2 +- core/src/io/anuke/mindustry/world/Block.java | 60 ++- .../io/anuke/mindustry/world/Generator.java | 19 +- core/src/io/anuke/mindustry/world/Tile.java | 4 +- .../anuke/mindustry/world/blocks/Blocks.java | 25 + .../mindustry/world/blocks/RepairTurret.java | 2 +- .../anuke/mindustry/world/blocks/Turret.java | 2 +- .../mindustry/desktop/DesktopLauncher.java | 2 +- 69 files changed, 477 insertions(+), 527 deletions(-) delete mode 100644 core/assets/ui/out/icon-arrow-down.png delete mode 100644 core/assets/ui/out/icon-arrow-left.png delete mode 100644 core/assets/ui/out/icon-arrow-right.png delete mode 100644 core/assets/ui/out/icon-arrow-up.png delete mode 100644 core/assets/ui/out/icon-copy.png delete mode 100644 core/assets/ui/out/icon-cursor.png delete mode 100644 core/assets/ui/out/icon-dots-down.png delete mode 100644 core/assets/ui/out/icon-dots.png delete mode 100644 core/assets/ui/out/icon-down.png delete mode 100644 core/assets/ui/out/icon-drive.png delete mode 100644 core/assets/ui/out/icon-eraser.png delete mode 100644 core/assets/ui/out/icon-file-audio.png delete mode 100644 core/assets/ui/out/icon-file-image.png delete mode 100644 core/assets/ui/out/icon-file-pdf.png delete mode 100644 core/assets/ui/out/icon-file-text.png delete mode 100644 core/assets/ui/out/icon-fill.png delete mode 100644 core/assets/ui/out/icon-folder-new.png delete mode 100644 core/assets/ui/out/icon-folder-parent.png delete mode 100644 core/assets/ui/out/icon-folder-star.png delete mode 100644 core/assets/ui/out/icon-folder.png delete mode 100644 core/assets/ui/out/icon-grid.png delete mode 100644 core/assets/ui/out/icon-home.png delete mode 100644 core/assets/ui/out/icon-list-settings.png delete mode 100644 core/assets/ui/out/icon-load-1.png delete mode 100644 core/assets/ui/out/icon-load-2.png delete mode 100644 core/assets/ui/out/icon-load-3.png delete mode 100644 core/assets/ui/out/icon-lock-open.png delete mode 100644 core/assets/ui/out/icon-lock.png delete mode 100644 core/assets/ui/out/icon-minus.png delete mode 100644 core/assets/ui/out/icon-open-gray.png delete mode 100644 core/assets/ui/out/icon-open.png delete mode 100644 core/assets/ui/out/icon-pencil.png delete mode 100644 core/assets/ui/out/icon-pick.png delete mode 100644 core/assets/ui/out/icon-plus.png delete mode 100644 core/assets/ui/out/icon-redo.png delete mode 100644 core/assets/ui/out/icon-refresh.png delete mode 100644 core/assets/ui/out/icon-rename.png delete mode 100644 core/assets/ui/out/icon-star-outline.png delete mode 100644 core/assets/ui/out/icon-star.png delete mode 100644 core/assets/ui/out/icon-tap.png delete mode 100644 core/assets/ui/out/icon-trash.png delete mode 100644 core/assets/ui/out/icon-undo.png delete mode 100644 core/assets/ui/out/icon-up.png delete mode 100644 core/assets/ui/out/icon-zoom.png diff --git a/core/assets/maps/maze.png b/core/assets/maps/maze.png index 774cff12c55c95017c5b1a2ee9a9194c79be1747..eda20911bd73f1b031b42b19bfe5c3a85b7524b7 100644 GIT binary patch literal 1610 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 diff --git a/core/assets/maps/test.png b/core/assets/maps/test.png index 667762131777821d1bef33d186d535418fa0ddb7..2f49a602e1e9544136d25dd6634f66d4fffd102c 100644 GIT binary patch literal 2030 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4iHr><-C@Gfq}EYBeIx*fm;}a85w5Hkzin8 zU@!6Xb!C6ZDlEv(a?Ybqo`Hcuvcxr_#5q4VH#M(>!MP|ku_QG`p**uBL&4qCHz2%` zPn>~)J;T$*F{I+w+q;2zx2*&mE~=cEb;-6M_~NQ9?P;NZITB9z<(?GOEVOuDvz7m^ zhKOxE&+<)i%QLGOzx|xE%wAsp{(ilsI}}w9YJ9bP^eviVMW5c=j{7i^Y-p$33$Eu|FiwmgJP6?7$&^9d|#u1 zfkAE|5&%8=?1CyUG_W%5RkH3eLp{VwkG%FVGFEHY7I;i)3 z-iJ^8{|y-(j`{x=@BgR7FyZs%cxEihai%DgKxlYzFP3T3%;%L~&rb=8(eQzKfb;Gg z*|l=2xt7^Y!h8KLKhc`-cJuF&GM*XGWZJ-7!PoF%+VkJ1H-DX1zCrh2-Zw6|ob)_q z1(ov=S5xZ~n4k%}?TIDBu4ilh|9G7vj}S~`Kd^Al%j16~Z}P%57rbFuaqQ>5`Ri>P zIUyM%AtAnge+3_HEtAE1@bGk!m8N;2YcjV#x zj53Cp!gu^IO$icZ3=ZPceyiW-PJuaZ)duDR`~NO~U46;!01E>o_WsP0bqG55mr)qX z=Q+=(Ao%>B%l>>@VYnCOC9xY=Jpb1Kbt=Q9P0SJ#itCN;+@8m2zz9tbtKTrNJ-jpj z%=bODaD_kgts4%^`F;5OfAKfWFsB}9m33e^_lr>&nub1bmodyOddCkBoVjlp{GP3m zhnvg6Bv^DFeb z1DA3V^JEz=$lm{%j1_ z%6>rYo}y3pZ+4if3sYnncHiLr@MbS8g)&(5$TIl;kXty%J{#sfhwwKH8Rs@LCI8t2 zb0WjT8;k`~yBi;`*M-C=BZGpdHN&pQf23f#utx>Bv|zv**#t$gm`G3$ssc)EXJCTn h0n!|QAow3+>(W#D%cu6=XJBAp@O1TaS?83{1OO$ml9vDg delta 485 zcmaFI|A0lYGr-TCmrII^fq{Y7)59f*fq|g`ggKZP7#MtFzRj7asKCL@Z!DpH=!erp zPjz?3Tb?eCAr-gY-f{FhY#_jTq3ntA(()5aIi|moeX%k^p)}aR)nwkr&;OVMg8~D?m%EMf z_3R4v%Y4n|m&TSt1W$ZfzTkJ@^SU3Bde000XFoD#Kl{rd_sFjGuYWx;{D0eCd#Ok)&E>DB`o9f)xX~gqxDYL+ihR&veS0KIqxlYJiafB zrIkYNukLspR{#G=Y{0Ky9H;HeCoKGRyq2Xm^zU3Z=~eYd_$0Rcs^+l{u`mCy@Yl}Z z46phQTZgZgtsGvizTd)l;tIp#x@32Dh6^lK3=KYv4>YITXXLSIV&Gt4IQ)F;>`40t z%ed}+e>5(B6?vjCA; zpV|Co#iA=Y-iBW!eMDkPL?w3hE_|UjC*wjT>lNF!y3mE^wfDHZfAzg#uEeVxv*ef~ oYWs9|cQ8&~$Sx<5u&;)Re{sJ-JafJs0|Nttr>mdKI;Vst0O-Ek0RR91 diff --git a/core/assets/sprites/mindustry.atlas b/core/assets/sprites/mindustry.atlas index 2612cc4c24..aaf18f5303 100644 --- a/core/assets/sprites/mindustry.atlas +++ b/core/assets/sprites/mindustry.atlas @@ -1,12 +1,12 @@ mindustry.png -size: 256,32 +size: 512,32 format: RGBA8888 filter: Nearest,Nearest repeat: none block rotate: false - xy: 85, 11 + xy: 161, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -20,7 +20,7 @@ bossmech index: -1 bullet rotate: false - xy: 85, 1 + xy: 171, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -34,98 +34,98 @@ circle index: -1 coal1 rotate: false - xy: 97, 23 + xy: 181, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 107, 23 + xy: 191, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 117, 23 + xy: 201, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coaldrill rotate: false - xy: 127, 23 + xy: 211, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor rotate: false - xy: 137, 23 + xy: 221, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyormove rotate: false - xy: 147, 23 + xy: 231, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 core rotate: false - xy: 157, 23 + xy: 241, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 167, 23 + xy: 251, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 177, 23 + xy: 261, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 187, 23 + xy: 271, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtblock rotate: false - xy: 197, 23 + xy: 281, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 doubleturret rotate: false - xy: 37, 21 + xy: 51, 7 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 drill rotate: false - xy: 207, 23 + xy: 291, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 fastmech rotate: false - xy: 217, 23 + xy: 301, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -139,105 +139,126 @@ firemech index: -1 flameturret rotate: false - xy: 37, 9 + xy: 65, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 furnace rotate: false - xy: 227, 23 + xy: 311, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter rotate: false - xy: 227, 23 + xy: 311, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -grass +grass1 rotate: false - xy: 237, 23 + xy: 321, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +grass2 + rotate: false + xy: 331, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +grass3 + rotate: false + xy: 341, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +grassedge + rotate: false + xy: 37, 19 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 icon-coal rotate: false - xy: 247, 23 + xy: 351, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 98, 13 + xy: 361, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 108, 13 + xy: 371, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 118, 13 + xy: 381, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron1 rotate: false - xy: 128, 13 + xy: 391, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron2 rotate: false - xy: 138, 13 + xy: 401, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron3 rotate: false - xy: 148, 13 + xy: 411, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill rotate: false - xy: 158, 13 + xy: 421, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ironwall rotate: false - xy: 168, 13 + xy: 431, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 junction rotate: false - xy: 178, 13 + xy: 441, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laser rotate: false - xy: 95, 7 + xy: 63, 5 size: 1, 12 orig: 1, 12 offset: 0, 0 @@ -251,175 +272,238 @@ laserend index: -1 machineturret rotate: false - xy: 49, 21 + xy: 77, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 mech1 rotate: false - xy: 188, 13 + xy: 451, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 megarepairturret rotate: false - xy: 49, 9 + xy: 89, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 player rotate: false - xy: 198, 13 + xy: 461, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 repairturret rotate: false - xy: 61, 21 + xy: 101, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +rock + rotate: false + xy: 471, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +rock2 + rotate: false + xy: 481, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +rock2shadow + rotate: false + xy: 491, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +rockshadow + rotate: false + xy: 501, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 router rotate: false - xy: 208, 13 + xy: 66, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shadow rotate: false - xy: 61, 9 + xy: 113, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shotgunturret rotate: false - xy: 73, 21 + xy: 125, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 sniperturret rotate: false - xy: 73, 9 + xy: 137, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 steelconveyor rotate: false - xy: 218, 13 + xy: 66, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyormove rotate: false - xy: 228, 13 + xy: 76, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall rotate: false - xy: 238, 13 + xy: 76, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone rotate: false - xy: 98, 3 - size: 8, 8 - orig: 8, 8 + xy: 37, 5 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 +stoneedge + rotate: false + xy: 37, 5 + size: 12, 12 + orig: 12, 12 offset: 0, 0 index: -1 stone1 rotate: false - xy: 108, 3 + xy: 86, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 118, 3 + xy: 86, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 128, 3 + xy: 96, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock rotate: false - xy: 138, 3 + xy: 96, 1 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +stoneblock2 + rotate: false + xy: 106, 11 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +stoneblock3 + rotate: false + xy: 106, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonedrill rotate: false - xy: 148, 3 + xy: 116, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonedrillhead rotate: false - xy: 148, 3 + xy: 116, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonewall rotate: false - xy: 158, 3 + xy: 116, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 turret rotate: false - xy: 85, 21 + xy: 149, 21 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +water + rotate: false + xy: 126, 11 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +wateredge + rotate: false + xy: 51, 19 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 weapon-blaster rotate: false - xy: 168, 3 + xy: 126, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapon-flamethrower rotate: false - xy: 178, 3 + xy: 136, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapon-multigun rotate: false - xy: 188, 3 + xy: 136, 1 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapon-trishot rotate: false - xy: 198, 3 + xy: 146, 11 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/mindustry.png b/core/assets/sprites/mindustry.png index 4a8fe946214fe7406147f080732297c24267bdb9..701b9ddd612fd8c710fd4b59783007aaaf28061b 100644 GIT binary patch literal 6045 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 literal 4662 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 NgQu&X%Q~loCIF8VlZOBR diff --git a/core/assets/ui/out/icon-arrow-down.png b/core/assets/ui/out/icon-arrow-down.png deleted file mode 100644 index f2d8a31be4d65788d74116ef8e4f542436fb49d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7ilbvf-|3ldfGPD)*@eWZ0`6_c}|nR!yE%dGSdtY({(7!J8;9Xpk@ Sx{!f^fx*+&&t;ucLK6Vz?IRih diff --git a/core/assets/ui/out/icon-arrow-left.png b/core/assets/ui/out/icon-arrow-left.png deleted file mode 100644 index 6b09154e22eaabc46b551a92e9955dfe156c45c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7H5bnOOcMX&g&B6ra;o7|G7`e}bs;?4~})2kbtEdaWlO=-aLS|7ep`>_u~)^9h{u hzDG2--(X;8xLKhyLrrbFIRgU&gQu&X%Q~loCIA3YEO-C_ diff --git a/core/assets/ui/out/icon-arrow-up.png b/core/assets/ui/out/icon-arrow-up.png deleted file mode 100644 index a87cf432491efa5973494f8fae6caa3bb420b2e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7oenU}Iv)U!rxauKAe~ Q0|Nttr>mdKI;Vst0NpDiWdHyG diff --git a/core/assets/ui/out/icon-copy.png b/core/assets/ui/out/icon-copy.png deleted file mode 100644 index a3fa5cdeb30676370025e9aac777f56f1dde9bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7FVdQ&MBb@ E0AOn%C;$Ke diff --git a/core/assets/ui/out/icon-defense.png b/core/assets/ui/out/icon-defense.png index eee954f18600371b6053434aa5bbcbaa05aad903..d879ca6c44674721fc581e22e0b0ff4f5b4dbe31 100644 GIT binary patch delta 142 zcmZ3%c#Ls^Lp`go2#b{DLZuJ}28L8m7sn8Z%gKML6?z!imV~nz+3?2qA52R~NJ#im ztU3Ri8mP78J1-V%(RMn S^Mrwcfx*+&&t;ucLK6Us^DJBd diff --git a/core/assets/ui/out/icon-dots-down.png b/core/assets/ui/out/icon-dots-down.png deleted file mode 100644 index 3aeebb694a44df28aba4e5b9aa7db400e40fd362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7S twUw=+%}*o>H2&}(y%KDZWg5Z9kW>HP_I~NUhYSo144$rjF6*2UngAZL8}`yQp z_9zixo@HC{b1|RPCBCEu6Perlo83+;<}ffgT`RgGuY6d7fq{X+)78&qol`;+0G%!z AF#rGn diff --git a/core/assets/ui/out/icon-eraser.png b/core/assets/ui/out/icon-eraser.png deleted file mode 100644 index 6e3fec3e950946b385495a260eaaa039396680be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7zopr E02k*SeEeOcQ@;v zzNW<4Did-4V$R;Q`)6ifKWF`6wSVs3`~U3T@16Pctj(meY2FR19ZoT9Ov<%(d(nR` z=V2l5tO`c?eIH$Oom5xm+f7nG(_rgrq;^RqL&P(B*|bkBf>Sppe`nk(S7bXSY`gDJ`tdz*VEQ>3;vrS##Ngr1vVnTg$VOdwHjN tiMNfkxq|B+9!JJq_qyKLu!{a;;GEBywE3_d9|HpegQu&X%Q~loCIIKf>f8VT diff --git a/core/assets/ui/out/icon-file-image.png b/core/assets/ui/out/icon-file-image.png deleted file mode 100644 index f543b4b0936c98f0e590e19cab59385d1f3ecd00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmeAS@N?(olHy`uVBq!ia0y~yV31;9V36ZrV_;w~y3Kckfq~J>)5S5Q;?~t`8@-qv z1&)2>?U)pCOv|Y&BC;b?EB?S{fsc%De6nXMElrqzto=gN>;+8;>fg9Bb8>WBRxq01 zKPam+dFI`nXH}0h){DNYyP2vlp1ihp>*n*)w_J|t&fnWzo$S@LC*u7IYgXQ=wHy&u z>)DR7_1@K7(P`y#`^lptJJXgN)R@9?|H}>L*hQ-amNnJ|-evxJ(Tn4)hWr>Wz-z!zmQpL*ug((gF0940<$Pl2EHnH=1a`Kio;zOc9ncCVev3dJTZ5t z!yStN-mOfzQyDW?{qcTbV14S2=2}+~pBBR3- zHpJQ=GTi4Jf9Cwme~n+)xXj8}!Lg|A8h1{(Nl9DWoawO_r>gTe~DWM4fpKqm^ diff --git a/core/assets/ui/out/icon-file-pdf.png b/core/assets/ui/out/icon-file-pdf.png deleted file mode 100644 index 428b09acaa4cc30b2ca2ffe20c6c095db7ea246d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmeAS@N?(olHy`uVBq!ia0y~yV31*8U{K;>EaktaqH?dUyqPL ziMD?GZbg#~XA<3RX{1e9P`Fl%GcU$tb(5H$PtzeW*TC+Qi3%J^GX$EZaJxE+Z`EQ_ zEK!!=R8Hd1jIxptWcfSc@gbAr-%nT{(blPy!UnA3tWt5%AB7t zeE|c9aMqEe%TDvQ2yT8*VKuX-qUPwV3)4*|dhBSKA1P(OrOG3D*{5Ym`SCj|PrkO6 z*s=V{*QWKiJo;xY+166-uv32J@(bFRI9lUZ`YzO8nfq{Gko2MO1+K{+ukQ)YcC!EY zY`<_=!?W6q&6++FnddcU2Bc-ky*{*Cfp1>J_G_(d8*_eYPT-x_=yBnYufbv&dETfU ztosV~%iZCM+HoT0rorh4ju#HuJv-MtUm+)UMd>3^)&1HN^sdTTF_axJ|6u(>@L6-| z2RW0ElFg3)ewfcJpKW}Oz3ta7@U`d6-` z+2&NrqxffQihc{0G<54E&e&AHM{j#}!jITEQ*AqQl yTAUQGKbat{EBtf%`|d^OI0J3=Jac;XhN&rhXNui=cW(v;1_n=8KbLh*2~7Y1&?iR# diff --git a/core/assets/ui/out/icon-file-text.png b/core/assets/ui/out/icon-file-text.png deleted file mode 100644 index d4730f545e84125ea1ae3a6b61d98b932c7f2c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%70Ui7TYd_cgTe~DWM4f D`uQG! diff --git a/core/assets/ui/out/icon-folder-new.png b/core/assets/ui/out/icon-folder-new.png deleted file mode 100644 index eac3222a9805c82a2de03481cf05e0b5eaa914a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmeAS@N?(olHy`uVBq!ia0y~yU{GdYV36ftV_;xVSb4RDfq{v|)5S5Q;?~*e-Wo1} z636$(b02L|`NVb9Nk=EeX7REVM>$n%?#|Y^y-QLQ-zO=$Zc0pjD45!KL*r?rP}irp z1sw}t*ME|&jlFJi*w%R8ud8$4&wKgj*_`)tjE^677N50DGHJOlk48y@%>(WI=^LNa zAAWhEQ>8)r>_-WMUxoYm=APN~EauFrNhdGN;s0%9f3<`8h*gC49FyIqKiMUNCmKzj z^;_w;{mF=ZDRzacefp++++9(&+h^SrPMexP_C^c4!}TUsGW~wDnRm^_;(b#%=i7yA zedasnU~;vsNAdydsxQC$v}UTl(vV%#6jI>y-pg|Z?~m0}D%o5WWO^>W=y<^}_kqxn z&3_oThMO71D)^Ppn%^W+b$wNK{Q9a{QZIBiZHy7)V0PEJzB+4G*-E=3uPT{URaBEZ z%3>tB54cbDvF~6|R1m(>$S_HukX!9VB|D3;;Kp4-XQsSlej75UIzh(dQpTFiWlpEK zvNC3c9cVt_Gc#_|&)gYWmy;EgU!@D@Y`kN7gWMln~&Z*5R4}7<`duzQao^{M? z)l`iDo>>PMc$hS53a>Ez!LHs_GJEYjv8uX<&xPWBR|%9aaWyNtsxZmTStGM{eVGXZ0|SGntDnm{r-UW|FuDE` diff --git a/core/assets/ui/out/icon-folder-parent.png b/core/assets/ui/out/icon-folder-parent.png deleted file mode 100644 index 36aa4ca1d6cf1518c4470a4fe343ed2d849b4064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7EaktaVvR3+>ee% zfobop4=tE?_2`24QU^Z#|6iXnhvUfVjsqtRY=zbRj&vOq6Xd=i^N{1n|9`^lbqBsY zWD&7=@}~aL!T2UVN8>pWI&4RbJr5Wc%yeDpyrONQ>?4*VyI=P3ZnRW+W&gMFb4U4! zR|g+VnD3y&b;Q5GlEvrpLB;Ha)4uUyI+z!00sNZ-) zt|PMH27ib1#RBrHQ=D-a6=b zu3h2C{=6}QvEy#T4@o}L`wbTI9g-_&x)rc)Hx%$cuDD-3dpAqeqq9ql!j1|nEih5- zxoEK{@bqaR-Ih&_Kh!2g*zA?L#JjaXT)^A$sKr7~NfxsNip^J?gyph_>COH3StW;cOY`=;Ln)2R71xNyFnxU>He=eae+{SptLn(Fx%8gl1f%@{ zqaBR94j7#1nYN)mVfIh6gRD`K$L~$NaXP`}Q~&CgnHu6pMT%MPEUXS=^69Ys$t^}qCAa?$+gx-`4}CyNZ-XWu>k z=j{}M*^}Oz-__Y=Qe0~udwiASq!}}Au`7t4(M~$7*SzKl<^HTOnxmP>EXSt)K2TT8puZ6G8b=NT1EYT5JZGBKq zqbt|EVx=eBO|G?XF2-N;JmZ>CIU_V)~BkP*F-s?E63z!`Ivg&nDpwl(GTnWPkWz! ot?Cs_V~bxdH0jZgA2#mC9iFLm@14Arfq{X+)78&qol`;+0PQq3^8f$< diff --git a/core/assets/ui/out/icon-load-1.png b/core/assets/ui/out/icon-load-1.png deleted file mode 100644 index 13ca6f50c8f3a152ede93e17c260af6912d89fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7S(V?*Pe8pfq{X+)78&qol`;+086eM4FCWD diff --git a/core/assets/ui/out/icon-load-2.png b/core/assets/ui/out/icon-load-2.png deleted file mode 100644 index 22896d7007304dbb3b9c23a3019ad059bca8b578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7Xfx*+&&t;ucLK6Ul(;TA! diff --git a/core/assets/ui/out/icon-load-3.png b/core/assets/ui/out/icon-load-3.png deleted file mode 100644 index fe5ec601a8dbfafdba54c3bacd509a7f4a0da821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7l=R@ujlyD&AM2_h0Q`V=wfdOJ45$@!wNF@CEqeIFfe$!`njxgN@xNA&l?@) diff --git a/core/assets/ui/out/icon-open-gray.png b/core/assets/ui/out/icon-open-gray.png deleted file mode 100644 index d2d1df62d6e0c6eba6b094efb549beddc082bd35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7+p45_%4{Nw+Bd*`Gi zr8u6TX5UBlB8xj72emAen6D&qv_<5gXmYW5nAy#F2iFRSxMd`EE)r1l-{Qou^UpGV V>%+I_F)%PNc)I$ztaD0e0sxVPCM*B| diff --git a/core/assets/ui/out/icon-open.png b/core/assets/ui/out/icon-open.png deleted file mode 100644 index 4215ba24fd84b88931cb8be25fc6ffc42e4d3d34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7-(d_$r3EzThgmdKI;Vst E09Gv^5dZ)H diff --git a/core/assets/ui/out/icon-plus.png b/core/assets/ui/out/icon-plus.png deleted file mode 100644 index 381dd1ae4f94b4b6314be4f9a4b289f907f97a81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7l1mbFnlE56@j}rP{gB|J=R4MkrPeh?)L-DYSaHILV^QPuO`9fKoaD-@ zj{mmy@xwjqZnd#i$?2WXo}YYkTkg(v*_M6DQ%|RAPd-`kAYF&wX=_yKe)pSJ+H?J) zYgj}*D%dCOSNijvtw}MV*XkY9Z3m`~fVnIDxqmDut5@=TED*pjFShbZqm6)AN6e(P z)k=*CLK;l-*HxA^@9b-$FsdSP8g-jn=$m{b+qgG<>=RCA?GoEBzC zRS1;qVtF*lRes^ob(wBARjmX}4s0@PUTec8GrJ?KF@K%W`X3K<0>my{>nw^nIyFsY z$7U@?vkrBsWx;3M_Gs63@Rtb8ROc#g^;fyxStI%GNHMQwjtsM$q@T;Ay3Y&tH7fjb zHPNViAG}aZbm!BK#KcnxhTcA#uH*{c@zB4+#{IMXyo%NyA0@A%zxNDkSp^eg7>c_z zW!dv~*j4|NI_Z+@IqRgBOU=IDi?WYj>RpjABcxEJz3JcYH|s9@%EmR#p0d!DyFa@~ z_eD9s&q){AqerhVIj!gK`6Hz8<3s7>Mtk=)D_pM^tnFX@M=U~2HX^Pi)%eSW7c2q~ zoS$*b5SV9P!*y|Thv?6i%vGSWOu#=lQ?hr0(~KVhR* z%lxS!=7H$?voEDInNEplu*(^~loE_SoZT<6cu}MZ%c@3U=lma?g8P@Xorskc^<-}9 zVoIFjZhELo>fj2t_|;|)=CQaLSR^=gpN!h>k@S2bn}w4NX#$ zjY!D0$xBS>INBEA{Og-q?nfc#E!BPzI-bUzvo}`PZn4ewVPW%VisDvY#HMGEcmG_= zV(0$OoCQBr#fCVYZHt4pEV9#4X&SFdARppwRcc=bDFd~;p#o<24=JTYrTROh4Vah ze~6ruGTc6W&a=c@iJ`p}fhm$FF8-N3m(}NS8J|aafA2&=PhE@LrYTwpUe`S~b#bz{ d38hHQ|8~CjfJyjVF9rq%22WQ%mvv4FO#sE`Bl-XU diff --git a/core/assets/ui/out/icon-star.png b/core/assets/ui/out/icon-star.png deleted file mode 100644 index 882eeaa5eb4ba15d376c010af225cb29b1aa22b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV31>AV36TpV_;w?`@z4Gfq`+Yr;B4q#jWIo6*tZ} zaQ*xL-=0U?$#6!0c>GsBwzg-7d3f$Vmyr0i-oPW>H%Wn0A(HFRRfm{X9XFi~n~N8n zc%> zy7T&vKB`oS?n%>7Ji~ZIenZ3`!46AL!|sso!~Y($EnE^M!*S%P%cI~59Xr=1%SN6H z3bTI9uS*aV_^eQE&(U%J(gml0TOCJ4k8g6QX<(Zs=e#bUKvge*aU%bb{VNh4<}2hm z=p}S`UR~x;Gn>i#J@ZCWv&|2GN_ZEp2EA~~N;8VSpB<-~CNbrLVj;E^wq6$>6 sCdq%1YUSX*xKXAkl;dz^Wh)QE_bzU=a?_|u3=9kmp00i_>zopr0Go=-6aWAK diff --git a/core/assets/ui/out/icon-tap.png b/core/assets/ui/out/icon-tap.png deleted file mode 100644 index da623aa3937b5da3543d6b0927c27c45aeacf80b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7!;Mp8qe3{yU!h_P^tz2^r@nh}cvZG915bcOkkyZ7l->1B0ilpUXO@geCw# CuOONL diff --git a/core/assets/ui/out/icon-trash.png b/core/assets/ui/out/icon-trash.png deleted file mode 100644 index cdf603b8cea707e424ace119764609aea2a0583c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7tvtnU2AbMc_F05ik9yFq(wE_K1K$*f{S5`%b(!{KmY&$ diff --git a/core/assets/ui/uiskin.atlas b/core/assets/ui/uiskin.atlas index c88288f61f..e041fb39c8 100644 --- a/core/assets/ui/uiskin.atlas +++ b/core/assets/ui/uiskin.atlas @@ -1,19 +1,19 @@ uiskin.png -size: 1024,128 +size: 512,128 format: RGBA8888 filter: Nearest,Nearest repeat: none blank rotate: false - xy: 898, 76 + xy: 116, 2 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 border rotate: false - xy: 134, 2 + xy: 90, 3 size: 12, 12 split: 4, 4, 4, 4 orig: 12, 12 @@ -21,21 +21,21 @@ border index: -1 border-circle rotate: false - xy: 498, 64 + xy: 136, 12 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 border-circle-error rotate: false - xy: 528, 64 + xy: 166, 10 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 border-dark-blue rotate: false - xy: 648, 87 + xy: 84, 12 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -43,7 +43,7 @@ border-dark-blue index: -1 border-error rotate: false - xy: 241, 41 + xy: 76, 54 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -51,7 +51,7 @@ border-error index: -1 border-white rotate: false - xy: 120, 2 + xy: 367, 6 size: 12, 12 split: 4, 4, 4, 4 orig: 12, 12 @@ -67,7 +67,7 @@ bump index: -1 button rotate: false - xy: 991, 86 + xy: 327, 14 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -75,7 +75,7 @@ button index: -1 button-blue rotate: false - xy: 705, 86 + xy: 223, 44 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -84,7 +84,7 @@ button-blue index: -1 button-blue-down rotate: false - xy: 653, 86 + xy: 171, 40 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -93,7 +93,7 @@ button-blue-down index: -1 button-blue-over rotate: false - xy: 679, 86 + xy: 197, 40 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -102,7 +102,7 @@ button-blue-over index: -1 button-down rotate: false - xy: 731, 86 + xy: 249, 44 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -110,7 +110,7 @@ button-down index: -1 button-gray rotate: false - xy: 783, 86 + xy: 301, 44 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -119,7 +119,7 @@ button-gray index: -1 button-gray-over rotate: false - xy: 757, 86 + xy: 275, 44 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -128,7 +128,7 @@ button-gray-over index: -1 button-map rotate: false - xy: 861, 86 + xy: 110, 20 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -136,7 +136,7 @@ button-map index: -1 button-map-down rotate: false - xy: 809, 86 + xy: 58, 12 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -144,7 +144,7 @@ button-map-down index: -1 button-map-over rotate: false - xy: 835, 86 + xy: 84, 20 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -152,7 +152,7 @@ button-map-over index: -1 button-over rotate: false - xy: 887, 86 + xy: 223, 2 size: 24, 40 split: 10, 10, 8, 8 orig: 24, 40 @@ -160,7 +160,7 @@ button-over index: -1 button-red rotate: false - xy: 913, 86 + xy: 249, 2 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -169,7 +169,7 @@ button-red index: -1 button-select rotate: false - xy: 138, 16 + xy: 196, 14 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -177,7 +177,7 @@ button-select index: -1 button-window-bg rotate: false - xy: 939, 86 + xy: 275, 2 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -186,7 +186,7 @@ button-window-bg index: -1 button-window-over rotate: false - xy: 965, 86 + xy: 301, 2 size: 24, 40 split: 10, 10, 10, 8 pad: 8, 8, 2, 2 @@ -195,77 +195,77 @@ button-window-over index: -1 check-off rotate: false - xy: 503, 94 + xy: 353, 31 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 533, 94 + xy: 383, 31 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 563, 94 + xy: 413, 31 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 clear rotate: false - xy: 634, 62 + xy: 327, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 color-picker-bar-selector rotate: false - xy: 618, 60 + xy: 327, 56 size: 14, 28 orig: 14, 28 offset: 0, 0 index: -1 color-picker-cross rotate: false - xy: 648, 74 + xy: 339, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 color-picker-selector-horizontal rotate: false - xy: 335, 83 + xy: 76, 59 size: 6, 1 orig: 6, 1 offset: 0, 0 index: -1 color-picker-selector-vertical rotate: false - xy: 1017, 86 + xy: 220, 6 size: 1, 6 orig: 1, 6 offset: 0, 0 index: -1 cursor rotate: false - xy: 76, 56 + xy: 136, 56 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 cursor-normal rotate: false - xy: 646, 62 + xy: 196, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 default-pane rotate: false - xy: 164, 37 + xy: 466, 77 size: 5, 3 split: 1, 1, 1, 1 orig: 5, 3 @@ -273,7 +273,7 @@ default-pane index: -1 default-pane-no-border rotate: false - xy: 498, 94 + xy: 118, 17 size: 1, 1 split: 0, 0, 0, 0 orig: 1, 1 @@ -289,7 +289,7 @@ default-select index: -1 default-select-selection rotate: false - xy: 898, 71 + xy: 116, 12 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -297,46 +297,18 @@ default-select-selection index: -1 grey rotate: false - xy: 340, 80 + xy: 509, 23 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 menu-bg rotate: false - xy: 340, 80 + xy: 509, 23 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 -icon-arrow-down - rotate: false - xy: 660, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-arrow-left - rotate: false - xy: 658, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-arrow-right - rotate: false - xy: 672, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-arrow-up - rotate: false - xy: 670, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 icon-close rotate: false xy: 217, 86 @@ -358,317 +330,37 @@ icon-close-over orig: 40, 40 offset: 0, 0 index: -1 -icon-copy - rotate: false - xy: 684, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-cursor - rotate: false - xy: 682, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 icon-defense rotate: false - xy: 696, 74 + xy: 208, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 694, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-dots - rotate: false - xy: 708, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-dots-down - rotate: false - xy: 706, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-down - rotate: false - xy: 720, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-drive - rotate: false - xy: 82, 4 - size: 36, 10 - orig: 36, 10 - offset: 0, 0 - index: -1 -icon-eraser - rotate: false - xy: 718, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-file-audio - rotate: false - xy: 593, 90 - size: 28, 36 - orig: 28, 36 - offset: 0, 0 - index: -1 -icon-file-image - rotate: false - xy: 219, 54 - size: 26, 30 - orig: 26, 30 - offset: 0, 0 - index: -1 -icon-file-pdf - rotate: false - xy: 623, 92 - size: 28, 34 - orig: 28, 34 - offset: 0, 0 - index: -1 -icon-file-text - rotate: false - xy: 732, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-fill - rotate: false - xy: 730, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-folder - rotate: false - xy: 744, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-folder-new - rotate: false - xy: 466, 97 - size: 35, 29 - orig: 35, 29 - offset: 0, 0 - index: -1 -icon-folder-parent - rotate: false - xy: 742, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-folder-star - rotate: false - xy: 430, 66 - size: 34, 26 - orig: 34, 26 - offset: 0, 0 - index: -1 -icon-grid - rotate: false - xy: 756, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-home - rotate: false - xy: 754, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-list-settings - rotate: false - xy: 171, 46 - size: 38, 34 - orig: 38, 34 - offset: 0, 0 - index: -1 -icon-load-1 - rotate: false - xy: 768, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-load-2 - rotate: false - xy: 766, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-load-3 - rotate: false - xy: 780, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-lock - rotate: false - xy: 778, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-lock-open - rotate: false - xy: 792, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-minus - rotate: false - xy: 790, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-open - rotate: false - xy: 804, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-open-gray - rotate: false - xy: 802, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-pencil - rotate: false - xy: 816, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-pick - rotate: false - xy: 814, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-plus - rotate: false - xy: 828, 74 + xy: 104, 5 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 826, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-redo - rotate: false - xy: 840, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-refresh - rotate: false - xy: 247, 54 - size: 26, 30 - orig: 26, 30 - offset: 0, 0 - index: -1 -icon-rename - rotate: false - xy: 838, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-star - rotate: false - xy: 466, 67 - size: 30, 28 - orig: 30, 28 - offset: 0, 0 - index: -1 -icon-star-outline - rotate: false - xy: 430, 94 - size: 34, 32 - orig: 34, 32 - offset: 0, 0 - index: -1 -icon-tap - rotate: false - xy: 852, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-trash - rotate: false - xy: 850, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-undo - rotate: false - xy: 864, 74 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-up - rotate: false - xy: 862, 62 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-zoom - rotate: false - xy: 876, 74 + xy: 389, 19 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 list-selection rotate: false - xy: 78, 2 + xy: 220, 3 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 padded-list-selection rotate: false - xy: 58, 5 + xy: 104, 2 size: 10, 1 split: 4, 4, 0, 1 orig: 10, 1 @@ -676,49 +368,49 @@ padded-list-selection index: -1 progressbar rotate: false - xy: 1017, 94 + xy: 503, 22 size: 1, 32 orig: 1, 32 offset: 0, 0 index: -1 progressbar-filled rotate: false - xy: 1020, 94 + xy: 506, 22 size: 1, 32 orig: 1, 32 offset: 0, 0 index: -1 progressbar-filled-vertical rotate: false - xy: 207, 43 + xy: 84, 17 size: 32, 1 orig: 32, 1 offset: 0, 0 index: -1 progressbar-vertical rotate: false - xy: 207, 40 + xy: 353, 20 size: 32, 1 orig: 32, 1 offset: 0, 0 index: -1 radio-off rotate: false - xy: 558, 64 + xy: 443, 44 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 radio-on rotate: false - xy: 588, 60 + xy: 473, 52 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 scroll rotate: false - xy: 171, 38 + xy: 430, 74 size: 34, 6 split: 4, 4, 2, 2 orig: 34, 6 @@ -726,7 +418,7 @@ scroll index: -1 scroll-horizontal rotate: false - xy: 130, 26 + xy: 502, 92 size: 6, 34 split: 2, 2, 0, 34 pad: 0, 5, 5, 4 @@ -735,7 +427,7 @@ scroll-horizontal index: -1 scroll-knob-horizontal rotate: false - xy: 211, 46 + xy: 503, 56 size: 6, 34 split: 2, 2, 0, 34 pad: 0, 5, 13, 12 @@ -744,7 +436,7 @@ scroll-knob-horizontal index: -1 scroll-knob-vertical rotate: false - xy: 219, 46 + xy: 353, 23 size: 34, 6 split: 12, 12, 2, 2 orig: 34, 6 @@ -752,98 +444,98 @@ scroll-knob-vertical index: -1 select-box-list-bg rotate: false - xy: 340, 77 + xy: 466, 74 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 window-bg rotate: false - xy: 340, 77 + xy: 466, 74 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 select-down rotate: false - xy: 148, 6 + xy: 58, 2 size: 14, 8 orig: 14, 8 offset: 0, 0 index: -1 select-up rotate: false - xy: 255, 44 + xy: 74, 2 size: 14, 8 orig: 14, 8 offset: 0, 0 index: -1 selection rotate: false - xy: 588, 91 + xy: 81, 56 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 separator rotate: false - xy: 148, 3 + xy: 121, 12 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 tree-over rotate: false - xy: 148, 3 + xy: 121, 12 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 separator-menu rotate: false - xy: 271, 51 + xy: 469, 74 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 130, 16 + xy: 509, 46 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 58, 8 + xy: 430, 82 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-knob-disabled rotate: false - xy: 82, 16 + xy: 454, 82 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 106, 16 + xy: 478, 82 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 106, 16 + xy: 478, 82 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 58, 2 + xy: 343, 62 size: 8, 1 orig: 8, 1 offset: 0, 0 @@ -858,42 +550,42 @@ slot index: -1 splitpane rotate: false - xy: 68, 2 + xy: 343, 59 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 splitpane-over rotate: false - xy: 70, 5 + xy: 343, 56 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 splitpane-vertical rotate: false - xy: 133, 16 + xy: 509, 36 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 splitpane-vertical-over rotate: false - xy: 138, 52 + xy: 509, 26 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 sub-menu rotate: false - xy: 888, 70 + xy: 126, 4 size: 8, 14 orig: 8, 14 offset: 0, 0 index: -1 textfield rotate: false - xy: 305, 56 + xy: 473, 22 size: 28, 28 split: 6, 6, 6, 6 orig: 28, 28 @@ -901,7 +593,7 @@ textfield index: -1 textfield-over rotate: false - xy: 275, 56 + xy: 443, 14 size: 28, 28 split: 2, 2, 2, 2 orig: 28, 28 @@ -909,7 +601,7 @@ textfield-over index: -1 tooltip-bg rotate: false - xy: 908, 81 + xy: 121, 15 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -924,21 +616,21 @@ touchpad-knob index: -1 tree-minus rotate: false - xy: 874, 62 + xy: 401, 19 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 tree-plus rotate: false - xy: 634, 74 + xy: 353, 2 size: 12, 16 orig: 12, 16 offset: 0, 0 index: -1 tree-selection rotate: false - xy: 164, 32 + xy: 430, 69 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 @@ -946,7 +638,7 @@ tree-selection index: -1 white rotate: false - xy: 335, 78 + xy: 473, 17 size: 3, 3 orig: 3, 3 offset: 0, 0 @@ -961,7 +653,7 @@ window index: -1 window-border-bg rotate: false - xy: 246, 41 + xy: 136, 7 size: 3, 3 split: 1, 1, 1, 1 orig: 3, 3 diff --git a/core/assets/ui/uiskin.json b/core/assets/ui/uiskin.json index ea3db6d49a..0308800aa4 100644 --- a/core/assets/ui/uiskin.json +++ b/core/assets/ui/uiskin.json @@ -19,7 +19,7 @@ com.badlogic.gdx.graphics.Color: { menuitem: {a: 1, b: 0.65, g: 0.65, r: 0.65 }, link-label: {a: 1, b: 0.886, g: 0.631, r: 0.105 } }, -io.anuke.ucore.scene.style.Styles$TintedDrawable: { +io.anuke.ucore.scene.Skin$TintedDrawable: { dialogDim: {name: white, color: {r: 0, g: 0, b: 0, a: 0.45} } }, io.anuke.ucore.scene.ui.Button$ButtonStyle: { diff --git a/core/assets/ui/uiskin.png b/core/assets/ui/uiskin.png index 21611d8d068ba1550c74bd417bb7613ac0f6cce1..3b83a255ca366281396e2b5921f9cdb0a3f085b3 100644 GIT binary patch literal 11998 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 literal 19675 zcmeAS@N?(olHy`uVBq!ia0y~yU}0cjU})fAV_;yI`bgS?fx%~yr;B4q#jUqpy0?VGO2;vLV-_DBd?)v!5XG>Co~rHEqct+WtAA8+P-A7-~~bU z0trXe70en+4>YX3tT-7DX=y$Bv+>{W(7aZ!rK@(W+P!L*wdM25bCdnbbMMB+-hICJ zd)@SnS?jFjqVrB}x3lT}`|jTIo4&ETX8*dUxPGH!a`-0k`*tA@Gp49`D*jx3Xny3o zU&2%8&6jl+U~z&G_r+y9%9duvN) z?%iEmC%xRaHT(Le@_Uu-XJ;C>`_8eL*eh!tW(IS;01JbF9>WHi6xRdOn?D!k5~Pp9k)GiE)PT6xjB&=@9ijj{GqW0<{T!5j(u_rcXxkJ z(GFktg^MBMd-C`Cw}0FEr5PCBz7Bc%@#Ev;!4syRI6Yl|dc_6vubWa&tE5&&P3M6I zp8yLZLkkbXyPePF!g(12{#lehoo|vk$z`5R<)$rZXQd8*@bAB9bn4TcPro4H4I&vF zb}%>;on&Bm^ieZ-*@n!^%WTiHM>F@vhJ{`~mj8ZXn7Z@j<>md0N>73`K)lPq zz~C^2nL+NEB>!iVb^j~5emwc|r6lw6GGEb$^Ybp(o_f4F?W~k(@-d#uy(@#4KVs&D zJCZ@bnBjn~!UGY8g0&nEq+iOPbp5-6Ph6>g1(yD(p|NQ)X^OrAQp0C_Ge^1g;uA8U+-&ve7v-0yZ zLsljSxO*8G`j{Ko_8n8SY;tB;R43)IN$bz%o*tfQQ>T8l*}mkXMpe(WKm`Vf-#{b- z1A~AwL&EE8YhQghziIR4n~Pk#=bb-&dh&^GaecX|lP4?NFLPjkrphJ-4hDs33=Ug2 z`W>|QKKI=};rO$A+STX(9KVtNQa|9w`hvK)d2fz(i*G*vGkHtTraei>8nYN1UYV90 zz4XXEw)FGrsE{Aa^zLfk`G2*3!=5+WSGAOw^CEfO#hRhu?GM+0=`ovx{;7&GOc3E% z!1a96X*NWvW&#xi2yPRY%K%GcO$rb`+yx8_3=K0_7#7OyZ)Q-q(^SvEfD~#VwQ#Ng zDAKPmFziOkLJ-RiunR%*XOqGTHHLpoPF`x7eNCdR9uynX*cmwZ8CINQjAdqkMU-b0{Lih88n8EW7q^&mNnb{T8Ols@B z`aCN{0udb`a}`P$6kb}qI%JRVHb|I(A(5$JUF`0#2xf*w&*m_7z{^sw?18;<3=9lX z`)_TKynXnQ)}CL>+Hc%hZd~$O6CQ(LbqTBtJMy@nXKrC^=#X!>`lEe~`#&Pxfn3MJ z%AhR&v)0w){C9r?o*8*kwhUi%o%Sy=S{4j1FBupZ6igTv$fd92dYUR{^@_nkMWJI} zC__Ugqr=}L+PcgQuH9mxh0whB*a=nyft+9}$?&1!<*vmt3?72plx-O{ZQ2x3R<+N22jT(eD>-^Lc$?SJ^ky{ChTL_5W&2StQQtX3kmG@}HGk?8Iq! zT?z67!viyhihBpXXE*&SRy*DHO77IRtBd}J&R;0coAX-cVWXYOZOi4m?p$p?JImCY zm(i`*`-!M_*om-z&;1ssp4gmzKFv7&+>uscXv{M(ED~lYd3EKaDTBjpHii#83=%JM zc^Q7#pRD|QnTeqw<(7j!!-3{nx%B*fKbJ9q%~SQB<`KOuXQJ=+slO|K_y-^Q|K;W7 zn_Dt37kq?86GOubW(G}7O&v{5&!WRyazRNlf|$c&B8&y}u=M zGN{0~Su*=wu-tRM;6wkftPCzhHOFSfZZ?LD+aTX>WMhb{sx<=XKjWRk^+Vb$X9dUq zu9tRIK9POaxu>RRzPXt`KlSde($xl_5*?JyLHe#TFx;tm9lNIdech({^R~({ERbSo zxR~#gGFi=c(uv9H{?o3li40c#qrL2ShGgo`PGR*hE~LcCz`zjT%g`Y7@1%cUJR3s* zFT;T!A0OYmu`yZo)2FAWc@OV@lzMua=c!Ly)^Yq3g6E#2Y78s3i7^~7b!TF*$XLzb zuxP)3&q+204p|15vnCBTCr&R@YVe+}m-_np`gEHYudD9vDt$Az{N6-v2Cdf%*Zqkm3>EAQLA-ZDm>Gh6rtw}4Z)0XKIsUw(_+DLquZ(f) z-JcI0a4}qX^((r$PHoq{?*hLs&u=$;b;`c{U5q3{&7Y6Qb1pCQ1(l)O%icywGF&j4 z`fdK?!~gz$-;XFoL-uYdd)vNC&ZfkIp`n~XL2C^wLvG%lt6B^OF0Ppt9SEWw*=b8y{r2`hV`#{vYwHF|J6E1hFfL~4iyX!_T6*7AzuulgwMdvQ5C!!9Wq=W<~NhsN5@P!0zM2lXG}bx4ZZHQ7E9E8@3gA6o{Dl9BqbMNT%4QglCC7q34x=Bn^)?f;#_=1#O9Z3uZbABhii(4dG zxAoP=b2*3=Et8fBAIh6&J&b*}wA&tF_A)Ni^^8-EH|je&_Qd^AbS@pR1g2V@u`u zS(z?`bpGa@_nYyZ&AXF}PTTLD*UmHTu6`8@1A~J=$l@s`*Xzjd z@9w5%f03)bd*ch&o@9X#+pCLQxy#O)UVkCgj#cq4g{QCNuz4*8V z!-B%s>Zadi#aZ9?t$a6If58FOJCdt@i|=G%uzO~AUx^_=;Xt&QqQf4pycJtJf9o|T z)$bQ{{kM&4vtrh={BQs9-#RzOy=+VF?QQC7t1B-*EBfK@nS1<4 z*_X1LJ-^eXAO1J_9{SMEUpx3=+vb|c$eHVuH9!7d*7epd{cZ7f>!TaQ-%r22zBiUv z!ocDBLc4tR`PD1l@0UKlxTRj1gTYZT^ZY#9P3C!bG*;HWxUewmZ32UXXv0#ecMXxC7_|M4Y1Z#qr)JCYMd3hw$u`5Q z3$`E3*R4sMn;Rg^$iUFFDE80hO23nuWhdXs-w2hTvPt@$X5!n;-4WC8B$eG?^mo(C z|4Ys=cz+N#m|rjdIkhPLEqDI*JN6ql-{34W(@uN7>3u}*w)U$lpWK}qv-{A)Q*Sr^ zuzDSL@^7TX^~qmt{+MS@u4)G zUn(YS-TN@@n7#45pRd9+*Zh5-mwNZz+jlz^vk%&@dy@XM?9Q{tIzJ~bF1nFFKlt6f zO4UubpNo9{5YNXT^ylfr``_a@SMPnjWDjrJ;;XA{e*AYcyK8r-?zGp9ol0MhzjSEW z;U%DO;N0Yejhpt}eenKUL`~Mx{d!w3ndLvTdvU<@sR950?b|%}#_|1UVJxX)x^VFA zc7cEV1@Q}584m6f-pcUcoBHQ3Sx%u5$n$5IeEsmL*YCv`465`G+s)fo`#X~J ze^618k+-k!(eLsivs`|#GcYi8xG`L~a^P#}vE8qCcCM=aT_5VqwC&}VFVZU)-)psE zVF)<=Xu4PUZ0GPT3<;Z_ebjH>@+Wxde_pe1>%Hu_w8MCjz2~2-}cM3f8J}`{8=u*qLKJq^YzB&Ki~L5`>y`m5PDB~`>{u_JuBbb zy7Fzy{d0HrTU5kao;_Tz-ozmCPgq#^E8oKXtPB^{dp+33z|hnpZ0#7z`9F2nf`b-+ zq@5TxH>4|0V3mFLl7V5vuD=V83m==ew6J^?PqC#-{ro+ONpM!F(V>>XWn@ z!vrS=p=Ae_<=_A3c)0%gxw$8McpSlP99{;CK;{Md-+9&ggR_5my?ef6{`0t{m49Rn zRpmrkWt5_B$TBjpC929W6o{3teD-m-jzGS(00YAT2?h_jD9)#o+QXQ3K3V9@#PIN& zMA5#+dvpJ){OFD-u3yN*7-VOu#s0sgr>XsiX~}Y}3o~XtU?}&G+J1Jq`;!m%b+iu% z8FTY~-|e1vvVXcFLu&=sKbsr&N8aB*sT=u)Z=aukRJpx%Jl}uor@6;oGBM)B>pWeSm45OI?8IA1OvmQ#%4x_(+%o3ehR1cPY#Hy zznr>u%b(yM@2{?&{^bBO|Ay-Kd&M2am>51VG2E$oz4q#@s{#yj1Z)|Py|O9uVoA|j zVjgjzsp`)6Y_0p*jSdkE3LXwCaxX1*{5X}3LBX?ljVlvZ#Lq*!9nSD zj;~ZaFm-q2-18<6|6RA$`Nu8yZ1eX`KRi=*oqc~loq0@&5p&J*c^ z=YEJ^7P-ymcJZ;SAL42JwqFFAbif0W3<(STUCe)MFOAxqFVgz+%H?~pno)ng ze(62UaG)z&lA+=D(U7*T^qH-_1yLTLj^7?O2F13w=d6y}olWD}D0aqOZ+q(1k0yb< zzDDuy*Z)t;Iiudw`#(r-^Xv~tws_tBxAN)yL-oJk{Qa`scz>Q;Slxo(e;Oyb)F0g7 z#?7?v%9=x;n(AjB`ctOG|LseJQ`*4~Ej#|}<_xXM?xn}0WKmVCmef6q*@qS55{VUD|a(oZI zM$|0*I=@Z)!~g#RIo8|n6m@^uzW=Xp)Rv5iTdKZh-Q2lz=Ou6by(;!;j7(n^Byyfz zpLg&_?p|ZPSat>-6DwO=7KW-sH3x>MJ=h>SJ|GRBp+mg3??U%%>6F8U|ro3eN=k>kz+s*W{L;HCcP6$8)drkGxE!Fo| z?3<$}68dH9si*rwp8u;ajF&meaG-4avw(dcrtR4bN~#KB3g&P74-Vg0XG7{JmDr{H|@G)>~Wot+jbYNysxT*0f z{dG)%!k^iD|E03cpWO9ZTt6;H{ZBY}2y0W}<6|2?K0dy=Q&@e|$;s-cZLcl!o!vHp z8=qx_fOIusce9G78W_}-=Y z|4SP03Ry0O0wFF21{QV(ziW>=(ikr6sVqLehMi&A`5B_Ge)p8Ep z16xc|7#4)QT5kA%(e3@0KGmO^E?Hq=xqF7`m*5Kf12r#ObqW(JAFO|2>+rB%vGum5C;4`h9nZYBFfnkZjs$aKd^%7QYcj6gkP0=j+G2gD%YPMx@+R@jS7TxD=YXjA5O$-gc-|ycawR09T1J?)s0`mv| zJlJ_IRQ&&5dTsXVnQ9-jFIGF;i@$gKbi{4HyFASrwrT7PFKPtuES2(h-^+I{)Yfe) z*Siufh6sy!H)kcXZf9m-U|2DC%9JNFzA`j$2RBuPi3Dt(D{}R@+0A#~QW+eA|9mv? zyZUcs#{8@^|JRHB%iLxEZ@THThx;1q_wz9JxIFy7$(23g@uv^^{*oFB2i7mLcwlwQ z{q9-y8?uqwPYu?E{0i^=x%}Gi_Nih2-oA1A7GKs0)>bdQd&b)o@qi!Gm$QoqIK1TC z(D$uy%KO*0`_6mx9QEI`NHTk-4!@;D^0l}3*F24X{r!G@{HrS~C*S<%9&F3BiIKs= z{h5Y|Q1iy(xl9bFDqkHiX*k|A_q-c}!j*ZMf-4vg*l;W;TXkwS6T{-`#y3nF%CZ<* ziepWf7#{Xq!>+97x4 za>Biv&u>e0zh_{XaQspHT`kw0*VY(DO*{4{n)iR#|6kYl&wBg+aG2&>$(t#8?{~LE z8ZaarUC6d3;dKN9Luk}rSq28hwZeyV81l|)zyD#iaNmBn^_|x)axuufV0^4$vu)QJ zj{j$peynF;D1Lq}b#vO;AZCWn_WvfTfAk|ZG%Q`dd^Pj_B}Skm4D$6AMuz2o{FxaX zrvBUAt@m|%VYyK3J9%Np=+zr1W$C>tU~F*QUcdMzyWNw2j(5zM7|ut?yx!x;&B)XD zGVW{@`_$*466nEI0fs`oZ`1Z%e=p0zklq<-DI(gP=(&yIz|Y-&n|2tl{ck#4J83kFWo08oeon zbGBh}+aGfQjtIWAhfECWSyv-$&6Xctdo`Kw>(16)eX_0G3`gEKYh62)V9^l$H9V(T zXMJ`5N(KgA`=q(n!5-Ba>1=%#kqnh9$D^VTqc!<&ggk25eh zfWrGCFT=FFU-wRS7jVD(r=+l7aoL}sY~Jsu?=0r&Vp=s-NRPo_L)_{86A!U6EYaVg zZ)7>I_{atJt;ZI#F)%ckEr~C?ncBD0ijm>$^OfBMgb&!uY;-5j%A zwfF8%kP!7;^6uZ2xAq|y3mBxt9()!L)Nc?>PZPN@ea?gX$GvXsw0Uyf&-Suce7eNe zJHh4kufEBz%CKPI<-Vcm&m587vZ+??-(*gv2+8jE1^Nvsq6`+9TjtDt_y1K>gW7Mq zl`+|eSQ(VvdL}3yXkcWHoNrfK`QU#u8^eYF{Iln67WpM#^TF|E$?Z2WTczLJ;2dm z8bG1DNSa~7+mL_TDihx&88WPSbnj4Ykm#)JoeT_bTK)$x9Pn(eJU`#ia+$g5?H}_c z^co`>7#LP*GgO>*WtgyT^ZwQ{Mu*AUyPtafsft2`PI1o->&>2?#f*2 zrQ2{wTUr!-H!dTeukR)YZyF?K@Q&9}uA6%)rF(gjd?k!{&=NgTteT_PXlo z%WI}FUV#KymI1?$#YY_i{I~kmJ}hWwxU%u$+xsWw7>sw;XFojM9`$ee%Qg0ak!rb@ z)=2R)xcrz_``z|CGs6)(1`FL~|8$I)7!toYSoQzjan8H8HNevmMJ$>6b`rV{%P0Td$j!Er-+)3@rM)HyTx>isyGgm*)k-kztCW4 z_;W(Jf78Xq?%w`(KbIUiT-OR7^tb2bt@!cqo*xs#FT5s)FUVc!8=WT6^Oj ztNX2GVPs%Pl4JPe{3d-9H^T$P$$#xK%B%N&_ImMahc_F;OxBxMloxoWHS#bX5^epT zZN#PdXR}MaLiicB4b5pB0t^Y$Gv=PZr~5yik8utI!|qdu?JdI@8f2@_F*L-=)!i%C zaGdj7dGXV@s+X$AyBSXX_Ic;P%HQjB;O?VpWeJ7}Cs-IxDIN$G;{UB>51QkN+bfs& z^JjLca}OWGii#Hx4mNLF_T6}<(*+(T53zUCb)1+r4>34Y-_EhCTCI3#mCZ`y1($!V zFSm~Pu{~(x{ZmtFwk_Mfg;_=BO=BW^#f*2(+zcZ7zu&7iVtDXy{+SaOO;T7ujeiD) z4?+xk)@DkEGktXOJ!t)RWfYseBp1VuX}`s<1~lzc-16r(Bg2-rf7xEk3#~sWB3N-x z==;mguBovL>;75Y{k_VT;es`P2%`*x!Z*ePwTpf{|0>4F;H&>@k86G2ru*k}bDlGb zGFU|3v$Z#v7xlbWlC>{ZUGq)(3B926Yz3PROEMG$ePNLBXGkdLX#L+)lBU+!b(6tw z6~h5fe*5?8p$rd1)t58Axv_Ea&ARwy5BXA98D4xjrzEjE+SoMbX!ea|zMGOd*Dx@A z3ih{E{rc+a?n5?zmIwZLfA@Fbw^yr^rxgC1#=xNKy*hcI$#$0=x}=6d zK!)Lp_`&*?XNSV0Lw~%>R#sa5t1yF|p`_GcO#~yumAyZTKH4~4t=~C2d%sMU0mF)t zy$<{hS!@s=@3?i3e85yc0|F|$R_^oJTsCobJd8}Ob{0mRAZsm8~+yv?o zefs>lxvf5`ZJDLIttO z^-rgU&kI*@cz>^d#h;8@%Kcvw`|WOp>wR0!@-Jao>Pn57elN^-treegb(%~5j!hCT z7z36uGoH#}U=Ulv-f){iAtS=loV&?&(p?{|`BDaPJN(w2%O{7n(Hfv)j5ob848~C;% z?p19N_g*7bh0@FF3>Q>3Pf-2v`|vu(2l^@7pNnWSDEQChnvk%D#A4ywaB!UKMg?@=;{i`fm2tKkVH9@7&h- z6Z|26?wzoIt1ZvJ%6{chbN+5Xb?&o;@nuOh3iZE_r zVsM)IOAwMF3wRh>lvbtGM&4r#v)|rgy5#5TpZt$i@_t>kd3IP?=Y6+u&eQAm8@B(i zo^X0OAf z#A9k$Ez7{5#mKsD{mKVJRnetP%w-`sXW z3=g_Pe$Af~D)H@oV@Tau6^?@NcXj*v59v=;YOt$||2gCTj(!*Z2K^}?-it5KITy?{x{^#i1o2gnt5J+0%JqQ)k(hFZ+|{sTlD>A!=9YxIe$OxO5XPW zz%g0Nv&ZKAk(U-_Vu<+DU;m1+VJ}}aKZAzrqPlC03|%WF61_LxNnjLtC;0v5+-J+( zt}{6BH_TvUX!o^qmoJWAqIv9Q-|t|?D{KBS*m;Zm{ByMNfj_H{^k#<@ooz< z-u73!wtSAS{NR7*aMtGsa{B&H#j6+(ct6Q~GiiHiU6T>-gE+D8MsJO8MAV4u^dHTi zQNjB8XN{MB!&kj`?}Kl-A8zA~+}o{xkz0SI)!G@ScKnpSa=Pn7{uSm0LM#$?H9M|s z&$mD7C&FmL^WU+H;olP{K?kul)m!h%F_d*3d8zYWjG^P2Qp2kQ`j$KlO?LY2+ur}u z;Su|;&H7q$W98?xZ6z;*w$=PB%KY@?F9fHj|sG=x|q8J!0>l!#bAXe4h$C zXSSCA{L`Ar`R~xvkdw3WKWlu~Kji*&-CD`U)S8+5Kg;il&78Zgl0D*-x_ji^v+7TB zf9E*7hB=b#&B}x@0Y)RmmK|ex%-v?gGS=> zO?TInbulp5EVwSY&%5P+?wdyjQU70`6lmCXl==VVQ{T!rTIF&uL`ZhOUov&$k8l&; zN&V|Dik^*_ZI-+4LBDKKVtxD0^-G?6bai)MX5J?4b8fo6%GDfG=QbY0w~PulQH%_K ze|-&?xn$B1*3B^M%418hC9YwUVpjZ;(_+{l)WbV%tMR_Oo8=h%{FyVBvo*vnNGj)W zp78zPx8G7u4;`LOXwK_ruQ$uSrejw2CL;6F5>F$B2mkwL*;bp)HqVy}R%p2Td=(o* z$y`Wr#lY}Egki;Vr*%eQrh6x-7MKePEVy?oXxFN%ixkc`{}tNz@4Qr1=F#Ol#6RcW z_q^@(^UDgEe@{Pdoyj;YSVVG#K0%&;PKuGY)# zkM2n^IlM?)Jhk&x`x(xM64MLfGrrtZW(cUh{#~c;wc*bw^#y98Og0W5CRG`jK3f*& zyY2YD&kgr2YVB8_uRYmxsbb&T=0~%3_{#B3h&$4^;r^x0cyFKc?uvgI`2QDL-*B}# z5`W;^rww`GTh8h2d#6{X=-5!P?`(6@?b~Ii`>$@a5xcJ#-g9*SpRQ$V7V1wtWS>2^ z$Ts`>x>)spKQh_Bms+W+J}qAxls9R8_H>C|I;4Y-}pZ9+~aA{TTXwH=lW&qcDlug<-n&I8T+J8@nA(4S0{GPskoILwN2UY($784KEvog%EtNpb?(m3rzfI}lg**xtk z1_*FbWmq7;n)7925yyf2%R8>NoM~dO^!TsUav}eTuFaqF>Bq1CI(>LQ4lz83XmpP_T8-nee>CT7MLv#!mVy>9iDU+32sPuALYdVM2{)BKvm z#yKqg8;Ua|9Q>C~owtnn&e2z=9P9YE%W^D;OW(ey_lIYCmH3fT`vd2ai_fo1&eo~h zajoy@@(=UpO!9g-f2-%-#=eEj@$VKm>;9js`RDSK`s>T?oG59N67;y0|L~6Gfm+73 zn=>vd9ad`a`tkl+^$L@O0|&Uizqc<4`Tvhu!ja+YzutAF&i8Jfx^d#^)H|8y>Tf)# z&q>r@e@k(8-sRd`PtWP>_q%s)#Z~K@D@^ZiQqp6eH_iEV6MVP7wA=jgLe;t2 zY|-CYCo9x+>!x_h?>)Ap_s{0fU+us6_Fps#n|5{0=AUO9-`Hz!(%!39b$QRl|Brs3 zEajK@V)6RwbHi(!!|P)&CvWK~v%S0W<%`NouNOu9{H@>k_zev0C|MH!0PJb_s%*)I8_n?{oM*95PWBY!+(grP{x~%s- zFik4@=d;g73=;NrHnUAKg=QP2a?Q4@wTiaRX1Q&-eE-|$Q{K;CP@PwA@WnH%hO_wU z|9#(z%>I4zd&TpttDR5wlv|(7$+-HzrQv_ST=qZxd-wBs)iI?}QBuF3O!j~C_ZxT` zSCT=Y|Ev8`y}y4VELl!WP;>}t+W&!>y}4fXbM2Z(5BJX$`lo-lqGxXKr_D7w7ugtk zzQx8eIAk5)eY4cO?4!*e{`zezW>eX4?Om-xZdmcf`y^qQ`e{1Z@hnk!Ql&2 z#QG~t4;c4N7kaW%oq?C#U^Qoe-Lw7k?tEI`#L%yi{C}tY(ps6PzpMJ+8|&%WB_)6K z6!{l?d)wj<=O^91cVONAf4|iJeA`v<&DohNN^N?39oK&r#*%aMKboDJUwEpj>N11Y z!}MEmrywUAW@m{dIe*?DE>{k0Rr3^}m@J7#NPQFg$pFHoxx2e2Lff zbGAmsdfA6ne@Ljiv-U$gBjX>|`=8}c?9H72G1@Q0O3apF!9008souvW*H+0JFfeR1 z=04yU7?V5g;A8nVrpqCx<1&h0`Cf`|W@6A|Vkmi=`T3<_n0;})a9yufXq$l`%Yu0f zUXH=DI9=J6{xi0no^h;U%AKTZN~>Mk7_PjvxAbmf*n8AKY%lM}UVJuLS=2R* zli@<(+w|w31?nAz<*s`{LfkUg)|XmL@Y{m7n|X&Ar9#=eDlSxNDZX;KxqtH~vhhl-`LrOg z-`1>ySH_}aYyG3p%?)}xb5s|2>qW1R-Ygx~wCu^I(*5Nz8`6J&d{rvk7*=%C%VB!V zw)FGvEF~vXU#IDduK_W%8DooXPHp=a@K^-Y?A*%0;I;bq&-;Hhj{Oqv`SzfD&!m+L z6yE;+Q)?f#y1f+B6peuJf99Y7U-|!N zAlLsl%jPI?y_@^v>&ud(YZxROIYWdOBtDz@;l7LJtW&zzO-|}1l|P+&;$Xbo=lFYX z<1>HS-!;(wuzU6OO4P_XVlv|rQbn||E?`1?lr8>g}v@4YKUl?=t=|IVAF@y9&tipM@* zTOqytSx44+@16L-!RUL2VXXpV-OIzw1dzS?uhP zpO%teUR3F~d~UCrv*Fs>+Y?kb3H_U2`AjnN!vjT8Ig^YND;%5IHaj-688$KS&hxv@ z{TouHfk;CphAAs!Ug}GN<{q9gGWb3&Kl%LllxyFk{h1OE9kd^ ztNa@`Gs7Oyr1LG-XR;VVYSb!zj_E7W;9UqSzZmw%o}X=*VzOv|2~ zBCZ;=wLbKq{m!THeE)a4_WVx`PZK*K@WAK$U+yQGzspWH+W9pyEKSd1IwJePv7W{E z`EtJhQXCUBR{fO^SzErs=Ff4%f75rb<6#u3v=zJm;_p)VP;PO(l;q=m$;olmvF{`u zmL+FRy|nMt2gO@?v#-2<`rgRu+s4PoHgEs`vG339(@VXca4{s*{`!*m^x^-=%o7ui zhsqgceR!Z~^JnsD#Rj!E#-MNmOUBM! zQ!Y-aoyhfHi^IT;$MFH*2Ddw4T@3FS8eSTw?PO&*wmQnM_R+r2u8j_tb}KS96z|-B z{b!%$$-nB1VqQE92kh4{G;}?xjcolC|BBP$Fk{7x_~kp}{?2-!|HtT}{E4Mub(?Bt z-(Q~fG5n8a>F?#!>Mj4Ivp?A%weryZjFZ#bnb!ojR$f$Ac<22tChMuV?%$n{_Qji? zuJgM4@B68P_VY9a9PTpr#Br}b_GoeyU)92{y&6}f-j&^}uNSTUc60v;dzSc`kFIsU zBVT?z{y*ZOqVqqCtP>NCKYht0%JJdV>h)5k-$9iV#8VLRgB-(!ka`xzTj}D$EI*u= z9IkgQebaNueaeUV5;6=Cv#y)-FeGIER%3ABdQ`yJu=ee21_sTJ!>kP3w(&DO&;xA@ z*eZO9W!d^8R~ph^wyb2|!M*c!1S7+&(%mm>*z5%#@0yyLv3qgpvC9Actjbz%!?_tm zK=a`%+(EOjr`p{Eb4BVOmPudVoE!4?|GGO#*G!jte}Am-yR&P16|s$r;ZB7e1H(DShG%DIx2N(jGBB*T#-MO8{=lpc1-`+5 z1Gm=K-9Nd4k>TF~PPu>UmwdQ?C4T1#F>uH_lrS(%p5UVRW|xBFD#7y00t^RiuBN|t z7d~;oMV9Gp#e4BJObn?O4u6h)N~$e2pP%sc6aVHZYm}aSe($|3N|W>7A%0eY1+Slb z?(+Tq^H1wyp-bJj?o8c1|L)!uHEInha=&hOLi;+R@r2R3yAAeTx zFrGTTVVC*Uc#B|`OB(}!e6KCslN8nvz+AOKkx|Y5g$*mi!8Vo|CGWqBFtA7qC0yDo z&!BLMp}|@AUth^(zD@HthurRZ0W`)g~5@h zUrMg=jpA#quRD83J>H&kUI729dzGr2PFDwi%nozgDSW9r;`sERaWCW))n?BZ5_o&Rt8x0)9! z3>#P&*Hsw0|Gn|bV6RKV`UTIwAM2HdgcFEN;%7MF7r$}mr7KH7TtjAtUA09%d{@4H z@_y-_b3TLne|i;@h~0!wF9QujuW5qRFf>T8Foa#(xMTk8=B>YGzj-Y4E^$%Vf!s0% z2j9)%pIgHVLm2{+lp9`OtyOq&`NoTw-LE2{g)t>trhL>VHagdSY^c8GytS{sYS z*1ZM{4NDan{c`yk6x7-nVp6t#HTGe+;JZH5+~dRbSxkxgZ~yw+nmWn;QI%y-sC?7$ z_WI(a#L%W@K86z;FLtX$Z@pKjEwJEg?sscm1|7!+`MMvB3`q_lzo=JAwFHiz>vXoPT<|avQ@vVZ(csIQjyaU)b%^U$FM+A{yvK| zpM$el$-3XwxgydsnIGnE2;}bw)!GG`vIhq_lz5=Zup`A$)BD^V|K$JoyUG|QOc0Ei z@=AZ&;r;n}8Emt&`yRzo}NT@pdgYx8%*nMYRu4ZCSB^ zlYzthfHjkV4nso$^B!deMh1l{#)fBi!pocGUWVy2NFR4LW}b5EhmF6nb=+bFxx9&r z+OF+NTjR~US|c^(o-r|OU}jv!z`*_c3KK(`D8$h)s~H#=D!3SgGG=MjCq}JdXlOZe zKw2cIMiLTr4KJ7&{)g6@?dxP>_%QM8`Ono13|FNXB3c>z7#X|;kPHDc4+Jwf6o;z+ z;GTY*i^1ay`@N+TCQXTqSbAd)von*7rc#E;8d;r3&piYkS08_A%3xr{#{jZn)`cr> z&p%(hmCdo>R(ux6{B(wfSL_Viit87Cj63_=?vyKofCx5MS3RG4!LIz64?jcw!*6^y zkFKdL69l`%;R{1U;UnXZt2d~;+sw-_N8^!tRO#*;CDNOvm@o1$ILYS6Gcz=ZTJkd7 zds-LwnCGnBW{7{my1|4J6GKb?5iW)Yda4P^W&OOo-nLqLC9qA*vSzrJ7wlFj-He+UZ`0v1mPtD3V>YP~_ z4t{&>c3_jxjwBg|h>JyFdk{o}2UEjkLl%aNZA@l4Cmk6Yq}UkPc%@WsdowuvUaiTH z@T(_sA={H^)4TKMhy1;7dFI1hWmmub%nTi#3<2%G7b(=mvc~&)8_Ehj8Zsa7f47*+#t`=X_U`iho43wSn;ai@EBErhEG`BPlW5}cCxm*Ie?-OJL7&|OUXVggI{MRIF z$ilEqaErv29}El*yvz(rf0!9|a5Ds%96Zriwc0Lwuk)Q_e1$w085r^c`yT&^RcB;a zB*VbM$S7X){b}4v3=H!g-8*jE_`4QtG!k*1@xX_NhgG+3WjOGh|HvJa1{Q{Q z(OcxfDh|w5WH4!~ns@g6G0%A z+F2M%zIg`!snz02KKCdOy?hf0WoT%xfA(4YpKV(e!=8I~%R5R>YPty?kP2fFU^o!V zFk$lS<+j^1d%g%>{rP`2$IGh6vv9;{TVG*IlmoV>+wBCdzj2eBSFqS14bB=IryT-)>fe#gfDc2|wuW!V`13kN4%dTV_&2UPJv zOox&enHi*>yh)#~XDM<#e|{Gu!-vKB=l%uE^MJ7C8V~Ef_WP4TWhf7Goe?ObD`3($j-r`(`eNchBmipw_}Dg;iY)pFW)5^-OlbU%kG@kNkTR1&Z8_tC*-3Z*cjaD3Z{v4pF%(??6g2JA$-rqd;wsXw zl>a}^aVJiH|CFE8WTz-Lu*d#8EG4vn_nKbWPyTF=hHnz>rkWkMnHf5C7z}2v)E0AN5@q2~?%0G|aV3qC<{E=R+f6M>(|8SAMzxDQ0<>%`wA9z() z7Xn`A$-uyHkC9<+!oP_Y&$(SEI(%Kj$ZK+X)$-)sicSm(t7c68t5nF-yz{*9!FVB4 zu1z72w_m-y{o)#ivmncw=B#cGvGw7o$ratp_%4XCVeuliV7^Az^j0S{xXIIw&yZf z8A9Xy85&-(G3bSr&JQntT|ePB$9Mi&TE99MU7c&9@5GSMwIVb?ZCUf@?nIs|ulDfjUifl`1Jje1^>`oof4%$v%l3d` z##1X!q^xRS+<%b=BaavC=TNXTHJ!TjnMmM|=Zp&)R8vH3L`>KIpV_)sxbj8*o(&DA zkNmu{_`p6CxT(nSH{|)BT%`y9y`O*H;A?ZvWqP{jfyP~e3=ET588|{27&h`Vtmyui z&h~!2Cc}mYvyWQ+zjEh({GEE2GqV&|E;wwr5mXO>O=EEIWoEc~mw{m;BSXl;`CFqx zPyJ_$>#n)}zv-eZhfj)_5i3&*CxcJ-H_L#K3z`fGQCrS8E^6{)WVpPjmQO^Kh2g`w zGKK@zt1=nn#gCp7k-Z>tY4VXzuVyjU_c#b1@U&uRc*R(AaBpPkeMQ5z-z}jG4;q!X z#qVA4pz$lify|4w_s(SR%%08A@KNo#`)UKm14$eG{NI@+-TyCWn>r==zx~D-@xnR2 zuKvOd4D5^z($AB985r{RVs3=B$K3>rKBXq@|Q zboS?b?Kbv+>;J`Fv-dBG581xIhk;?niM!4Y4f9s%-3aH%aD2GN!)CdCN3Hpzea=3q z7P1Tqix?DUyx5z4$hN0i^852e>|Ig}H8~sdX0G5}xc8j!jakVFO`L^EKbNig{M$P8 z{dB{mvd$1g=>thu)0g>(96tjoM+li~e!%lG_U z1#4rk9iOYowJ`JQH4dg1XUsMnVf=p8(oU-D!_-x;{&TOo_AL6Vf&xRsa)t+1@AiuA zY2I!6eK*_nR8|HZlZu*^XJ6NByfNS3VNp)#d%;zv6LrqL-+1SK*YR&14;fgve;oC# z@`)7?200oDDm7W*Ny>Ok^3@jsu%Yu=ycvAJWne8$f|tvV;;?|qHe zWnf@vn8mMGN0_2soEBV&59Si=X#2Jz?WZx`=kWLO`!ebLME-EuQB_1`2gEMT*;VrZDK>ve7Wo1|+R z$^}c$%m3Kk9slhAs`)$Ddphrnm%pEHJnP%}_=u-Fniv?ow@F1DzPpc;VMEI9IW>B9%FEoX zm9E)qc5QOyVmK4jx=DD|#>d*B-|Mw^<(+D$j0 z|9E!4f6lD7@OR|ZqUXi`HYNR%fr9O(U9@paeRSq191KOM`RG<#X?nR&LeeP^5b7G2)LzkVJ+gF^Ow#F`Q{xr(p|otu0K)D z$B;4qzVFMd@3y`ouCia-maAB>^qv#4joelouhqpD^tyh2!8Ywf_6!aj3J_H5|G%9XE&fzK?T=aZFg;S2`aV>0&9;IT4jSq3>Yjq z7%DC%tl59H^3qj5vEa|HObiBw`n!!v6WOo+eO@5{Oi!egIZLzO)u`jT34;UQL)*7{ zU5u0b3ZHi>^*cIS)UroKoKxSn*LBOE{}}<%C{-X6!v=N+o00&A1s#X#@AkSsm0|>q znSA}^9l2`%jGxcmtoL=aQ#Ag-#{c#Gr?C@7mW*O0^&M*t4sEIOsxH7Rp zcGZRFGdUS-UMXG9+j*8~}xr(>Hl{zZB(V zYy0vT7Q7R5V64;Q|NQwBBSYw${Q0qb3~joW5gT)N*=BrX1nrkzEeteD8u z^~bj}I$q>qsJp(=IJ+>nYxzU_kDt=kcwS!8!D6?X@x)7kcUyBxFN&?od|3Zr?#Y~o z!shO_3?G>Ec8dMm%fhhOF6qtt`8(zQt)I7dw(SJTg1_abWBwOy%ert%m$tF66$ z`2YU(d*}4--#hvB&9oO67Un!TF>zh{|AWo!n{VgsKKu3k(bZ8gr`PRUH&^E0?k{zH gU!_0iO||*@f6=?g#-Cr7ZUO~}r>mdKI;Vst0FNrFNdN!< diff --git a/core/src/io/anuke/mindustry/EffectLoader.java b/core/src/io/anuke/mindustry/EffectLoader.java index e95209acac..55519fe7f6 100644 --- a/core/src/io/anuke/mindustry/EffectLoader.java +++ b/core/src/io/anuke/mindustry/EffectLoader.java @@ -15,56 +15,56 @@ public class EffectLoader{ Effect.create("place", 16, e -> { Draw.thickness(3f - e.ifract() * 2f); Draw.square(e.x, e.y, tilesize / 2f + e.ifract() * 3f); - Draw.clear(); + Draw.reset(); }); Effect.create("spark", 10, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.GRAY, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 5f, 2, 8); - Draw.clear(); + Draw.reset(); }); Effect.create("smelt", 10, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.YELLOW, Color.RED, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 5f, 2, 8); - Draw.clear(); + Draw.reset(); }); Effect.create("break", 12, e -> { Draw.thickness(2f); Draw.color(Color.WHITE, Color.GRAY, e.ifract()); Draw.spikes(e.x, e.y, e.ifract() * 5f, 2, 5); - Draw.clear(); + Draw.reset(); }); Effect.create("hit", 10, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.ORANGE, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 3f, 2, 8); - Draw.clear(); + Draw.reset(); }); Effect.create("shoot", 8, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.GOLD, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 2f, 2, 5); - Draw.clear(); + Draw.reset(); }); Effect.create("shoot2", 8, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.SKY, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 2f, 1, 5); - Draw.clear(); + Draw.reset(); }); Effect.create("shoot3", 8, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.GOLD, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 2f, 1, 5); - Draw.clear(); + Draw.reset(); }); Effect.create("explosion", 15, e -> { @@ -72,7 +72,7 @@ public class EffectLoader{ Draw.color(Hue.mix(Color.ORANGE, Color.GRAY, e.ifract())); Draw.spikes(e.x, e.y, 2f + e.ifract() * 3f, 4, 6); Draw.circle(e.x, e.y, 3f + e.ifract() * 3f); - Draw.clear(); + Draw.reset(); }); Effect.create("coreexplosion", 13, e -> { @@ -80,21 +80,21 @@ public class EffectLoader{ Draw.color(Hue.mix(Color.ORANGE, Color.WHITE, e.ifract())); Draw.spikes(e.x, e.y, 5f + e.ifract() * 40f, 6, 6); Draw.circle(e.x, e.y, 4f + e.ifract() * 40f); - Draw.clear(); + Draw.reset(); }); Effect.create("spawn", 23, e -> { Draw.thickness(2f); Draw.color(Hue.mix(Color.DARK_GRAY, Color.SCARLET, e.ifract())); Draw.circle(e.x, e.y, 7f - e.ifract() * 6f); - Draw.clear(); + Draw.reset(); }); Effect.create("ind", 100, e -> { Draw.thickness(3f); Draw.color("royal"); Draw.circle(e.x, e.y, 3); - Draw.clear(); + Draw.reset(); }); Effect.create("respawn", respawnduration, e -> { @@ -102,7 +102,7 @@ public class EffectLoader{ Draw.tscl(0.25f); Draw.text("Respawning in " + (int)((e.lifetime-e.time)/60), e.x, e.y); Draw.tscl(0.5f); - Draw.clear(); + Draw.reset(); }); } } diff --git a/core/src/io/anuke/mindustry/Input.java b/core/src/io/anuke/mindustry/Input.java index cb0cb9c461..b46d97d770 100644 --- a/core/src/io/anuke/mindustry/Input.java +++ b/core/src/io/anuke/mindustry/Input.java @@ -94,12 +94,12 @@ public class Input{ Tile cursor = World.cursorTile(); //block breaking - if(Inputs.buttonDown(Buttons.RIGHT) && World.cursorNear() && cursor.artifical() + if(Inputs.buttonDown(Buttons.RIGHT) && World.cursorNear() && cursor.breakable() && cursor.block() != ProductionBlocks.core){ Tile tile = cursor; breaktime += Mathf.delta(); - if(breaktime >= breakduration){ - Effects.effect("break", tile.entity); + if(breaktime >= tile.block().breaktime){ + Effects.effect("break", tile.worldx(), tile.worldy()); Effects.shake(3f, 1f); tile.setBlock(Blocks.air); breaktime = 0f; diff --git a/core/src/io/anuke/mindustry/Renderer.java b/core/src/io/anuke/mindustry/Renderer.java index f996a98fc5..fe59511f49 100644 --- a/core/src/io/anuke/mindustry/Renderer.java +++ b/core/src/io/anuke/mindustry/Renderer.java @@ -17,19 +17,62 @@ import io.anuke.ucore.core.Inputs; import io.anuke.ucore.entities.DestructibleEntity; import io.anuke.ucore.entities.Entities; import io.anuke.ucore.entities.Entity; +import io.anuke.ucore.graphics.Cache; +import io.anuke.ucore.graphics.Caches; import io.anuke.ucore.scene.utils.Cursors; +import io.anuke.ucore.util.GridMap; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Timers; public class Renderer{ + private static int chunksize = 32; + private static GridMap caches = new GridMap<>(); public static void renderTiles(){ - Draw.clear(); + int chunksx = World.width()/chunksize, chunksy = World.height()/chunksize; + + //render the entire map + if(caches.size() == 0){ + + for(int cx = 0; cx < chunksx; cx ++){ + for(int cy = 0; cy < chunksy; cy ++){ + Caches.begin(); + + for(int tilex = cx*chunksize; tilex < (cx+1)*chunksize; tilex++){ + for(int tiley = cy*chunksize; tiley < (cy+1)*chunksize; tiley++){ + World.tile(tilex, tiley).floor().drawCache(World.tile(tilex, tiley)); + } + } + + caches.put(cx, cy, Caches.end()); + } + } + } + OrthographicCamera camera = control.camera; + + Draw.end(); + + int crangex = (int)(camera.viewportWidth/(chunksize*tilesize)); + int crangey = (int)(camera.viewportHeight/(chunksize*tilesize))+1; + + for(int x = -crangex; x <= crangex; x++){ + for(int y = -crangey; y <= crangey; y++){ + int worldx = Mathf.scl(camera.position.x, chunksize*tilesize) + x; + int worldy = Mathf.scl(camera.position.y, chunksize*tilesize) + y; + + if(caches.containsKey(worldx, worldy)) + caches.get(worldx, worldy).render(); + } + } + + Draw.begin(); + + Draw.reset(); int rangex = control.rangex, rangey = control.rangey; for(int l = 0; l < 4; l++){ - if(l == 1){ + if(l == 0){ Draw.surface("shadow"); } @@ -40,11 +83,11 @@ public class Renderer{ if(Mathf.inBounds(worldx, worldy, tiles)){ Tile tile = tiles[worldx][worldy]; - if(l == 1){ + if(l == 0){ if(tile.block() != Blocks.air) - Draw.rect("shadow", worldx * tilesize, worldy * tilesize); - }else if(l == 0 || l == 2){ - (l == 0 ? tile.floor() : tile.block()).draw(tile); + Draw.rect(tile.block().shadow, worldx * tilesize, worldy * tilesize); + }else if(l == 1){ + tile.block().draw(tile); }else{ tile.block().drawOver(tile); } @@ -52,7 +95,7 @@ public class Renderer{ } } - if(l == 1){ + if(l == 0){ Draw.color(0, 0, 0, 0.15f); Draw.flushSurface(); Draw.color(); @@ -89,16 +132,16 @@ public class Renderer{ else Cursors.restoreCursor(); - Draw.clear(); + Draw.reset(); } //block breaking if(Inputs.buttonDown(Buttons.RIGHT) && World.cursorNear()){ Tile tile = World.cursorTile(); - if(tile.artifical() && tile.block() != ProductionBlocks.core){ - Draw.color(Color.YELLOW, Color.SCARLET, breaktime / breakduration); + if(tile.breakable() && tile.block() != ProductionBlocks.core){ + Draw.color(Color.YELLOW, Color.SCARLET, breaktime / tile.block().breaktime); Draw.square(tile.worldx(), tile.worldy(), 4); - Draw.clear(); + Draw.reset(); } } @@ -148,6 +191,6 @@ public class Renderer{ Draw.color(Color.RED); if(w >= 1) Draw.line(x - len + 1, y - offset, x - len + w, y - offset); - Draw.clear(); + Draw.reset(); } } diff --git a/core/src/io/anuke/mindustry/UI.java b/core/src/io/anuke/mindustry/UI.java index 414d553924..a60f2e0b89 100644 --- a/core/src/io/anuke/mindustry/UI.java +++ b/core/src/io/anuke/mindustry/UI.java @@ -1,12 +1,16 @@ package io.anuke.mindustry; import static io.anuke.mindustry.Vars.*; +import static io.anuke.ucore.scene.actions.Actions.*; import java.util.function.BooleanSupplier; +import com.badlogic.gdx.Application.ApplicationType; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.math.Interpolation; +import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.entities.Weapon; @@ -18,8 +22,8 @@ import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.graphics.Textures; import io.anuke.ucore.modules.SceneModule; import io.anuke.ucore.scene.Scene; +import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.builders.*; -import io.anuke.ucore.scene.style.Styles; import io.anuke.ucore.scene.ui.*; import io.anuke.ucore.scene.ui.layout.Stack; import io.anuke.ucore.scene.ui.layout.Table; @@ -40,7 +44,20 @@ public class UI extends SceneModule{ }; public UI() { - Styles.styles.font().setUseIntegerPositions(false); + Dialog.setShowAction(()->{ + return sequence(Actions.moveToAligned(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight(), Align.center), + parallel(Actions.moveToAligned(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2, Align.center, 0.09f, Interpolation.fade), + + Actions.fadeIn(0.09f, Interpolation.fade))); + }); + + Dialog.setHideAction(()->{ + return sequence( + parallel(Actions.moveBy(0, -Gdx.graphics.getHeight()/2, 0.08f, Interpolation.fade), + Actions.fadeOut(0.08f, Interpolation.fade))); + }); + + skin.font().setUseIntegerPositions(false); TooltipManager.getInstance().animations = false; Dialog.closePadR = -1; @@ -59,7 +76,7 @@ public class UI extends SceneModule{ Draw.color(Hue.lightness(0.6f)); - int tw = w/64+1;//, th = h/64+1; + int tw = w/64+1; batch.draw(Textures.get("back"), 0, 0, 0, 0, w, h); @@ -67,11 +84,6 @@ public class UI extends SceneModule{ batch.draw(Textures.get("conveyort"), x*64, 0, 0, (int)(Timers.time()*2*(x%2-0.5f)), 32, h); } - //for(int y = 0; y < th; y ++){ - // batch.draw(Textures.get("conveyor"), 0, y*64, (int)(Timers.time()*2*(y%2-0.5f)), 0, w, 32); - //} - - Draw.color(); Draw.tscl(1.5f); @@ -173,17 +185,17 @@ public class UI extends SceneModule{ maxcol = Math.max((int)((float)recipes.size/rows+1), maxcol); } - for(Section sec : Section.values()){ recipes.clear(); Recipe.getBy(sec, recipes); ImageButton button = new ImageButton("icon-"+sec.name(), "toggle"); - add(button).size(size).height(size+8); + add(button).fill().height(54).padTop(-10); button.getImageCell().size(40).padBottom(4); group.add(button); Table table = new Table(); + table.pad(4); int i = 0; @@ -265,6 +277,9 @@ public class UI extends SceneModule{ add(stack).colspan(3); get().pad(10f); + get().padLeft(0f); + get().padRight(0f); + end(); }}.right().bottom().uniformX(); @@ -350,28 +365,39 @@ public class UI extends SceneModule{ //menu table new table(){{ float w = 200; + + new table("button"){{ + new button("Play", () -> { + levels.show(); + }).width(w); - new button("Play", () -> { - levels.show(); - }).width(w); + row(); - row(); + new button("Settings", () -> { + prefs.show(scene); + }).width(w); - new button("Settings", () -> { - prefs.show(scene); - }).width(w); + row(); - row(); + new button("Controls", () -> { + keys.show(scene); + }).width(w); - new button("Controls", () -> { - keys.show(scene); - }).width(w); + row(); - row(); - - new button("About", () -> { - about.show(scene); - }).width(w); + new button("About", () -> { + about.show(scene); + }).width(w); + + row(); + + if(Gdx.app.getType() != ApplicationType.WebGL) + new button("Exit", () -> { + Gdx.app.exit(); + }).width(w); + + get().pad(20); + }}; get().setVisible(nplay); }}.end(); diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 5e389e64ce..78255ac92c 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -18,7 +18,6 @@ public class Vars{ public static final float respawnduration = 60*4; public static final float wavespace = 20*60; public static final float enemyspawnspace = 65; - public static final float breakduration = 30; public static boolean debug = false; public static final Vector2 vector = new Vector2(); @@ -36,7 +35,7 @@ public class Vars{ public static float breaktime = 0; - public static final String[] maps = {"delta", "canyon", "pit", "maze"}; + public static final String[] maps = {"delta", "canyon", "pit", "maze", "test"}; public static Pixmap[] mapPixmaps; public static Texture[] mapTextures; public static int currentMap; diff --git a/core/src/io/anuke/mindustry/World.java b/core/src/io/anuke/mindustry/World.java index 5f0ae0fe42..c940c3bf2a 100644 --- a/core/src/io/anuke/mindustry/World.java +++ b/core/src/io/anuke/mindustry/World.java @@ -28,6 +28,14 @@ public class World{ return tile == null || tile.block().solid; } + public static int width(){ + return Vars.mapPixmaps[Vars.currentMap].getWidth(); + } + + public static int height(){ + return Vars.mapPixmaps[Vars.currentMap].getHeight(); + } + public static Tile tile(int x, int y){ if(!Mathf.inBounds(x, y, tiles)) return null; return tiles[x][y]; diff --git a/core/src/io/anuke/mindustry/ai/MHueristic.java b/core/src/io/anuke/mindustry/ai/MHueristic.java index 793789d90e..48e8aa2ba7 100644 --- a/core/src/io/anuke/mindustry/ai/MHueristic.java +++ b/core/src/io/anuke/mindustry/ai/MHueristic.java @@ -14,8 +14,8 @@ public class MHueristic implements Heuristic{ float cost = Math.abs(node.worldx() - other.worldx()) + Math.abs(node.worldy() - other.worldy()); //TODO balance multiplier - if(node.artifical() && node.block().solid) cost += Vars.tilesize*multiplier; - if(other.artifical() && other.block().solid) cost += Vars.tilesize*multiplier; + if(node.breakable() && node.block().solid) cost += Vars.tilesize*multiplier; + if(other.breakable() && other.block().solid) cost += Vars.tilesize*multiplier; return cost; } diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index 7a658fbc6f..eba69d8645 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -13,28 +13,28 @@ public abstract class BulletType extends BaseBulletType{ public void draw(Bullet b){ Draw.color("gray"); Draw.square(b.x, b.y, 1f); - Draw.clear(); + Draw.reset(); } }, iron = new BulletType(1.7f, 2){ public void draw(Bullet b){ Draw.color("gray"); Draw.rect("bullet", b.x, b.y, b.angle()); - Draw.clear(); + Draw.reset(); } }, sniper = new BulletType(3f, 20){ public void draw(Bullet b){ Draw.color("lightgray"); Draw.rect("bullet", b.x, b.y, b.angle()); - Draw.clear(); + Draw.reset(); } }, small = new BulletType(1.5f, 1){ public void draw(Bullet b){ Draw.color("orange"); Draw.rect("bullet", b.x, b.y, b.angle()); - Draw.clear(); + Draw.reset(); } }, smallfast = new BulletType(1.6f, 2){ @@ -42,7 +42,7 @@ public abstract class BulletType extends BaseBulletType{ public void draw(Bullet b){ Draw.color(color); Draw.rect("bullet", b.x, b.y, b.angle()); - Draw.clear(); + Draw.reset(); } }, flame = new BulletType(0.6f, 4){ @@ -50,7 +50,7 @@ public abstract class BulletType extends BaseBulletType{ Draw.color(Color.YELLOW, Color.SCARLET, b.time/lifetime); float size = 6f-b.time/lifetime*5f; Draw.rect("circle", b.x, b.y, size, size); - Draw.clear(); + Draw.reset(); } }, flameshot = new BulletType(0.5f, 3){ @@ -58,7 +58,7 @@ public abstract class BulletType extends BaseBulletType{ Draw.color(Color.ORANGE, Color.SCARLET, b.time/lifetime); float size = 6f-b.time/lifetime*5f; Draw.rect("circle", b.x, b.y, size, size); - Draw.clear(); + Draw.reset(); } }, shot = new BulletType(2.4f, 2){ @@ -66,7 +66,7 @@ public abstract class BulletType extends BaseBulletType{ public void draw(Bullet b){ Draw.color(Color.GOLD); Draw.rect("bullet", b.x, b.y, b.angle()); - Draw.clear(); + Draw.reset(); } }, shot2 = new BulletType(2.5f, 2){ @@ -74,7 +74,7 @@ public abstract class BulletType extends BaseBulletType{ public void draw(Bullet b){ Draw.color(Color.SKY); Draw.rect("bullet", b.x, b.y, b.angle()); - Draw.clear(); + Draw.reset(); } }; diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index cabdf8234d..d7b513dc20 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.entities; import static io.anuke.mindustry.Vars.*; import com.badlogic.gdx.Input.Buttons; +import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; @@ -80,6 +81,9 @@ public class Player extends DestructibleEntity{ }else{ float angle = Angles.mouseAngle(x, y); direction.lerp(vector.set(0, 1).setAngle(angle), 0.26f); + if(MathUtils.isEqual(angle, direction.angle(), 0.05f)){ + direction.setAngle(angle); + } } } } diff --git a/core/src/io/anuke/mindustry/ui/MenuDialog.java b/core/src/io/anuke/mindustry/ui/MenuDialog.java index 3775550fc2..313d8e7d0d 100644 --- a/core/src/io/anuke/mindustry/ui/MenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/MenuDialog.java @@ -34,7 +34,7 @@ public class MenuDialog extends Dialog{ hide(); paused = false; playing = false; - }); + }).show(); }).width(200); } } diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index f06a26f0e0..97b7bf83fe 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -1,23 +1,38 @@ package io.anuke.mindustry.world; +import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; +import io.anuke.mindustry.World; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.resource.Item; import io.anuke.ucore.core.Draw; +import io.anuke.ucore.graphics.Caches; +import io.anuke.ucore.util.Mathf; public class Block{ + private static int lastid; + protected static Vector2 vector = new Vector2(); protected static Vector2 vector2 = new Vector2(); + protected static TextureRegion temp = new TextureRegion(); public final String name; - public boolean solid, update, rotate; + public boolean solid, update, rotate, breakable; public int health = 40; + public String shadow = "shadow"; + public float breaktime = 30; + public final int id; + //edge fallback, used for ores + public String edge = "stone"; + //whether to have 3 variants + public boolean vary = true; public Block(String name) { this.name = name; - solid = false; + this.solid = false; + this.id = lastid++; } public void drawOver(Tile tile){} @@ -126,11 +141,48 @@ public class Block{ } return false; } + + public void drawCache(Tile tile){ + MathUtils.random.setSeed(tile.id()); + + Caches.draw(vary ? (name() + MathUtils.random(1, 3)) : name(), tile.worldx(), tile.worldy()); + + for(int dx = -1; dx <= 1; dx ++){ + for(int dy = -1; dy <= 1; dy ++){ + if(dx == 0 && dy == 0) continue; + + Tile other = World.tile(tile.x+dx, tile.y+dy); + + if(other == null) continue; + + Block floor = other.floor(); + + if(floor.id <= this.id) continue; + + TextureRegion region = Draw.region(floor.name() + "edge"); + + if(region == null) + region = Draw.region(floor.edge + "edge"); + + int sx = -dx*8+2, sy = -dy*8+2; + int x = Mathf.clamp(sx, 0, 12); + int y = Mathf.clamp(sy, 0, 12); + int w = Mathf.clamp(sx+8, 0, 12)-x, h = Mathf.clamp(sy+8, 0, 12)-y; + + float rx = Mathf.clamp(dx*8, 0, 8-w); + float ry = Mathf.clamp(dy*8, 0, 8-h); + + temp.setTexture(region.getTexture()); + temp.setRegion(region.getRegionX()+x, region.getRegionY()+y+h, w, -h); + + Caches.draw(temp, tile.worldx()-4 + rx, tile.worldy()-4 + ry, w, h); + } + } + } public void draw(Tile tile){ if(tile.floor() == this){ - MathUtils.random.setSeed(tile.id()); - Draw.rect(name() + MathUtils.random(1, 3), tile.worldx(), tile.worldy(), rotate ? tile.rotation * 90 : 0); + throw new RuntimeException("Rendering non-cached tiles is disabled."); }else{ Draw.rect(name(), tile.worldx(), tile.worldy(), rotate ? tile.rotation * 90 : 0); } diff --git a/core/src/io/anuke/mindustry/world/Generator.java b/core/src/io/anuke/mindustry/world/Generator.java index f31e3177f3..5a2d2663bc 100644 --- a/core/src/io/anuke/mindustry/world/Generator.java +++ b/core/src/io/anuke/mindustry/world/Generator.java @@ -11,6 +11,7 @@ import com.badlogic.gdx.math.MathUtils; import io.anuke.mindustry.world.blocks.Blocks; import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.noise.Noise; +import io.anuke.ucore.util.Mathf; public class Generator{ static final int stonefloor = Color.rgba8888(Hue.rgb(54, 54, 54)); @@ -34,13 +35,29 @@ public class Generator{ floor = Blocks.iron; } + if(Noise.nnoise(x, y, 8, 1) > 0.1){ + floor = Blocks.grass; + } + + if(Noise.nnoise(x, y, 8, 1) > 0.1){ + floor = Blocks.water; + } + + if(Mathf.chance(0.01)){ + block = Blocks.rock; + } + + if(Mathf.chance(0.01)){ + block = Blocks.rock2; + } + if(Noise.nnoise(x, y, 6, 1) > 0.245){ floor = Blocks.coal; } if(color == stone && map == 1){ block = Blocks.dirtblock; }else if(color == stone){ - block = Blocks.stoneblock; + block = Mathf.choose(Blocks.stoneblock, Blocks.stoneblock2, Blocks.stoneblock3); }else if(color == start){ core = tiles[x][y]; }else if(color == spawn){ diff --git a/core/src/io/anuke/mindustry/world/Tile.java b/core/src/io/anuke/mindustry/world/Tile.java index e5ad3ef9d2..8a48f8c95b 100644 --- a/core/src/io/anuke/mindustry/world/Tile.java +++ b/core/src/io/anuke/mindustry/world/Tile.java @@ -64,8 +64,8 @@ public class Tile{ this.floor = type; } - public boolean artifical(){ - return block.update; + public boolean breakable(){ + return block.update || block.breakable; } public Tile[] getNearby(){ diff --git a/core/src/io/anuke/mindustry/world/blocks/Blocks.java b/core/src/io/anuke/mindustry/world/blocks/Blocks.java index 91d855168b..cc87d2d3b3 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/Blocks.java @@ -21,10 +21,35 @@ public class Blocks{ grass = new Block("grass"), + water = new Block("water"){{ + vary = false; + solid = true; + }}, + stoneblock = new Block("stoneblock"){{ solid = true; }}, + stoneblock2 = new Block("stoneblock2"){{ + solid = true; + }}, + + stoneblock3 = new Block("stoneblock3"){{ + solid = true; + }}, + + rock = new Block("rock"){{ + shadow = "rockshadow"; + breakable = true; + breaktime = 10; + }}, + + rock2 = new Block("rock2"){{ + shadow = "rock2shadow"; + breakable = true; + breaktime = 10; + }}, + dirtblock = new Block("dirtblock"){{ solid = true; }}, diff --git a/core/src/io/anuke/mindustry/world/blocks/RepairTurret.java b/core/src/io/anuke/mindustry/world/blocks/RepairTurret.java index 5437d64343..0572823753 100644 --- a/core/src/io/anuke/mindustry/world/blocks/RepairTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/RepairTurret.java @@ -48,7 +48,7 @@ public class RepairTurret extends Turret{ Draw.line(x, y, x2, y2); Draw.thickness(1f); Draw.rect("circle", x2, y2, 5f, 5f); - Draw.clear(); + Draw.reset(); } Draw.rect(name(), tile.worldx(), tile.worldy(), entity.rotation - 90); diff --git a/core/src/io/anuke/mindustry/world/blocks/Turret.java b/core/src/io/anuke/mindustry/world/blocks/Turret.java index 4f2c3d2120..1fe61647da 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/Turret.java @@ -42,7 +42,7 @@ public class Turret extends Block{ public void drawPixelOverlay(Tile tile){ Draw.color("green"); Draw.dashcircle(tile.worldx(), tile.worldy(), range); - Draw.clear(); + Draw.reset(); } @Override diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 42bf54a30a..6827911a6d 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -10,7 +10,7 @@ public class DesktopLauncher { Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); config.setTitle("Mindustry"); config.setMaximized(true); - //config.useVsync(false); + config.useVsync(false); config.setWindowedMode(800, 600); new Lwjgl3Application(new Mindustry(), config); }