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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 KT-G@yGywo5v67bn delta 485 zcmV007AJr=a^$=YIGZF6VLoYvMBp&H6BH#JaER`s6YH+dnI% zGFS)falOj*h=EGK)8#hz&fJc+-hcU^lvZf-)&2HyTQ19gKDVbtxjmrHOSC==P3dzR zB2?e2h~rj&|Kwdz`uYgVKX;I!`p10)jaB`fMjNVs#10s=`g;sJR6lp{q58Q~Xi9&G zJwWx-IzZ{G--H3k)BxjtV@C%7&;&XFfJ_14DU{y<3_OAW2mk=X=e3(zKY%%2i@y9Q z(e)JMAe8?I!cbxl7}Q{oVMpR*v_k$V2t%_5bDx<*?g7a=R!l#`;$w@0%(LvMqSS0l zG4vTs6kK!_7`lz2=q8+K(0K*aJ%)Z&q0cM4MDObNfSnlXY&K(D#3sHiyNCgkp$8rq bV7`0;52KGTUjuJG00000NkvXXu0mjf=)T(l 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 zcmXwdc|6qL|NVW9F-EqDgoshLl1#EhmXS6)k;-0KvS&+WnU}~?LY8c0MnaJ#$`)o+ zBGL#U+t}9-W8daGy+6O-KlkyvkH@`_d!OfZ?s=T&i8e91z_sVV9smHB?!~j006;K5 z0Tzv7jt=^iaR3AybkAy=-|d}y;pWbN;aMX!@~r97iFWr@otJ;+W26csn&YEi4xmpQ zyM|`x%T)Gq=ZoPI6h7V~=zi0kGd0o!Cx{5Gr~E}jCu<@d#jiD$oMyTB(@DA6L6Y~J zZWQmnBSec{`LfzIyXg+!YR}67w8(n=!RcbFijT+p`{w5v#rZ~;`Eowf)onzw=5!B@ z(q`o1EVvmLvR>xpMXt^daNKJn{+Kf>tz}GQ$02M!-jS22Dz2$ffBNjW%>kKYy@!MP zN=izSmo8k0ytEn6pu2NNbE3?dn%ms0mwwWjyOpR#%r7W#8UFN8h>*c0tZd@uCaa{P zVz#+;$^>t<6V^=@1kUynF84!}~8(yfS&e zi(#;g<2`nEcEwoi&WofHF3ixUhs^EsA)w@(IG~)adlQXKVnYDR6zN-{bYNT4)5C?u z@roOd1>_?f5O8&M^+h0aF1^~ z`Tq3iFobC1!v?Y)&EKEzv#A0h)H_*`Bx%aOBdz-f07f7>rWXMQ2{lzQU4>SY+A@*Y zA#MnN?V8YctrOr+f0bD@mtFbpyC<|hPBA<-3(p2@)Bp}S)yxVkimZiPSIRa<`4=GM zdLRyKZ#CXtL=wdU01tzIklY>ylsy0!qHL1n0YFac3E6K8^ltiK?7l|EwzE;Bu2e z8%Tx#%#w4Yu4Mno`UZ?zL%*j$vujOv8C_q8i zlp&x4hljdDq>mp@-}+US#we9z(#tvW^|Rze}B>23*hT>q4}P7VTKwP*FVb!Fj_q7Li4E-tYEG- zpU0P>J9F_Ecz_yFZ8jiDP2QD`a9X_qh#MaSl(__4ZIr1*va<5x2? zt~tHEy%&cAq)dBz67{qJV=f~-UEvi`3?Pjp&K5)a_l&IU|98}<21+Dc^9(Wg-i6O& zutqg?jc|R|r#%l^QbzkPrkw#GX19#0$q_@;27Q$R6bQcx>=g(H5%x>IlRvny@D+YP z@ZaMMaQ1?mQ=KI@RMbwNzCJHrKlZadGUybVofwUPql%U}L42-%?J4`cufES z5`gwTkjm5sCAY5dBw1koYr$NK@GkhsN|9yJcd-J7E;?QoHQ%csovK7}<0$zbI5wE} zWy9wEhZ2s`#9^0#Nfz{w1pfHe*6Y#lgg1=Yzr&w#3}#_+j39u$G96C=_78v=4?uQw zw^RX;DOBS6>!{;8qoS%ypS-p#3W6K(wpY=Pc1QoexSX31`z36T2t^?9793E053xXN z{{tYg<9!L6q19a> z_0`YyL~f3$m1WNmvkHPH6>95-)+2jqS5qL-XKLDq^No;Z{d)TP$(wFy$|@&(>N8aU z>`_Hh3JDP)>4XSH6*84YZGMKdZ;<{|5y2r4|Ng@u^Fd*7wI5<01sKQeo0;Na+04ry zjh?LZZRvE_<^?{6h?o|;_}ds(bo;g;wvDI@_p?wiLoA_soCc*gu+pgN6~uqM7DWI) zVd-+v7TG)Z!gqJVC_&%RF_Ipc!UOdlkV7F(22i#=n_e5Bw{Y}MMd-A9jdYnExGu_-tSjHxusNLH#mcF!4>bPv~_0tje z@4jePJeSM^Hf$lT)a5l2%BGz2xb7IClehXSy%mGjZy!+gkuZFI%G5*l=+T$gKS%r=st=nUPqDLD(AU%J zbgpbf5LhAvI%uEFd5YJ!hPSVhLuxnWFbvJ@;~`zFT@=d3JEztIu5NBE`f%y$>YbH^ zVZqh;9)rA9|8}yNZMNTLx6OO6Zi|`U??byPUcG*^q-3eM=xly+b74;|>&*~@H{Mz~ z4Sc({?2hiA>m>O?^yYHHZW+7E9CQ=W&AYOlV5A&(so2@dE|1_Mob6ZRsJ^0Xl)IuY z>vEZ{;2%4pelg7Tm3w`+!j~%PCi?I!%5f#Y%0zeEkYBOZSIV$g^YER@cjP3ABI~Lf zNunyA{kWqUL%y}uKFS|*CVs}|9_SsYj_Q)L!OQONHVL#*s;$j`_QS8Me!U5qoUNoco#a{9@GbUe+8J0?#I1{o#-$csmqT8+OF3nbnNofML zN}1TC9S;|5s)#kN<5I`1GxYT~XNQ3kPqL?TuGqCR{GI}=tkM12m}=+lYh=RYTgjyS z{sRDZpQE2hXpG2VfrAvXgAQdQK@^1jv7HEj;+;QN52*RQZtr|!_UlP*W#!dcF~wW) z4_KIb!#Pv(GQrSr<@TuSty@@i2X->cnKT;R@G*q7qdP<3cE`vlTL*(wY{>4Y>BI>h zDiZb^kjtlBB$LK9nZ{1zJF#JciU4nIwMMz(CZD1QfOtu!g%NY2PEc>i3=IPah=<9aHWlIlav4iZM|gzHZdopE^n9qR@K~e) zx759=F@YKWuitED>z<;vFt|V6cQ~&U>IgVqi~L%*;%YK+zx4QW=d70QjcqB@ z-z4(*g6H;b8@Y9RQp_H^lkxG<;M4QPv5!OCD`VfRP#JZ9Sg%&*M?#da_VfICL!qWp z(OnS-l<&>F$*U2t3p(+>2;nt4_q(V`@N%59)nBh)v@-Vs!-=Ci>jRr}3X(hPIb2mV zbFB?$z1(1zFdjdW=iRB=BuxW;aesP+BtHk;Sn+MjIi2jbmshO5wsjb58B#U3j%hHq z>C2xumGPm^PFc)=MhVplc^SY@~Z_hL-REoMd90>gEsC~ zV>{k9EXh~H3htst*Agh9`?PR{CTG-_+jPnU>-wDw zF7T-TrOXKHIH zG2W6g-JYZGO8ZrCC3%CeyD zDqd)`8Re}Oa|mgy-AKoRduHBWGxc&_mzQ@{i)o~uy3o@}ygL#d6Ie%fY&EC%tDA_2xdwOO}6&Wu8%#%g(1|NM6tqNWn2++PH)?71CoQ?Dist9pv zV*=OzXm!oBue4qZ@w`WN}$Y6gp*%uV5nKj#KWnzmJS{m*1U%*LYKPq9mU zXXFSQI~yvbAKykUv8o3J2}V`c^-IOYS;u@^Ha~Bh#6IB5#l-3cs$)gXj%61daiMm zeL^0>6R3>^IXUN^K=i<*9SZ^gL1E+K=SB6#=6qbe`so^_Q!a`}yQ#yXk-}Risp>ks z211~@xp^PJOB-jJPY{-;OeK@#tt&~`q1v@UGXR3uha;P}J95RQ9?RF6OfXiu?PLXq z!Ux~~4y-!^;6_G&&7?8Z2dM)LAFF;0{-p@~p-`0vDyc7nJ|*S!U>!$<172kF zAA7>*_%ng~`}4-F>w`-Sd>Yq4aUuk^g^Dud!EIS0xnO#0G*FbfSflI?9{$_V15{ZR(HvJ`@ z*pg!o5t1&lMY>q2eMP+b@E~#zOb9D7iMTUI1<8j+IE5^e|tH76D zP7-bQ5d%Q?>qVS_a1C49_ZNKPRk2x~Q<`1{(t&ryf|pGb{0*@t7*HaIlpy|XWDAdk zmKC&AZ_jt7p9S`{Jxfzi&*j{&#bFlYKajmIeKsBmiW+T3wryEp6O}rqISg2sy~(gn zk@SUp=AiYR?Vni-Oq);3=3WC$quFbMsj!Tlo! z-UBIW)_)BjrPw;*%~x=%a_kLwBbJsi=QFHh`OsyaljuLBTZjNuq+& z{_Dc4(=CCYmy7rFn6^VCvenMscno0no`ZZ?h=PJRfy=2?EFK7x!y!(#psl%znRI$< zW0^KQr&j8}(PyBUGHXbV73^J}l@S1Kf#L3eq+;O#;NV{`$QB8cht{|OXfHi*TG6fR zSh8Q_>X4&K}?*Yqc=a{B7eA)s*+vxWr7H_a6*EjB{mnzJ%icV%4c<`M@qP$eivX*OxSSUbG#u$wXpV%6*1xY;Ey^d z1aSF-iMU^x+3@}(pqR^Z1J0E{rcsg5q8jLLhzs9iU4vl~Zf2qcMX`$jYAN3u;8IIA z7=jb~!?Rc&jePhD8Q5qeK_`<53AHg$Gvd7F%ZrU0Z&8qj>JB*}Zu63G+a&8I3CimQ zY8e+kO$&Q=xuU3ey7(lbHVuQUpeT0+z&?K?1t8@g2;zOwJHHif52mmu9s`lSy&X+|g z8}!MrVE}_QtqEgY*JCsd`*eU;kQVErRAQ&cj^gNkf&5hu;>U!+Q`=O;Cua5KLJCNL5ybXvbDZG9eOpT* z*A}lNs7bNyx5J_x305Z3(`G`CpRGEuf{R~OL$)jVf&Fg0$9K(q*@R*2QC%GOK9n9W zN$viTF6N0~`x)y(B#s>0GHTJ(JWqqvfEuUH9?EpiBrK z3EMltSprxjbZe2G4se7qBo6uaHdy{9O+>1K2m^YIrwf2R-0jG*FMWV}Ei32VT!&Am zlaW!hIp>`~sp#`=BloM{m6hx=yX7;OA!$^8LyKt8Uv2*~!qPYClUTg*e1~>uvJ5+p z8#!`lMjWrZdTsyrsG$AubtSxB`%+3lzl-mH&PZ@$^RD1q77EIRcVV^YX}9cXpK%vys_W=iVtM}_gNGsY~PaVa9a@r_(>CreX?k<+7^k)`C zOUw*}lcb*;M@*T-kKI2B;rso+0DHbLe0c{5X5o2pMg1UVU{k$MqDXY!poW-A~P+!+Fe<2>9?HvH~W=Z!Dl^>?P9o zW*Fb-l*L0%6^~wWkXyLH9?s-@#N9NRH16O_plNk$(kIA$g1XeoOhx~e)|b;!bjOv4 zun6c61f&S0MIoo0qLjcsH!mCSZa|5WEN)0A@S@{a?021iJU7*0Cg$_}u!Dv$=s#I2uNZY)3*y zE_;vSj56vt4yT{*@1NJ>_229HeC^lknW?cJ52pkt0D#9pU-udSkOLK64$Cc!nF*GinsUaVVtf1K4j(^$ zJlv+Ru+Vep-HkUD71t~*EM6}!dsceQYO}1(&GS9)+^I}Dbt6wgQqm$Yux@#I`I?4? zhOwW&|64`ds^ZvK-oc?E^6veSaxMHs^%+a%PezDSCeXh{jqY9};*NlDBQ_AtOE*`+ zUIMzQ*++qmjg9X=Us^A0hCy)3j|~OHE#q-P_S_5v4hg0llkR&RL&0+wt~E9by{@Ub z(WT~p!2_(HP1g*rl~+(OKYP2|)Q8q>Ha|cACNJ;k{D(`rx4Jg(m*1PbFi555Bq`dG zrPcgb?N~=D__B1OpHLBN9FusU?=Pe5$p-41?%Nkk1<|kaX{)n^UIc%EJ`AMs$6=1L z2|=Mt-D_dsTet@|nj#DL!<^rp**oj@O@)6ZkOm>K1IIo5c$G(P5FZ4s{IUWv6E$SB z#GPu;Bm*}YE-Nn9=b|Np^6cIGilNqLLY2Q4*l>P+m4~z(ji8P_Y3CjfL^*0l@9*a? zNK(V41vseNlRPg5$@6}F8(BQyvOwVn1z+)gaTN5(Hx49P(6Om@EOl%#s26}o_j#Vz zv4hkjU%`yzE>^=84lw(LX89jYPk<}gbwc1hxC#Zy>IsalLx-1uV;4Jd@U2x;q9U+- zXDuMH=|PYXq_N3R`A%T_ufKh$a(a-a=dL78?9D_s-|6zS?PmTjUCZKGwQAj_L0Ijm zP8ga8{_1>#651TEZU4)Fc&{6GI$MH;@p_~*wL>7V`4&BgCxYCQ+#c_1=JowolyydJRc(;Ev$9J0y^hWi(|jzThp z%69|)$)8!1)Hl)lYfgMhXCAAs9lI$c!4hCNpfqe=^g}K~7GDg{K}dnXrC*H~C?iN* z;AzdLGq)VCBnT1z2tX(s`~a}W6XOrFJO~%z@x-qjBdqntp!;En10HZdZMR+K2JVFC z0Ec2M1US7JI@9Kug-Jg-Uchu%mC*VS*s^_O{K(!Dp$UJ zGj5oR^!p?0)VKu234XY(oag4bEel#>_G{9h)t5u08WAVH_`_)nizdjN=q2C-T}03? zXU3_ARuh_iDKc<+7g1p0bMk+fN`vj$_}Qj+T!P^{=LCVN+gB%iRm_(tkqB?oWGHa| zG4y9_gWa}W9yy;=>Hx&N|DBZ^c5yKJm3JBjfug_dQCBDHKEQG09DPK5HN68#M3d(2 zjzb{ku`Md{dLe)~Z6FTeheG&$Z;@Ce%oXp(YQh!nDIVsV3_M#)a!5b<>ht{iAm71U zCHwGUo7qbLjYYHAs*1Zil!;?s7UPtxF@L)%9=o*Y7(}nVe9Vl0@c;IWzNkVe;X&c; z%YB7LJ8L{>FFoyl1!fUEK$IV?&hGUUj!Q&B?;Z*pEr2-P4f+Navor!Xw%~qO*f_OJ2^g3^SSQh6qb5YGh}P!rsuS6u(tY}>95BcmgfT72N0;B9L?R|XZ@IeT{oEv z*$P3)=tMLB`A(6|K`RIGO}8cawvme{XYP*ZwTMysb{5okP`$2QjIS+`jJ~yn?_Wnr^tTeqWl~242 z);G#7r~Hy8KGLY*4YurE#SM*xBcZlXKsz6@U!TSK?q;3k&H6{*!%btyvR>5usk}3M z5jkH>5X;1HYRPt~2EF!JKdZ11X!TGn!V*}w?}Sb`Q|dveBlgq0q=qG1cjqgG9^Y{7 zOd=^YZHydO?89jk8Ok&#t1~tbe`89%tX&D~e zE4SXPa{$?SA)DBX_|DGg+a+5~2hn37lo(01fjI1b@n@%qM$Fb8lYTCu5F;qfc3GC2 zj=)tH0ir%GO$sI;^DA}@e{F4*Lyx_CrK2{R3t*%=mPus)*G;xg_^$!MTLZA?O6?WE~Tac+Sb+k8!MltJuyLBll~I$48(5R7Btck@T27&xA{I8A^Ab#&2|Fg zPTr1IMTW|a#kh|)OB9e`URM9tP`?82VDzlkE5|-v${fL~DVxuWAD&XMD%v_HA&b7{ ziltRjEv>AIWFFbw+Ku24`sk%$7I*DIu(ZeDgDDjuGmeoW?zrw(yHnW1_Mtf|mEpNe zY|H_di^NP;yF1^{pJqul5~QnaXv^b$_I#=(GVGK{F42u?9{SouO@FuyxQooV7$696 zF8s>aW1;D4_dV&;wSGo%jLpr>l(NTAXjU{_1|UO=<850g>>R@#O1t9$PYSvs1p%X2 z=@*iBe4Py%L+@w)vBCU#h|Rmj%jr7s^`U35UeQui#a*8mMyb0?&OuES&CV~zUC`7s z2Azv3+buBTpC>a9jj(<%5ldwGF-s@7Z+Bj)m4E}+t# znQKQ&bPBeMMRS0>tOajQ$Eex9^L+!1ijVkJ8P;m290e;XTpj%_!r~Ti_fe}F1tiYR z_gfMd9qJt>vA^&|R5;xTbjUi+=edcreh+b>*@kKiTh6eY7v8=|$l~SjJGy7W4em*{ zxrrhm(c1u6agc=2Z0DtjrS=V;-hffIX$`1;05>o(rRs0Ti)L&7{qGf9>$H>$ zOCx#iuWv1(c`B?!gAY3{lfw=qvh`eRgFsJQy8L=|RjHmqo?#dqPga6}1gv#q+>@;c zrpD-rxW8>q65uACfN*}y-&w3rI!oX2}`f^Yz}& zevZ0xHBH4J-G8F`!48v}t26ji;MjF7Ev?QIDEU=2mL01c%0Kbc*94Li)aPZPPLr;5 zp`{2r4;zPAoD<=*_)j6~?Uq#|IaV>yV#UVnW#9d^H`glj?}fd2E6ch8(D^Yq7!M#k z!ql+>K}1*v?+74ztn*!gJ@ZBa#$vb96AeS3TFm2LYx5;74Es=1RQ+n%{d!qxk~d+r zU8K3ZDcZ3u$udgt0Uvg+d~3kmBr^K*g`w$ZJ?G8tOpJCKKbgAlUcYNfUc-N&%!i!D z(KP5?$)u@`)p_YI)+9DGs2h%aPraw$|4r`<_kd6|$7cHNIb*&}yj9Zk zVB|J;eG(<#J^F*5b9F&r-*N&GmmreR-J#UW$BwUEtNn4*0#l}_vSS1=oZC8IYN^-k zjsX9YpghpWcKFa>|6pnbbZET4Q1z3Vn@XlWCvfmI?72Q45;Z`Q*721wpc^6QWH>so zUid)*4D4o`qSkQ0A3M3tt#{e9R*#f*9zfXtGB&(Yt!i;gUZRq=y4WodujF{7xU zp7vK|QI`n;ghoB89@ntN2toeuPIwjd_TiM9+C-4^`@(21JF+gDl~(YqI@H*4^sA}F z6d|ki-Drw^R+r!E&{D5w^WH(T_957dIi2aGt9Le=jTGxbf^V6UI1c{d|f zwg>WEJs^ON-C4{xfk zx}=DbK$*Wk`Cl zt|@ddXDATjh;8;JkKNnOK@-29=9Vp{QB^alKlp*B_*O;|5Ag~aumS0r=LcX!Qj7w* z18jzU3th}_L}_}9Q$-;9urHUu;aBrW{K;Rxk?7?q$j0kZ6#2BVc+%b;VOp+#Sbq-?OqSbVf#;bv6}>nR8=9hlnNn zF-lvi<#36!QvHyV0G-O;J-R}9*d~NsYn_JS)R(h>n6rLQJn0!}!}%JC=7g$Y(@Qu? z?-hZhB?Qk2qNIr{Efbfo(Cd;Q2^rX>O)R#=9)|Y(c0}}t5bpzn7T+APQwEgc0!P)^ zV7tJ+;m-d*aby7Q7AYGA{{*`uDXbTCx%pJSV#3YH2eeOU92nupD8Sx>r%p`WIC1f}A3@7zJ&~pL6hP@{^qm$V}mK{Cir|K0S*(6qAPl 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!ia0vp^AT}2V8<6ZZI=>f4S$VoRhE&{2PH1S_U;jVps04%O zCwq~_T1S$&x}0{f1&JzoC#5ddKGM3eipg2f%seU7WmftJRf4d3w4yhE&{2PGD&I|NsBvBLxkv zpWfGV99S)|?1g^Y$&9XlinH5%6+JHUt6aWd$h>Rn|3ZypSzqI8!j!fDxt%aR(RDwW eg?}R>A4A+!of-d^1)l~Q%HZkh=d#Wzp$P!|?J#u! diff --git a/core/assets/ui/out/icon-arrow-right.png b/core/assets/ui/out/icon-arrow-right.png deleted file mode 100644 index cd82e8422f78830e9d5ba6c5858c6ad1c0d80e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4d3d@whE&{2PH1TQ|NsBvBN_~z zOf3JBG>#=5iqGjPjAUo}KS5M^c2l3@19l%nz19;C^zByvf3!&|_M$n@`2@~+-y@pa cZ!oYk+^o=mdKI;Vst002=ecmMzZ 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!ia0vp^AT}2V8<6ZZI=>f4S$MiQhE&{2PGD%-U;qEnQ63AC zzwJpOM=eAWHI6Oka5YqPEjW7PPU}?PZRrKtEsQZ-h79)(urV>@FVQ+y*ZfQgXa<9) LtDnm{r-UW|-76zy 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!ia0vp^AT}2V8<6ZZI=>f4DS5g$hE&{2{_+36J+ss?Hi-{j oO4(@#luk6b)}&~vSjtE;FjofbyS{j%3{W+Lr>mdKI;Vst0On;GbN~PV diff --git a/core/assets/ui/out/icon-cursor.png b/core/assets/ui/out/icon-cursor.png deleted file mode 100644 index 19d494f22e0d382c65ae9232004271659b2ed95c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4>3F(0hE&{2{_+36J+tAAMw!+V z4H>NxQYVZiGJ0ODPZBkHuvtp_pMT(o2S*uV4Xm#8`1)T0>SOS9^>bP0l+XkKU~3>K 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?2qA52RCf*(M! zhyVZo=lQ?TL8;iX+2vW01(5rnr=GvX(7;fDGvWg4Jpb+={l1E4j{L9S`Q5)}g2IA{ thw9l6OHMo@v2X@sWS^krfsc#~TKDv4*S)pQ23pAA$?odsvd$@?2>^yUIcop_ delta 111 zcmX@cxPozlLk5c+tBCd4ClZAW3=Hm`E{-7*my`cgEA%u<95{3U2vYV7tzT5nepr!f z;RAcV(jFcl@ZoW3Y7G1FKEdM7#TRmorxbmTERtB)(Fg<+Z!oYkEXx#_X%+S63D8Ie MPgg&ebxsLQ0E_c1TmS$7 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!ia0vp^AT}2V8<6ZZI=>f4DS5g$hE&{2{_+36Ju^@E+R9eZ o<|h&b8h`kYUJ16yGL7J4$f^Htd%twwL!fE~Pgg&ebxsLQ03NX$_5c6? diff --git a/core/assets/ui/out/icon-dots.png b/core/assets/ui/out/icon-dots.png deleted file mode 100644 index 84c19e8d409be06ecdf5ca3a3a89b904ee917b32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4NqV|ChE&{2{_+36J+q<2bQYcf f|A#BCCh#ygv6|iBngTe~DWM4f>k1VJ diff --git a/core/assets/ui/out/icon-down.png b/core/assets/ui/out/icon-down.png deleted file mode 100644 index fffbf7e3a169ad54c2057cda562bf96f0e4e5a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4S$euShE&{2PEZj0^Z);R4WCVi z_6PK=W6dI#>eEjuvgeNFXUJ=VTOW|mQ5l9L$ja2lSlbe#DRt| Nc)I$ztaD0e0sv0*B-8)^ diff --git a/core/assets/ui/out/icon-drive.png b/core/assets/ui/out/icon-drive.png deleted file mode 100644 index 06ad6dd8cf15e03eef6d8b1e10d82a077e7a8700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ|!3HGnEcf4>3X_2hE&{2{_+36J+q<2bQY@w z1vkO4*8iP>9l?T|oc45aXr?H*DPBD2yw8atSkv!-mPyMEphgByS3j3^P6EjomvwOB=A@LeYqeZ#dsT{ZAV-UX zEz8y-356V3-_dNnX5Y-4*Umfet50pc-~K-Dy_xyVJd(|3OMt6D$^fxqZ97KjkIro2 zaSfVy0Uy5cMQuVQsc$}#C(M97MKUJRBxn>#Tc(!sgb|goU~C%x_pBoI_YPkR|~VxcGm!Y<(Eq$$%e)hHxPdM1gEGCW?VNg)~ z3+#gl@S;<=z=;xU>^z2?CntnQpjj}sjtIk&8SA`|%W+m{lJgH=scoSR%!I|D56plu z@am+n3LL9;nosulG7dn6M7S(zZS8iC`e}AHnFeui0?s+%p`_KhXhH`&e^^1c89#^# z3g(3Cg6q4v4cP96DvDK>Ly!4a+_gB{x@-#vCBj)lUODJtyM3$d6V7VQ)q{5v**);8 z+_YUGWr$548Xq7Ed@8cvkC~dC2T~ioBkrvXsSBrxCv;0Z8#f?DybM7By55THJOvg0 Y012N7Vza|O4gdfE07*qoM6N<$g6GBR+yDRo 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 zcmV-}0et?6P)Nkl}>wDng1_S%_6CU%;~v@d4~iYndXYV4uc^&{~_If?y~13TbR?Erh56 zH{Zb>ER&htxy>cSfqxb5e%WO&7h|n`wX@F~+C;`JpS_EFV@iU&SnsGi1r3#b2v~Zr z2E_)A-6^PvI!xQ-;>5XTq`@eZ2;cPB16`u45T=2CQQZUe(Mkx@Kz+Im3}ixB2zo?S zC6r^=940}Z=p3yvh!2vmCkkz#Hd++`4thre(gXT)S4E+Ubn|osNHbx`ow-2VI8Y6> z0&SH6X{!87=rB9V+$pU^LClQ~(06v-EqUfn(SBhlfaG(NVd-aMax%k^uw6gGF}_1z z%+Hzrf%U9JnrNs9qK4KBY*#dNhF+YPUD1`Opq=cEn$9yiiCBpWN^E(v9FX*PE2gFo h8kU?0&1)71O#lzshrKbP1h)VH002ovPDHLkV1l1-rI`Q# 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 zcmV->0)+jEP)18Oiy<_y%wa~_C}xnLajg~!Zd^#Kf)*}Jg2EO>QHykuAP8cZ5Q3BoML`#} zDgq&NBNz!IVhAZ(Iv5cI{gC6rG{^VIJ8J7-@z%61xkTKc}^y4ni}T3*3Mt&`5)jH_y2G! zr@)%S3SThiDyRbO;2kG|O_p+-_tk+Tpae9kLfK{g9(02|%4FhS=B#r25p;lyEMb_k zf4nZYYhcvR%3H2aDnS&Sa&Z}k+M1=Zj&SmCu#EU$dI25ZIWer>z05yp~zcD$bvdPr|Cui){W|3*ZEp;i&U Vxnw@CM@s+z002ovPDHLkV1fY9Cr1DP 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!ia0vp^AT}2V8<6ZZI=>f4X?eOhhE&{2{_+36J+q<2%x2yP xAsy%b`S%?9e?%ii;o1?#fDYphi4NWZhFk0|r!LH>4+H9A@O1TaS?83{1OP|aAM*eJ diff --git a/core/assets/ui/out/icon-fill.png b/core/assets/ui/out/icon-fill.png deleted file mode 100644 index 7a9152b19f48da61830a18cd0019c89c4c3d0412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4X?wajhE&{2{_+36J+q-iEQ9oc yfDV3vwIA#axg;|dO=#3<<@xdFfJ06LGsC=?m`zrXudf1XWAJqKb6Mw<&;$Vb`5u4( 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 zcmV-D0>b@?P)qiG`hwq+}uQVj)GcVP)YFWr5fzClNJfE&&67%=*AzYd+uvgTaOs*=gjoDcglKh=l>#5!0joHV;N`3D(OkusB-`y%^4 z$ymN*K5?r|j+F7ccy_x?u9OKpeEdH$p^H~8k$D39?6VE5(R03(37^YVRB%G?N=c{<_^Xt821OtojMC_c=m4GI62!Co0ku~)GF>1} zcbcDq6nfXHYhSN=ni}XVvawti2m?nf*Q;upcBwwZ>UjetBqd{rc3c??z(l<5QQRGfQY95m8sth07P$_i>|npVJrz)YE5lKE|z zD$`>iBkE@pY_Z%m*Z}t`Wx7Eb36+B+;7zxOODgJfn#M}1l_*dQn!%t*G=V7-s5STp zCyI2Nt)3Qoe&Od5UrnkIcceu&a@8P`Mo7dRNOqOXFcT5=5k&cUmOrMW!@TQ@!A(Q# zwy&(y5%#XaV1H67BS-{u>?n|VKiX@~sLniHAtSN!4v7K~sBilLZG@~Gt*>@800000 LNkvXXu0mjfFuDE` 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!ia0vp^AT}2V8<6ZZI=>f4>3O<1hE&{2{_+36J+oO4V}a(8 z3mr!q8TW8;GOpp;*d@40Y_(I2+`=Z0i#Q**i2Y$fx z;RF;o5L7rIV9>o{ekm{cgX6& z;Ej3dZGCbl#?KH9!h=qW7B9RTI?LaI^t*Ai<=Yd!O zh~0qr84fkyfH)tB8L62@a0Rz95KqS;zZYw}1X|+Fq%u~;6C$8AC5+KHqEXAs5-o(X zf%qnpSUkNP(haq67Z6K9#WQepxvAn1JfQ(9 jP4x(bm@E)0Av**B?XD=sA_&lU00000NkvXXu0mjf7Z0|k diff --git a/core/assets/ui/out/icon-folder.png b/core/assets/ui/out/icon-folder.png deleted file mode 100644 index 1aa5459864ad4a2f2cdcde1243006158cb4da936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4DSEm%hE&{2{_+36J+oO4V}a(8 o3mr!q8TW8;Ha=WAL4l1ytTkZY>Hkchfr=SCUHx3vIVCg!0Q@f-BLDyZ diff --git a/core/assets/ui/out/icon-grid.png b/core/assets/ui/out/icon-grid.png deleted file mode 100644 index fb9cc505087920e5b238fbf5ddb590489c1db81a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4$$PpuhE&{2{_+36J+sJv_oUcKEmxpY22WQ%mvv4FO#sQ`8Yln& diff --git a/core/assets/ui/out/icon-home.png b/core/assets/ui/out/icon-home.png deleted file mode 100644 index d3d41816b2338a3962693af4aac2a9a3a3cae677..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f48F;!lhE&{2PGD&I|NsBvqdXQO z2N_l+$#fZrJPvMIG-HC&j-*MVLb;}9_k-36=(92WX7W1_>R1gjg2B_(&t;ucLK6VK C#2;}0 diff --git a/core/assets/ui/out/icon-list-settings.png b/core/assets/ui/out/icon-list-settings.png deleted file mode 100644 index 726542815531f2ba13838689f845ac96f6776cc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmV;W0$TlvP)S>(|bO9H(phzGIKgCG({;U(0BQUnu1NdzyE2Z_*&f-VbQ ziW2l7-U8h+5j27hfgq%al=$c8cb4~);qALGi^CWBqw1c;9!eoJ`A*>Z#0`=e)n3nqffXe?REFY}W?*PaFKfp4$0lL62 z$c&b-e_)&WHo*m28OPp{*vnu<@{g;8nJ5><6mtdKp?g*ZNC1aSa0{4azFw6ulVpQj zS}D=?g!#&wLiQRRJt{mbSQnQ^{qf+N^lFzCE2Fbgl`s=~tP$LH=@+l_qjWw0%=-Oc zkdonv$Y4{#wrJ)06@7m}703dQ=})B5H^r`IKEKIwF-M!-$NcS-5SxrV-u&Zi1hZFF?h(hs92UIMW4o zN+V2U-hGfvr$HG=1dr(TaqBlNtN=WuEEKCd!5%1zZ8vzSNe0;pt?bcX)=A7oXnB}b zUliL#=@RfoBtSHUHHRrIO&a5Ij=~cQa}heAs83IsZ_nB6A!lV2g~=zt5V%PG_mY2I z`#BdyVIC6H#vYnXHA~o%>f18-JHO?P<@I`v5oQKorxKFl`1m|W$3W&Li@lSz00000 LNkvXXu0mjf?KC#? 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!ia0vp^AT}2V8<6ZZI=>f4sd&0LhE&{2{_+36J+q-i@Phwb rggTe~DWM4fORgLZ 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!ia0vp^AT}2V8<6ZZI=>f4sd>6MhE&{2{_+36J+q-i@Phwb tg^uC9HRgL 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!ia0vp^AT}2V8<6ZZI=>f4sd>6MhE&{2{_+36J+q-i@Phwb tg@R diff --git a/core/assets/ui/out/icon-lock-open.png b/core/assets/ui/out/icon-lock-open.png deleted file mode 100644 index 144858d4d8204a7f058fe5de74fb54e13848a7a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4nR>c7hE&{2PGDg2p01GcN51P} zQbEHqj^?ushfQ*F_HaoSX#VMEejL&<)qkVYqBUwS-1bN?uy4+7d^9uN31|R=r>mdK II;Vst0Agh$6aWAK diff --git a/core/assets/ui/out/icon-lock.png b/core/assets/ui/out/icon-lock.png deleted file mode 100644 index 1fdda4f86485b0672cdac9564972c7ad5ecda83c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4>3h03hE&{2PGD$SWxD=Dl7++M zAN)sGaBb8$bWF|vVZDsRa;G&lU7|v%rjF*1jxq$leex)#xsDa6mBG{1&t;ucLK6U~ Cp&;7; diff --git a/core/assets/ui/out/icon-minus.png b/core/assets/ui/out/icon-minus.png deleted file mode 100644 index 1c705fe896b11af46e57c712f7aafe35e54f3d73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4se8IOhE&{2PFP^|nW?ih|!e${Fbg?&touT`{VFj7{l5c@p7(8A5T-G@yGywq58y)5V 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!ia0vp^AT}2V8<6ZZI=>f4*?77*hE&{2{_+36y>n8MQXEfE zv+pB&k;NU4gIX3!%vTaQ+9GmLG`Uzj%f4X?nUihE&{2{_+36J+q<2Yz3YN wp&fi1w2rU_hzK$9+_=*^)puL^ixmP45wCp?9hwj_7pRHB)78&qol`;+0LY6S;{X5v diff --git a/core/assets/ui/out/icon-pencil.png b/core/assets/ui/out/icon-pencil.png deleted file mode 100644 index 90b393ea9725aa1ebef35d64125c86eb5db2f952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f48GE`ohE&{2{_+36J+tAA2}}|R z3T}dNtr}egnnwa!d=f4>3F(0hE&{2{_+36J+q<2d=;Yv z1vf#z*8e9%PdM~A&6)Spzi0jb$f4S$n!ThE&{2PH1TQ|NnpTQ3(c5 zA+`X~BtuqL#TaJ3*7`zC7SBHpK`niOB1+72xH`AZ+K}GCCzr%5!!X}a?E21yg{y$Z OFnGH9xvXf4>3h03hE&{2{_+36J+tAAMxj=N zhG0cA24VFTAMAG>`X908$ZCPY% diff --git a/core/assets/ui/out/icon-refresh.png b/core/assets/ui/out/icon-refresh.png deleted file mode 100644 index eac6745c4e34785e41687d79a7efdd195f589ac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ*P)fXmuG)qLdLAy%YoBA;wr#ntYdMZ%mCI!-lgW7CXDkmwwOVDrN7*_nolaYP z1Qkel2a>-c{PzZeAz+OO6-WCgf$dyg70uM;f+4apC@0wo|vQ*{P3C2botLZN6Hco1~D z1mcoKAECvrX-3&4IuJC#vN40LJPI6}h*p7bt}?Iq;Ve)V(AJ4^T*Z}UB)GFG0XB#y z8m3dsM!YM1h!1oSnI{T!g-;~ciF_IE#B&WPY#aj~8BRo!e)FKdfgt`xG$?uRQ=t|W zx#fsqVai}JOH8uVZ4%r_FWd$T`G?OWD!fc0N^s{u;?d zZAqHRDnxv~`=V>d(v7HKm{f5jhl2k5?5@*I9bST)l%Yink85%*=ywlH$wVE+#n+_E zE>B7LRB`d)8)Jb#N35tt*Kn}I(C7pZ;6vsJm=K;fd8U0000f4NqM?BhE&{2{_+36J+tAAL>KKA g#yL5YM1_tpY_>PM@ytU18c-F3r>mdKI;Vst03u`;EC2ui diff --git a/core/assets/ui/out/icon-star-outline.png b/core/assets/ui/out/icon-star-outline.png deleted file mode 100644 index 5ac6d6670e79e7572cad3dc28b31bfec158be0ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)4*6 zkx5J*K@7a6Y~(9e(?}w4iOF|>UHp6nBxxCuH5nTk$#V1o{p7n>M^o3xJSKeu@_=06 z6|c?d8Yu$G6etHCG3go+Tf=LQ7^9+DBm}B~6GLzKi4ni1hR9tV6-fhviUMJrM>WEV z8o{UrU#m9Yo&-iPIAB7H$y&EaV&|BFd(357tfFQ%$s|#bV{}_8kN^woInh1}-pe-_C@iLyw7Up!g*gGu>tR zEOwNbu8XIUY^-|zxZANOJmHQ=A?Dsm)6zG>?y!^GVG|}=H|dne_`8_1ir0k6jCdJY zA=|f`9C~70182<83ahD}cob_Y@Qi{VEa4I^n^=+&y!+^QC7<`SjIgKCYO(}3{H#C< zfJO4^NJov;KR_o&LXxLo)!rL`12%8gjScp6wVqkx0jseVcKC;jd)RH8OYK6 zlbr=j<8}^6caM#c5lJmLZGx04U`p3WvWf`@h7x2NpZ3p@P)e4 zqR8SaKzxnn7Nc2e^dA8XNwu63i+hnQ?xB~(OhEhu$>OI#%uExD(R}Oj9}_r};%jm( zo{z=ic_dqmW+)-d0mL7$So{%)IY}{#RExv@;|8ImS{w+())l zpMGEw5c42=KM085($GRs+K9vz$Fe|tfCiQxL#|M8B`#0_kq^Ybs9@o5AZ|b|V2DZ8 zra*j~0!!}$u{Acc;rSR#Apyg@Ks=KSOIHE00M=}TT!7#yrC@k636>tjWg)>L6N|=O zB*v>Wz9JNFS&gI-6l6b14C-pKEJpKf3>k6!5MNbEti`LzOx5m`#4$S%f5KwuXCTf5 z;&>o_j>F=$Bw38+TOTY29tL6+BsJX7LgELOL?(sJa$+o=jbzYQXwAZeBg?4*@m4g; zE6K5#2`L!SeTfhI0`Xm_zI(_HCDvjaLcYXP;IKiJ0a#aY! cd3l8l0QZUuCU-Sjk^lez07*qoM6N<$f}4uV6aWAK 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!ia0vp^AT}2V8<6ZZI=>f4X?eOhhE&{2{_+36J+q-iEQ4%9 x=nwgB&;J)i{~b?$``>ZVgpBhOL~JSy8IE7JyAWNUwic+1!PC{xWt~$(697N2AesOG 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!ia0vp^AT}2V8<6ZZI=>f48GE`ohE&{2{_+36J+q<2u?EHx z)`G&4#{Ur_3pHG(AGpwQT8n4-gryTSR(F2mxp>f7fSF<5-Jm@-mp#t{wKI6S`njxg HN@xNAYN;dU diff --git a/core/assets/ui/out/icon-undo.png b/core/assets/ui/out/icon-undo.png deleted file mode 100644 index dc056917f4dd141365720ea76ae77841ed6a8d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f48G5=nhE&{2{_+36J+tAAMxj=N zhR}!gCa(W4ni@O^bO=xkGmKG7+A)1XerK3Rl?4;Szklw>3tW2gftndSUHx3vIVCg! E0065Ypa1{> diff --git a/core/assets/ui/out/icon-up.png b/core/assets/ui/out/icon-up.png deleted file mode 100644 index 8f8d40ac06e8adf822559d1dcf0d36e565096a6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f48F{)mhE&{2{_+36J+tAAMxj=N zhHyoz1FJsh&swxUpl8ts{aq}(Bz7t63N{eAWLB{ui9tNYVawc&Ufw|644$rjF6*2U FngB%5B7pz^ diff --git a/core/assets/ui/out/icon-zoom.png b/core/assets/ui/out/icon-zoom.png deleted file mode 100644 index 538b0b08f40da073590eed9a313ccb70bc7b3af1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4nRvQ5hE&{2{_+36J+l}ObAh1~ z*MpiIu8m!SK`hgiy%jyfgun3YQkrw{^ZW*BNr?}hO34h;S6og-Y3{rN)X(7Q>gTe~ HDWM4f=1L$y 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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 { 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); }