From a18ae3ccf90516bee344b7f31749674c0d262a77 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 5 Nov 2020 20:21:30 -0500 Subject: [PATCH] Icon refactoring --- .../mindustry/annotations/BaseProcessor.java | 2 +- .../annotations/impl/AssetsProcess.java | 5 + .../fontgen/{icons => extra}/logic.svg | 0 core/assets-raw/fontgen/icons/admin.svg | 62 -------- core/assets-raw/fontgen/icons/book.svg | 62 -------- core/assets-raw/fontgen/icons/chat.svg | 62 -------- .../fontgen/icons/command-attack.svg | 62 -------- .../fontgen/icons/command-rally.svg | 62 -------- .../fontgen/icons/command-retreat.svg | 62 -------- core/assets-raw/fontgen/icons/crafting.svg | 77 --------- core/assets-raw/fontgen/icons/defense.svg | 63 -------- .../assets-raw/fontgen/icons/distribution.svg | 60 ------- core/assets-raw/fontgen/icons/effect.svg | 62 -------- core/assets-raw/fontgen/icons/exit.svg | 63 -------- core/assets-raw/fontgen/icons/fill.svg | 62 -------- core/assets-raw/fontgen/icons/hammer.svg | 62 -------- core/assets-raw/fontgen/icons/host.svg | 72 --------- core/assets-raw/fontgen/icons/itchio.svg | 62 -------- core/assets-raw/fontgen/icons/line.svg | 62 -------- core/assets-raw/fontgen/icons/link.svg | 63 -------- core/assets-raw/fontgen/icons/liquid.svg | 62 -------- core/assets-raw/fontgen/icons/mode-attack.svg | 62 -------- core/assets-raw/fontgen/icons/mode-pvp.svg | 62 -------- .../fontgen/icons/mode-survival.svg | 63 -------- core/assets-raw/fontgen/icons/paste.svg | 63 -------- core/assets-raw/fontgen/icons/pencil.svg | 62 -------- core/assets-raw/fontgen/icons/players.svg | 62 -------- core/assets-raw/fontgen/icons/power.svg | 62 -------- core/assets-raw/fontgen/icons/production.svg | 62 -------- core/assets-raw/fontgen/icons/refresh.svg | 62 -------- core/assets-raw/fontgen/icons/save.svg | 62 -------- core/assets-raw/fontgen/icons/spray.svg | 63 -------- core/assets-raw/fontgen/icons/terrain.svg | 62 -------- core/assets-raw/fontgen/icons/trash.svg | 63 -------- core/assets-raw/fontgen/icons/turret.svg | 62 -------- core/assets-raw/fontgen/icons/units.svg | 62 -------- core/assets-raw/fontgen/icons/upgrade.svg | 62 -------- core/assets-raw/fontgen/merge.pe | 6 +- core/assets-raw/icons/about.png | Bin 0 -> 95 bytes core/assets-raw/icons/add.png | Bin 0 -> 99 bytes core/assets-raw/icons/admin.png | Bin 0 -> 3781 bytes core/assets-raw/icons/book.png | Bin 0 -> 2389 bytes core/assets-raw/icons/break.png | Bin 0 -> 145 bytes core/assets-raw/icons/cancel.png | Bin 0 -> 131 bytes core/assets-raw/icons/changelog.png | Bin 0 -> 1498 bytes core/assets-raw/icons/chat.png | Bin 0 -> 106 bytes core/assets-raw/icons/check.png | Bin 0 -> 1097 bytes core/assets-raw/icons/command-attack.png | Bin 0 -> 109 bytes core/assets-raw/icons/command-rally.png | Bin 0 -> 95 bytes core/assets-raw/icons/command-retreat.png | Bin 0 -> 94 bytes core/assets-raw/icons/copy.png | Bin 0 -> 120 bytes core/assets-raw/icons/crafting.png | Bin 0 -> 1535 bytes core/assets-raw/icons/cursor.png | Bin 0 -> 113 bytes core/assets-raw/icons/defense.png | Bin 0 -> 2590 bytes core/assets-raw/icons/diagonal.png | Bin 0 -> 1526 bytes core/assets-raw/icons/distribution.png | Bin 0 -> 3281 bytes core/assets-raw/icons/donate.png | Bin 0 -> 3708 bytes core/assets-raw/icons/dots.png | Bin 0 -> 95 bytes core/assets-raw/icons/editor.png | Bin 0 -> 2523 bytes core/assets-raw/icons/effect.png | Bin 0 -> 2141 bytes core/assets-raw/icons/elevation.png | Bin 0 -> 109 bytes core/assets-raw/icons/eraser.png | Bin 0 -> 1338 bytes core/assets-raw/icons/exit.png | Bin 0 -> 161 bytes core/assets-raw/icons/fdroid.png | Bin 0 -> 1762 bytes core/assets-raw/icons/file-image.png | Bin 0 -> 129 bytes core/assets-raw/icons/file-text.png | Bin 0 -> 116 bytes core/assets-raw/icons/file.png | Bin 0 -> 111 bytes core/assets-raw/icons/fill.png | Bin 0 -> 141 bytes core/assets-raw/icons/flip.png | Bin 0 -> 4349 bytes core/assets-raw/icons/folder-parent.png | Bin 0 -> 115 bytes core/assets-raw/icons/folder.png | Bin 0 -> 99 bytes core/assets-raw/icons/grid.png | Bin 0 -> 114 bytes core/assets-raw/icons/hammer.png | Bin 0 -> 166 bytes core/assets-raw/icons/home.png | Bin 0 -> 105 bytes core/assets-raw/icons/host.png | Bin 0 -> 107 bytes core/assets-raw/icons/info.png | Bin 0 -> 2355 bytes core/assets-raw/icons/itchio.png | Bin 0 -> 1474 bytes core/assets-raw/icons/item.png | Bin 0 -> 112 bytes core/assets-raw/icons/line.png | Bin 0 -> 128 bytes core/assets-raw/icons/link.png | Bin 0 -> 139 bytes core/assets-raw/icons/liquid-consume.png | Bin 0 -> 110 bytes core/assets-raw/icons/liquid.png | Bin 0 -> 2789 bytes core/assets-raw/icons/load-image.png | Bin 0 -> 134 bytes core/assets-raw/icons/load-map.png | Bin 0 -> 115 bytes core/assets-raw/icons/load.png | Bin 0 -> 124 bytes core/assets-raw/icons/loading.png | Bin 0 -> 1355 bytes core/assets-raw/icons/lock-open.png | Bin 0 -> 122 bytes core/assets-raw/icons/lock.png | Bin 0 -> 1527 bytes core/assets-raw/icons/map.png | Bin 0 -> 2409 bytes core/assets-raw/icons/menu.png | Bin 0 -> 97 bytes core/assets-raw/icons/missing.png | Bin 0 -> 117 bytes core/assets-raw/icons/mode-attack.png | Bin 0 -> 1356 bytes core/assets-raw/icons/mode-pvp.png | Bin 0 -> 2202 bytes core/assets-raw/icons/mode-survival.png | Bin 0 -> 1338 bytes core/assets-raw/icons/none.png | Bin 0 -> 125 bytes core/assets-raw/icons/paste.png | Bin 0 -> 118 bytes core/assets-raw/icons/pause.png | Bin 0 -> 93 bytes core/assets-raw/icons/pencil.png | Bin 0 -> 1359 bytes core/assets-raw/icons/pick.png | Bin 0 -> 1347 bytes core/assets-raw/icons/play-2.png | Bin 0 -> 123 bytes core/assets-raw/icons/play.png | Bin 0 -> 104 bytes core/assets-raw/icons/players.png | Bin 0 -> 105 bytes core/assets-raw/icons/power.png | Bin 0 -> 3603 bytes core/assets-raw/icons/production.png | Bin 0 -> 1789 bytes core/assets-raw/icons/quit.png | Bin 0 -> 129 bytes core/assets-raw/icons/redo.png | Bin 0 -> 1344 bytes core/assets-raw/icons/refresh.png | Bin 0 -> 4011 bytes core/assets-raw/icons/rename.png | Bin 0 -> 92 bytes core/assets-raw/icons/resize.png | Bin 0 -> 133 bytes core/assets-raw/icons/rotate-arrow.png | Bin 0 -> 118 bytes core/assets-raw/icons/rotate-left.png | Bin 0 -> 111 bytes core/assets-raw/icons/rotate-right.png | Bin 0 -> 114 bytes core/assets-raw/icons/rotate.png | Bin 0 -> 103 bytes core/assets-raw/icons/save-image.png | Bin 0 -> 132 bytes core/assets-raw/icons/save-map.png | Bin 0 -> 109 bytes core/assets-raw/icons/save.png | Bin 0 -> 113 bytes core/assets-raw/icons/settings.png | Bin 0 -> 113 bytes core/assets-raw/icons/spray.png | Bin 0 -> 113 bytes core/assets-raw/icons/terrain.png | Bin 0 -> 1464 bytes core/assets-raw/icons/tools.png | Bin 0 -> 4557 bytes core/assets-raw/icons/trash-16.png | Bin 0 -> 113 bytes core/assets-raw/icons/trash.png | Bin 0 -> 115 bytes core/assets-raw/icons/tree.png | Bin 0 -> 156 bytes core/assets-raw/icons/turret.png | Bin 0 -> 2488 bytes core/assets-raw/icons/tutorial.png | Bin 0 -> 147 bytes core/assets-raw/icons/undo.png | Bin 0 -> 1344 bytes core/assets-raw/icons/units.png | Bin 0 -> 2234 bytes .../mindustry/ui/fragments/ChatFragment.java | 13 +- gradle.properties | 2 +- tools/build.gradle | 7 + tools/src/mindustry/tools/FontGenerator.java | 7 +- ...{SquareMarcher.java => IconConverter.java} | 147 ++++++++++++------ 132 files changed, 124 insertions(+), 2203 deletions(-) rename core/assets-raw/fontgen/{icons => extra}/logic.svg (100%) delete mode 100644 core/assets-raw/fontgen/icons/admin.svg delete mode 100644 core/assets-raw/fontgen/icons/book.svg delete mode 100644 core/assets-raw/fontgen/icons/chat.svg delete mode 100644 core/assets-raw/fontgen/icons/command-attack.svg delete mode 100644 core/assets-raw/fontgen/icons/command-rally.svg delete mode 100644 core/assets-raw/fontgen/icons/command-retreat.svg delete mode 100644 core/assets-raw/fontgen/icons/crafting.svg delete mode 100644 core/assets-raw/fontgen/icons/defense.svg delete mode 100644 core/assets-raw/fontgen/icons/distribution.svg delete mode 100644 core/assets-raw/fontgen/icons/effect.svg delete mode 100644 core/assets-raw/fontgen/icons/exit.svg delete mode 100644 core/assets-raw/fontgen/icons/fill.svg delete mode 100644 core/assets-raw/fontgen/icons/hammer.svg delete mode 100644 core/assets-raw/fontgen/icons/host.svg delete mode 100644 core/assets-raw/fontgen/icons/itchio.svg delete mode 100644 core/assets-raw/fontgen/icons/line.svg delete mode 100644 core/assets-raw/fontgen/icons/link.svg delete mode 100644 core/assets-raw/fontgen/icons/liquid.svg delete mode 100644 core/assets-raw/fontgen/icons/mode-attack.svg delete mode 100644 core/assets-raw/fontgen/icons/mode-pvp.svg delete mode 100644 core/assets-raw/fontgen/icons/mode-survival.svg delete mode 100644 core/assets-raw/fontgen/icons/paste.svg delete mode 100644 core/assets-raw/fontgen/icons/pencil.svg delete mode 100644 core/assets-raw/fontgen/icons/players.svg delete mode 100644 core/assets-raw/fontgen/icons/power.svg delete mode 100644 core/assets-raw/fontgen/icons/production.svg delete mode 100644 core/assets-raw/fontgen/icons/refresh.svg delete mode 100644 core/assets-raw/fontgen/icons/save.svg delete mode 100644 core/assets-raw/fontgen/icons/spray.svg delete mode 100644 core/assets-raw/fontgen/icons/terrain.svg delete mode 100644 core/assets-raw/fontgen/icons/trash.svg delete mode 100644 core/assets-raw/fontgen/icons/turret.svg delete mode 100644 core/assets-raw/fontgen/icons/units.svg delete mode 100644 core/assets-raw/fontgen/icons/upgrade.svg create mode 100644 core/assets-raw/icons/about.png create mode 100644 core/assets-raw/icons/add.png create mode 100644 core/assets-raw/icons/admin.png create mode 100644 core/assets-raw/icons/book.png create mode 100644 core/assets-raw/icons/break.png create mode 100644 core/assets-raw/icons/cancel.png create mode 100644 core/assets-raw/icons/changelog.png create mode 100644 core/assets-raw/icons/chat.png create mode 100644 core/assets-raw/icons/check.png create mode 100644 core/assets-raw/icons/command-attack.png create mode 100644 core/assets-raw/icons/command-rally.png create mode 100644 core/assets-raw/icons/command-retreat.png create mode 100644 core/assets-raw/icons/copy.png create mode 100644 core/assets-raw/icons/crafting.png create mode 100644 core/assets-raw/icons/cursor.png create mode 100644 core/assets-raw/icons/defense.png create mode 100644 core/assets-raw/icons/diagonal.png create mode 100644 core/assets-raw/icons/distribution.png create mode 100644 core/assets-raw/icons/donate.png create mode 100644 core/assets-raw/icons/dots.png create mode 100644 core/assets-raw/icons/editor.png create mode 100644 core/assets-raw/icons/effect.png create mode 100644 core/assets-raw/icons/elevation.png create mode 100644 core/assets-raw/icons/eraser.png create mode 100644 core/assets-raw/icons/exit.png create mode 100644 core/assets-raw/icons/fdroid.png create mode 100644 core/assets-raw/icons/file-image.png create mode 100644 core/assets-raw/icons/file-text.png create mode 100644 core/assets-raw/icons/file.png create mode 100644 core/assets-raw/icons/fill.png create mode 100644 core/assets-raw/icons/flip.png create mode 100644 core/assets-raw/icons/folder-parent.png create mode 100644 core/assets-raw/icons/folder.png create mode 100644 core/assets-raw/icons/grid.png create mode 100644 core/assets-raw/icons/hammer.png create mode 100644 core/assets-raw/icons/home.png create mode 100644 core/assets-raw/icons/host.png create mode 100644 core/assets-raw/icons/info.png create mode 100644 core/assets-raw/icons/itchio.png create mode 100644 core/assets-raw/icons/item.png create mode 100644 core/assets-raw/icons/line.png create mode 100644 core/assets-raw/icons/link.png create mode 100644 core/assets-raw/icons/liquid-consume.png create mode 100644 core/assets-raw/icons/liquid.png create mode 100644 core/assets-raw/icons/load-image.png create mode 100644 core/assets-raw/icons/load-map.png create mode 100644 core/assets-raw/icons/load.png create mode 100644 core/assets-raw/icons/loading.png create mode 100644 core/assets-raw/icons/lock-open.png create mode 100644 core/assets-raw/icons/lock.png create mode 100644 core/assets-raw/icons/map.png create mode 100644 core/assets-raw/icons/menu.png create mode 100644 core/assets-raw/icons/missing.png create mode 100644 core/assets-raw/icons/mode-attack.png create mode 100644 core/assets-raw/icons/mode-pvp.png create mode 100644 core/assets-raw/icons/mode-survival.png create mode 100644 core/assets-raw/icons/none.png create mode 100644 core/assets-raw/icons/paste.png create mode 100644 core/assets-raw/icons/pause.png create mode 100644 core/assets-raw/icons/pencil.png create mode 100644 core/assets-raw/icons/pick.png create mode 100644 core/assets-raw/icons/play-2.png create mode 100644 core/assets-raw/icons/play.png create mode 100644 core/assets-raw/icons/players.png create mode 100644 core/assets-raw/icons/power.png create mode 100644 core/assets-raw/icons/production.png create mode 100644 core/assets-raw/icons/quit.png create mode 100644 core/assets-raw/icons/redo.png create mode 100644 core/assets-raw/icons/refresh.png create mode 100644 core/assets-raw/icons/rename.png create mode 100644 core/assets-raw/icons/resize.png create mode 100644 core/assets-raw/icons/rotate-arrow.png create mode 100644 core/assets-raw/icons/rotate-left.png create mode 100644 core/assets-raw/icons/rotate-right.png create mode 100644 core/assets-raw/icons/rotate.png create mode 100644 core/assets-raw/icons/save-image.png create mode 100644 core/assets-raw/icons/save-map.png create mode 100644 core/assets-raw/icons/save.png create mode 100644 core/assets-raw/icons/settings.png create mode 100644 core/assets-raw/icons/spray.png create mode 100644 core/assets-raw/icons/terrain.png create mode 100644 core/assets-raw/icons/tools.png create mode 100644 core/assets-raw/icons/trash-16.png create mode 100644 core/assets-raw/icons/trash.png create mode 100644 core/assets-raw/icons/tree.png create mode 100644 core/assets-raw/icons/turret.png create mode 100644 core/assets-raw/icons/tutorial.png create mode 100644 core/assets-raw/icons/undo.png create mode 100644 core/assets-raw/icons/units.png rename tools/src/mindustry/tools/{SquareMarcher.java => IconConverter.java} (50%) diff --git a/annotations/src/main/java/mindustry/annotations/BaseProcessor.java b/annotations/src/main/java/mindustry/annotations/BaseProcessor.java index 010a9949c0..fd2c05dca2 100644 --- a/annotations/src/main/java/mindustry/annotations/BaseProcessor.java +++ b/annotations/src/main/java/mindustry/annotations/BaseProcessor.java @@ -229,7 +229,7 @@ public abstract class BaseProcessor extends AbstractProcessor{ try{ process(roundEnv); }catch(Throwable e){ - e.printStackTrace(); + Log.err(e); throw new RuntimeException(e); } return true; diff --git a/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java b/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java index bca6c7660a..497a622749 100644 --- a/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java +++ b/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java @@ -49,8 +49,13 @@ public class AssetsProcess extends BaseProcessor{ ictype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectMap.class, String.class, TextureRegionDrawable.class), "icons", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new ObjectMap<>()").build()); + ObjectSet used = new ObjectSet<>(); + for(Jval val : icons.get("glyphs").asArray()){ String name = capitalize(val.getString("css", "")); + + if(!val.getBool("selected", true) || !used.add(name)) continue; + int code = val.getInt("code", 0); ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("(char)" + code).build()); diff --git a/core/assets-raw/fontgen/icons/logic.svg b/core/assets-raw/fontgen/extra/logic.svg similarity index 100% rename from core/assets-raw/fontgen/icons/logic.svg rename to core/assets-raw/fontgen/extra/logic.svg diff --git a/core/assets-raw/fontgen/icons/admin.svg b/core/assets-raw/fontgen/icons/admin.svg deleted file mode 100644 index 8b6e5e5220..0000000000 --- a/core/assets-raw/fontgen/icons/admin.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/book.svg b/core/assets-raw/fontgen/icons/book.svg deleted file mode 100644 index 4ce30ae7ee..0000000000 --- a/core/assets-raw/fontgen/icons/book.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/chat.svg b/core/assets-raw/fontgen/icons/chat.svg deleted file mode 100644 index dab837b908..0000000000 --- a/core/assets-raw/fontgen/icons/chat.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/command-attack.svg b/core/assets-raw/fontgen/icons/command-attack.svg deleted file mode 100644 index ffd597b7a5..0000000000 --- a/core/assets-raw/fontgen/icons/command-attack.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/command-rally.svg b/core/assets-raw/fontgen/icons/command-rally.svg deleted file mode 100644 index b402671f69..0000000000 --- a/core/assets-raw/fontgen/icons/command-rally.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/command-retreat.svg b/core/assets-raw/fontgen/icons/command-retreat.svg deleted file mode 100644 index a608141b9b..0000000000 --- a/core/assets-raw/fontgen/icons/command-retreat.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/crafting.svg b/core/assets-raw/fontgen/icons/crafting.svg deleted file mode 100644 index 7f2e56d27c..0000000000 --- a/core/assets-raw/fontgen/icons/crafting.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/defense.svg b/core/assets-raw/fontgen/icons/defense.svg deleted file mode 100644 index 0891560c0a..0000000000 --- a/core/assets-raw/fontgen/icons/defense.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/distribution.svg b/core/assets-raw/fontgen/icons/distribution.svg deleted file mode 100644 index f60b2f7251..0000000000 --- a/core/assets-raw/fontgen/icons/distribution.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/effect.svg b/core/assets-raw/fontgen/icons/effect.svg deleted file mode 100644 index 004fecdb71..0000000000 --- a/core/assets-raw/fontgen/icons/effect.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/exit.svg b/core/assets-raw/fontgen/icons/exit.svg deleted file mode 100644 index 2a9a6ddc8f..0000000000 --- a/core/assets-raw/fontgen/icons/exit.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/fill.svg b/core/assets-raw/fontgen/icons/fill.svg deleted file mode 100644 index 4435469aac..0000000000 --- a/core/assets-raw/fontgen/icons/fill.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/hammer.svg b/core/assets-raw/fontgen/icons/hammer.svg deleted file mode 100644 index a9ec0312f5..0000000000 --- a/core/assets-raw/fontgen/icons/hammer.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/host.svg b/core/assets-raw/fontgen/icons/host.svg deleted file mode 100644 index e927c7af2f..0000000000 --- a/core/assets-raw/fontgen/icons/host.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/itchio.svg b/core/assets-raw/fontgen/icons/itchio.svg deleted file mode 100644 index d26eb1780a..0000000000 --- a/core/assets-raw/fontgen/icons/itchio.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/line.svg b/core/assets-raw/fontgen/icons/line.svg deleted file mode 100644 index 91e2e2fb29..0000000000 --- a/core/assets-raw/fontgen/icons/line.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/link.svg b/core/assets-raw/fontgen/icons/link.svg deleted file mode 100644 index 34b8a163d7..0000000000 --- a/core/assets-raw/fontgen/icons/link.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/liquid.svg b/core/assets-raw/fontgen/icons/liquid.svg deleted file mode 100644 index 6eb50596d8..0000000000 --- a/core/assets-raw/fontgen/icons/liquid.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/mode-attack.svg b/core/assets-raw/fontgen/icons/mode-attack.svg deleted file mode 100644 index cc78940688..0000000000 --- a/core/assets-raw/fontgen/icons/mode-attack.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/mode-pvp.svg b/core/assets-raw/fontgen/icons/mode-pvp.svg deleted file mode 100644 index 76c7f31f77..0000000000 --- a/core/assets-raw/fontgen/icons/mode-pvp.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/mode-survival.svg b/core/assets-raw/fontgen/icons/mode-survival.svg deleted file mode 100644 index aa5d0dcac8..0000000000 --- a/core/assets-raw/fontgen/icons/mode-survival.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/paste.svg b/core/assets-raw/fontgen/icons/paste.svg deleted file mode 100644 index 67a323b6ea..0000000000 --- a/core/assets-raw/fontgen/icons/paste.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/pencil.svg b/core/assets-raw/fontgen/icons/pencil.svg deleted file mode 100644 index f2bfa70403..0000000000 --- a/core/assets-raw/fontgen/icons/pencil.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/players.svg b/core/assets-raw/fontgen/icons/players.svg deleted file mode 100644 index 3cdfa46245..0000000000 --- a/core/assets-raw/fontgen/icons/players.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/power.svg b/core/assets-raw/fontgen/icons/power.svg deleted file mode 100644 index 6d6a5063f2..0000000000 --- a/core/assets-raw/fontgen/icons/power.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/production.svg b/core/assets-raw/fontgen/icons/production.svg deleted file mode 100644 index 74f0f882a9..0000000000 --- a/core/assets-raw/fontgen/icons/production.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/refresh.svg b/core/assets-raw/fontgen/icons/refresh.svg deleted file mode 100644 index 1cde3c7e11..0000000000 --- a/core/assets-raw/fontgen/icons/refresh.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/save.svg b/core/assets-raw/fontgen/icons/save.svg deleted file mode 100644 index d2b0776e95..0000000000 --- a/core/assets-raw/fontgen/icons/save.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/spray.svg b/core/assets-raw/fontgen/icons/spray.svg deleted file mode 100644 index a1b0cf95f7..0000000000 --- a/core/assets-raw/fontgen/icons/spray.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/terrain.svg b/core/assets-raw/fontgen/icons/terrain.svg deleted file mode 100644 index acb45bd0de..0000000000 --- a/core/assets-raw/fontgen/icons/terrain.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/trash.svg b/core/assets-raw/fontgen/icons/trash.svg deleted file mode 100644 index 22ed1dee35..0000000000 --- a/core/assets-raw/fontgen/icons/trash.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/turret.svg b/core/assets-raw/fontgen/icons/turret.svg deleted file mode 100644 index 12009fa1f3..0000000000 --- a/core/assets-raw/fontgen/icons/turret.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/units.svg b/core/assets-raw/fontgen/icons/units.svg deleted file mode 100644 index 969b63e096..0000000000 --- a/core/assets-raw/fontgen/icons/units.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/icons/upgrade.svg b/core/assets-raw/fontgen/icons/upgrade.svg deleted file mode 100644 index 9cee75f283..0000000000 --- a/core/assets-raw/fontgen/icons/upgrade.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/core/assets-raw/fontgen/merge.pe b/core/assets-raw/fontgen/merge.pe index 2dfaf77598..a4644c0c5e 100755 --- a/core/assets-raw/fontgen/merge.pe +++ b/core/assets-raw/fontgen/merge.pe @@ -1,3 +1,3 @@ -Open("core/assets/fonts/font.ttf") -MergeFonts("core/assets-raw/fontgen/out/font.ttf") -Generate("core/assets/fonts/font.ttf") +Open("core/assets/fonts/font.woff") +MergeFonts("core/assets-raw/fontgen/out/font.woff") +Generate("core/assets/fonts/font.woff") diff --git a/core/assets-raw/icons/about.png b/core/assets-raw/icons/about.png new file mode 100644 index 0000000000000000000000000000000000000000..3943975b97dc93050702f1481ccf3d82cd8d9cf4 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15YMw5RAr-fh6Be-i`Tu{u xijRjf&jo+wn|`uRbuune4`;o6A5z4?5XF7iyTb3&8wLgj22WQ%mvv4FO#nc_8_)m% literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/add.png b/core/assets-raw/icons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..328c8ca46978e90084d228421b79b6ff8001414a GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15TAnVBAr-fh6Bd~L;Ac(A zREjjNHTkD5G+`;Hv++%-lVz_2y7^YASSB$r*yPK7ke0W|W?*1o@O1TaS?83{1OP&` B8GQf% literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/admin.png b/core/assets-raw/icons/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..f4101c0423def7e4cdcdd6d79eb9e3110d5afe0b GIT binary patch literal 3781 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1r+EpPDB|(Yh3I#>^X_+~x z3MG{VsS2qTnQ06R6}Ps|%q&y3fJqi*XP(rO?h*8OZcB_Qk82f%ff3z z4v4Pzy}NDG{*MXFe%s@_YlQwY-M{=##4a-YZes3+tIJ9rFO%SYbh^UW$Mp1>+PBM+ z7j3_+w(eS4z_g8TCh2a=586|6W|QZ^^9_Qpty>p9mGC&R8io15}&v)K*fo;?mO3K>FI1RN$jt^F{u;`EMy(1Wb_df%yAck3Om)w17T?rWE;ezkLYT)S+Z0%O*ZiEeVKS2ESsnf&E3K4qhDUxqckAdY?3&vK-tTHS?*cbnc` z5%;eBoAOgrp+jQz6)9VmtnSIUnHMX&`OlU#-)$CKa+R&+r$@QYj(BoVR4s9P+O}<9 zP1dvT`}5x>*L8h+wBkpHOWG?_l`>i?-=6suI(yw+{mCEp$GBT<*7;(%&0=<;?V7#p zw-5Pv+_*PUY02w1d$*cS(|r(mSL^E3lv}fkS+?)GyME_AvxL%#(c$e4QO_hbPWpyE zJkhEXy`nZp=S*uL$1|yJAdqGechg<48hLUB=6_cJdbKbl% ziG82K`iV(lH@r>eGF?7*M=9;ctu$E&1#Z!)ucpL2f0eS@Zp(x!-o(n_8&iA^PCKGD ze|@j3W=q_i=GC|2@4WG^d!p5&Vqfsm=FS$?wmFls4Fzu;>)CgUBjHAH^7>RJHolqR z%*jTN-1et?cg5U1AyyE)&Hm7mHBxpSQQlT2r=Ll^5_NJ7W=f6Qpk-R7B~d%$ui;LW zA3NM*(q%WBJvr3KU#OF2#Bk-=7cPCNt;?R?$=ch0$>VmPPVcc7LWSA>uNK%D7+V=$ ze|g0%m%^;CiE15?8eZ|>GSSbc;cnq#&|%)_ZN zLZycaPpta*>E-TxX~mM2)f?t5J>r_XJe6B_myONDjdM;GwB6~wX=9~4anpqjyF|+T zmL$48Za-@MF~ZK7`LFqphQ^saJ|%ezt(xO4R4$j9XDff=Ub!v3^ZSFDmTN<5e!bH5 z?RmPRCX;)=^CyQe-E`kqg=}ZuO_Vxib?7FicBzDYESmvylv?-&&1(%)=I;yH_U5-p z0?)s7o9r(po837&Q+5&edk_AkmT6o0)XUvE;_iGh+N&+&(Ij`}mMF`cbJrgwHLgw3 zx!2pY)hJ4Lv9WE_ys(nyz2CMr&(LW7r+3eL&Ne;K<8y+$>yO5~Zg}4pcaAlFe*Dw3 zHJ_7L{y92T-(9Ry+l8evEwWqvVa>*ASFI;MTv}Wj?vT~{Nc^Sent8i?j&C~kyY~~% z#RuEM{A<(?w)#fTUZvi5@!&#fub>$3XAv!7lZ8*X2qb;k&=nAI&&_6Pct`Ga^Bb3c zOxkrPWHQSOk>}qY*fjsl;{2M~+m`b_oP#0a(w&ZF@6#P(R+WUCEuAsJ_2ORDr<#`@ zzNnU7cKzwsY0KxYopiPLhKTqjrjo487*nO-eLR=b;zcH{+#y*N%@8Z*GA-%PrP?ay zEp1mesa!Qom$PfOxJKoMZle{#m zb-|VlCAFhJ+3LRB%g?DP4*k{6zHk4wwNba_Kd^l*VAs5@eNW-lx90HLg{H42->A7& zyF>G=-s|@Zzb!I;<-YKzvut3!f5kR^o64p+$KJB+lylnL>2`6iyq#x}T~VHJDtjpB zJilvSr##oF`_R0p^H|@a>2jI}qh{7wPkqz;Gp|x@`Ql^VVe{Reh<6@~J^9q-o~M4o z^eY#4xwZ*zzp}r~yEOfo@Ai=WrN`f^&DtNl@OazRYOOCjR(%h7q3HC=RPLY053 zT+Zt6Auo7;%@0KpRa$Z{c;WHTy~~~W1%u@0zT%!=wX*Ec$vCz9>`sMI9PP6*UfNqnFkL% zwkTdYwDd(ROO)^Jqf*K&73WRb?#}sjSdd}%MW1NRRSx^4=HOk8 zPikJSo$7k$Liq;OxlWmu+e{KxZ2YxKv%>nS!Q#Hem(4z#tg24c?y`Mdy8Qhj$5pFS z+}V>^oSPbsvMZLHo8e=u(avnO{?qNLCw8tn?x1q&(8hbmr!ik+-@bOaYp>kBvl5Jt zYnNAk>T#K+DYdHSqnquT^UrhK-q-s3)A=1A zf5>8XtAl192_=)yCU(u77O;BDG=^l^luId>y?2V`PP*)@eSG%J1-h45&VPu#dP|Kh zZNI~6@HfjHc3!UD=*K{ktY+Lvs zPulC#()WM5Tr_wQF}2_okTy z$@5m3db{h-HF#Qd?WBm{x`|JFo}O2A_*<#CN#@$){pPR#?uz6;8M;#<@7d|fFJ}Au z^Vpdpw*B0ZxAs0 z3Tjy#UAFI8^x=TRd}d!GA=M0X>#I*wR?TlMQCELvxOHai^vzPcXT6Q>`CPkb$q6Nu z(=!h#Y?>H#H)@xk_bzLvP24dvl;^*DJn45N=WW|`)#n2I%;zIH?`~95c)o+r`;KMG zH`SQss=j4vk-P5tc?ZQ@&+OE&kKXO)-Dc%3qMsJ)=DDxh$UCmm?6px>#O<rzCyaq>`Z0=@PRo<7@r?kH0UAGgOFttq;lf-_`x_PBa4pV@sy9bAYF_ zGpyUdz)&%#cA~AvVF#I`@xfb_rt*~u2%ZU;tJBeCktNy{pm>FAt<{W}Uy3G~9ziiO ztk;{G<-0@K#nWSDV^|$OFdsR3)$^jO*Pr;H48g|-3+?aSt-iCDxut4mX4r9w1uwVF z^iw;Mljq8_cM-QBgEPm;Ge&8unymLfmi9Bmzkg(N`v0Bzi^I=G^Kf(=F+O9E`>6EM zO5fWL_V~-Bsz$2XsmqzZY&y~(6K+%YIHn}>!OTG8$@7%^gu0KKh25Gl)u*>&lEtzt ztEb$N{h{Zg=WH#SYWn_Uyu`WJr@dpATXv|3ZQ$Tk5((MZXq0m#^Qz~@3CsSr^w%Hw z>is0>#8yVPzRHjVj%9xz)PL9=z1qO=oocJF!}IRPH9X7u2Q@^}y$64M*uO2op zoqMVFt@WRMx(pA#$`xKPGoK*RukOLb!1B56f%exH_6v;b^t$#GSy?|*kZe$0FhBHE z)3w%}D^xD`*oeNLc69$V=gGTYczYN%wtY-ECfO{!aZA`bS+!RIjFTF+wlOd;FnGH9 KxvXs4F zn0$#$+quM}>hsF>^ZNh&Q}8&iV@-8MS-8u+S!wHzx9+#Bo>eTfSldqMMOSse^MGrj za%&8ZzTVmq{DE`Fw9>RWCq*tVh-%;Mwd|2vH2bmTU$@;(S}wafcN^oP^23}_&u2Zp zIz1w$EVuK~*DaSh9q048%9v{$Uv+}HJGO4~ujb7x=kGr9Oi$#Iy6<20?#IhYW0U1Y z*=s%d*EO8Zyu#3?wfuesSJRE1mb~5Z-tNis_(i8JOo%X1=h-l$YQ~C#bw|YX=iX#F zwD_LP=c8Wt*+MFRFiD&aIN);npj-A4%Z*|-YA=Et?rba<<+|Z;uyjF*+(rJvNx}Ck z+}~7PV=XUH-s{lOps6&0O_(F8QoiO$jW@?ar^aS}#Ul!etukIuULa zK|{%N)0878mrqEVG$qJSb@v&M-FfTOu!=cP4nfWA8Eh+cY7vnP)smo@jSFYF= zx_9-rHFvJBy18~%wA0JtPYb1Xx%vr*UG@w(yI{s=v94~dhK90LGd-_WFF&<1P0d>E z*@Fh76&80_B?VmIe|=~R|698$znA8*l;??TJl7rTJSMTKPk1^O{w0Gu8@;^2i-Mt|N;a}NsEypp-fWK*fdJkOkui@yXVzcN;Py0G_T$1Sb9*Qv zuz8agCkx9B!=vG6bZ1`ijXiuK#&xp1Qohy)=JF}YHhbK>y3Uko`%2rxzjS=_ z8!k->*;^pQ9^t1Pv$v*flaA(U?@2S6VqWoDa5?XedKY@#dWqOf-pP#3ttT9oDD~eH z+qzBjb!v0dLjHi(HBPr09PTonv}wFG;lT&KtckS^N(+Jlq=nqhS(fx`@g1m2^qeu- zdAjrYsp+K)O?-4^It)*~VKZW1=H%>9_BypCU@d=?dFymthNpEw#s`;>%yYA zu9=1id#%d)(E6s}Kg+9CTbdTR9ys)I>6`F?r;{%=xIAq6vh~Hw`7;(Zuc|*R@`s;2 zAlmX_Vsy;qVD0cp^N#DVc|_YDNmiNIcU6ghcJ!k(*>ve+2cAo0#A=@H>0&&#kwIia zZeXYK_d2dQ>+*kA?U~$UC$}-~T+^+jmn9F{i2UDcT9gYiY&vNnbJojc>z!U2cA)-+zE+oc!`}cI23)@fr zaP?mA(IDn^*we|rt@8N;OP&`!&E$0a!m^m#M z-ut+dT_7vFuHtN&n^5~axkDG%UqAAG>w2ErnL!61a&fwJ ze7#z&^Pac0ec{1~%2J1l+_ifvD$_O=vfZ!lU9od#=vjq5y;f{PlNHM&sp`vsSTxPvko46pfj!ii}$(d zp}OV10v;ymW{2|Dom%H3E$@Btl#^~>sE%^HOzF#8+Y(P6)5{4xz36K0tp#BlYnq}a zY^cf!nDr@dgP6uFX`xMLWvA%PE)S5Nq!;wu>0KN)pAI4PFZ>+`O&Zk+ei^z+1C%I>yYlg1cr^W@EgSx;W9&vw}3%KO)4VK~!8 ze~~IxfxW_K!y8}B&Dh7~^4{h1RP8GDS?gmiT3@Vr+V!t{=K2jU1kYanyWp0a=cd=O zm;M*&U6pw~Kgww9qTAB#MvqG$KUltdy2_<{{#&*D&pUiJ&-u0TMc!?xb_NE5iYA#J zK`}C{*PEK|0SRFqwA31u}^P;QQpZK5*!N&&+?eE>KzO$FPrD|qo*l~#k zFSpI~Q#+EA=gPBp5w{?NGsnp@Mro>=toJ{b_A|u4e`Is||DE}Z!_P+ZaC96oK4Xyk zsPxfF-`fxN_{*fKMylGW%bC7xI?^8#Zd3O-rX=#g%s}JG^OXC9x{sQL-I_7gr?+B~ z#j-4`r`(bKq35FKY%Q8<`u=3R#JSg}y>;W<-LD<-}vmmI)>j0Mde!z_D*MDU|>t~c6VX; z$*`E=cv7ToB?AKkXMsm#F$061G6*wPEVVCVU|?V`@$_|Nf6OK#rlMtcoH2}nfg#M( z#W6(V{Mkv4d~qo$SfQV8Frr z_y6+C!QCE7uCgzVs$N==%&_bFE0z4+3tAZ%7#KWV{an^LB{Ts54Pi8o literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/cancel.png b/core/assets-raw/icons/cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..03ea12174f578754b7a4c6e589af8f25d7c9b54a GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7ygXeTLn>~qo$M&YpuoZO z^Z)X;+Y3xICD}B1g97x_)GkIE8D}2lD*yieXF6v@ hoGry_n?8TuxqnCS<758M?OF6%uf8>1 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 J%Q~loCIBmg2dDr5 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/command-attack.png b/core/assets-raw/icons/command-attack.png new file mode 100644 index 0000000000000000000000000000000000000000..655f81933874497a30a1436f796ebf4fdcce1669 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@4mJh`h9ms@x)~T4Ogvp2Ln>}1|M>skp4qO) zn~5zzG-gKuW2BJl!FrRq|2IZ5vIk6-xZrzW!jWYRH?8*UYe;60&p+Q$bRl6i0|Ntt Mr>mdKI;Vst04;kWng9R* literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/command-rally.png b/core/assets-raw/icons/command-rally.png new file mode 100644 index 0000000000000000000000000000000000000000..4271a5a321c23bebe747d301f6a19fafad79502c GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@4mJh`h9ms@x)~T4)I41rLn>}1|M>skp4qPF yj3c`SR{+bzpC_1J9Gkq3VZA7eY^N|YgZ9nKy44n&t}`$&FnGH9xvX}1|M>skp4qNP x?}PmOrvE=g9xxrzZqVLU@Q~?e-;pjxez^;a76l%A#K6G7;OXk;vd$@?2>`Om9|`~f literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/copy.png b/core/assets-raw/icons/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..0f03ee5d04608fe55e397a962ec3799a8fb478c0 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7>^)r^Ln>}1|M>sko>^5Q zmO)-2gTb&tgZacard^CKJK3f)9${)?drirK@9eTmc|hZ78o3>XTJ XM4vD6Jf^_Fz`)??>gTe~DWM4fIrSpF literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/crafting.png b/core/assets-raw/icons/crafting.png new file mode 100644 index 0000000000000000000000000000000000000000..3f7022e87b5d3ab8efc690fa91c9b31ee0be1533 GIT binary patch literal 1535 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7owZ+OkRq2ku-#kLXFm7hFa${+om^t7_~x8xH~m6{tbYxwGzynbz%^ZE4KCAKH$ z&tI%48GBG&rh?<-w);OnsB}2RaQ$kr7CL#_Nn*9j9nVkC|Fl-W+UN10_REz0Z^dTD zytL@ZJMHCPY4vuAf7#C658FFB-p~7~sI)7;#sBB*&Ce~5Z`>sm?6B+7&K0+Vz6q*@ zEeS4*a5AnDO};&Qaca(7wyRdtq7H|Bd~oE%k0l;+xqPLn@2^lia-x~nwmA7_Ze-8g z+j?Fxy=u`7cCkiVvI6`Po>l8?`Tg}N|2ZR@@qSpACMozmdnzrlxK>YF zK5dFP$3hDew#ed7w2TK4C@7(qpSkLs##t(&fFq{OB@W)9js< z+H-f8Oli0fynWv8??xF3+PxMfOA?j&=1 z6$-pwvb$`0k^L22h28b5r0bW)L|pnSeyUaVF8fov*WX&R_P%)Ow^ez}FVU1Cxi zDQZh~rBpl~ZR-zMem?G2SAEHBQT=<{3hbN@>7CwrUh!hut+wBO7Qg2Bg`|6@TDh%d zh?D!!w6~P} zpg8$~PSw&$w!MGvSgm@jukG+-_N0$$Rl<8a@44hJGQar0ndARP+4n!+Us~Co!J6J$ z!@$7UlIiRm;OXoP%e@Q?6?1AQ+Ik#zkU1J3yj5u`Uzvd5nSi-E9bFb#qFn)sSGd+% z&4~G>Xp-p>6eGiWy{TEgJCt2KJyte`)$s%Kk)u~VFS>gDi4V#Ue0;Fb{@&f{JA0X1 zs%B<}9hX?}a@$NlwIexst~`4eaSJjybDTV5l%}f5djDf-KSTWcM>ePb-K4GX}YjN*}HCz5QU1zf7uXq^g~|oaxJ^BmFVqHg%60vi ztr=5&dMhSbEX%Tb${pDsdM~Bkd{eiFEPl8TtWpwMS3|Zh<_V+>khuzVu4GiC@whB8u?|xjv!@MwdL16Km z_sPdI=P(>hf8dq>Q@b?b*W@oz-rcf{6LTLt+O<@(`oL4Z3;$D2EPLbSILm1v!=CvU z&7U^xi(Zg^_4V4F{g>GloMV^fH8eXXEb+LRZTJ3N-ut)rjnDq8WB9F5RKCSv?{o$R z2F?PH$YKTtJ!KGPtXOJa#=yY9UgGKN%Kn&5j^9j3sCr`q0|P^Vr;B5V#O2lrhI|bU z94zT4|DHZ|YkgGo&&^veNidZMJC-%_TCJZgd3+zE!fhP`hdr)hMi)EY^>`({vwwWa t<`S#v-o+=LYNd-@UbU_NruRRahjT=D{L31(7#J8BJYD@<);T3K0RTC_%L4!a literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/cursor.png b/core/assets-raw/icons/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..1025a08a9eab8b62fde96fa9039099d358c7eda3 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7O~oURF?NtYWIu|1Pxt6A23MPU7ejMbiBd0rlD);_@ai90=@Ej7ZK Qfq{X+)78&qol`;+0Np7haR2}S literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/defense.png b/core/assets-raw/icons/defense.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae509685ea63aaf8417961de37b3c4d74817dcc GIT binary patch literal 2590 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 I&MBb@0G}++qyPW_ literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/diagonal.png b/core/assets-raw/icons/diagonal.png new file mode 100644 index 0000000000000000000000000000000000000000..262be1cebc1adf6d4ded13ddf23a0c23624f1dd7 GIT binary patch literal 1526 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/donate.png b/core/assets-raw/icons/donate.png new file mode 100644 index 0000000000000000000000000000000000000000..cad39eb1ba9800e66f29e6b0b2995426879a72ab GIT binary patch literal 3708 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/dots.png b/core/assets-raw/icons/dots.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d656d6cc7fd20d25fc5605f058ba4a8f8cc535 GIT binary patch literal 95 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/exit.png b/core/assets-raw/icons/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cc257e39bced8951d43eea7ae34177ddba6f5d GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15jKx9jP7LeL$-HD>V2Ji~ zaSYLzICoMY-vI>0WUp>wm*EGnO4Kj4mt=D{71n-)~d$+OzG}iUZ%L z+}B(h)EYm@NK1L)jG3=278b?GYW});vhdQOQ-!k=L{8m*TwD0KriXo78lTeciU?i? P1_lOCS3j3^P6t;LD literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/fdroid.png b/core/assets-raw/icons/fdroid.png new file mode 100644 index 0000000000000000000000000000000000000000..24c7cb884d589dbf3e473c4fb4cb8db916bee7c9 GIT binary patch literal 1762 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1b4OJl#B|(Yh3I#>^X_+~x z3MG{VsS2qTnQ06R6}R4o=N3KD;Q4!A^Bac;6U*_3o3ru_j^9@=u$t@VZ#MbV`jt1X zvYp;E;ojtlx6a1@*Za=TCzd3>=vhe6CkrReR&BML^B?y-IlOOPa-8zssk?78w|N+x z+UYxej@FZpUs-vl@7X)m`t9_&HIh}4KaDiD86_L(sp~r*a`(HwSGz{d^loeM->~ON zi*B4-eEjzUhGdr;!eutCN8W4CpUM*FF|q4o%ux|ngXOPh-Fy5z?}9Dk2eaw}=f8XF ztuK&q)=yl@K1a{;=<^@BQ{LGs?OS{1yWH8QSMSSz|FL%B^;zn>q$V-PyySYNI>okG zNr87$ytjqu{*ImRHa|GC?-$=SHmBTk=66Jr6!vLcSm4$DOwPJ=heXAuq?C6j5+fJHdJm?p-hVKl|$%LiNmW?y=_g#qFexoWvC;6%4g_I`4fNSI;Wh_-Ymp;oTpC9CY|%n0R~s`$^+hfN}Nwpwr%~`cj?;G z6Yf24SzTN_7cF3$&v$}Lv90C3u5#5UEY{Q2TW{%=F4yc88$uVxD`wnT(kd36b*o5wZP^lke%o(X zwmy%mlC?=m;4V<+m93l-sP4Pu5|8mYlhS9AX|X4^s%o#9)2{8Wtg^thc< zNao>b^OO<4yQ4bw-S$0}3w|%(^U?U(oWSq0XDk=L>)ZK#k8NV^mA!XQsh!y8l+Yy` z^x>yt;%wac=MeoVY;;vVI0G0A5K^P$g{3o4j|xOY_S>z2Llxlkh^ ze)XhnPdD6M*6cWMV$K&+lN!BU3<5o(nY*6G`hVGQ_4fk(MasIXy@Auq_ z+xed3_3;b+3+0{d+v<4!>b9-vSsdhZX-ipZ+k{Q?+MuBmmH&MTZW^`?}{>nNqDCBf4sJ2r~(x=OCS zzh#|hX=PvV^zZxKr(~C`44b)fZ+`#0Ep6}qR~?!H49HuO2*Fv$}b;0!LlLjvZE-yF5Dodvoa~ z*;u?gzPq}AcX>mAzVX>t66_{-&4N33%s9EOYhieaa)&|M1$E=oGbS%lsX2b#mZ@fM z_eY)o#r1u0rs;+X3PR_N4sYo+?^tf0+x*$CuthX=>W?`UXO?ga*%!rr{Lx!{Ftst= z?MzA5JPRisv0D+D$zdj@k2D{xSoLy>eu_<)Wq#qcQ=!-PsMjZ2EMKovJolM_P{a`- zm5zV_SI*QM9T!(kPEvIJT`2#5!t3cLmQGmB;?~C+vcR$I?}PdeyQ8)3Eg!13K6ZHC z{kW!wVPWioz~VXYlaFW4VK|unz$^c!c4@-1$zP(pyX6@F-ac@&)I0cF!)e)s4<{%1 z-kjQG(pn=|VZS*46ch7yhx4|xrS_Sfsj=QA{dIovl&`igzCKy|bj6%^ Y+ePFq^_7P+FfcH9y85}Sb4q9e0Q>+lBLDyZ literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/file-image.png b/core/assets-raw/icons/file-image.png new file mode 100644 index 0000000000000000000000000000000000000000..254ea95f3d02883d6135288b8dd4d1414e493f16 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7JUm?-Ln?0VoovX*puoZW z`@jGE-EO*Js)-E`6>_y4JYSn7go`C?Rc7V+Y=4y+b#cWbHsnDM7kz2M)ZB;`<(fAVfph3fKI3=BPgoewPi T$@iIofq}u()z4*}Q$iB}d*3F} literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/file.png b/core/assets-raw/icons/file.png new file mode 100644 index 0000000000000000000000000000000000000000..0f41e17cbf202a9441ed53ebcb0b6c94bb4d5940 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7%sgEjLn>}1|M>sko>_H9 z<1ID;CKt&D|2Ota*%CgyOk+5=LE#t!n^&ws)&U2J5A&zkI2PuyFswhM{a^XQ%>)Jp O1_n=8KbLh*2~7Z~m?M(_ literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/fill.png b/core/assets-raw/icons/fill.png new file mode 100644 index 0000000000000000000000000000000000000000..79bc8b2c3952600884106e3e50aed9d92b7a3836 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7LOfj@Ln?0Vo$ScPpuoZM z_y6+c*#WDwT^rk-+@%Z~c64eb+T}7F{VU%f-Y~5>)_qDqYOH01!m1mR+QtilWz-p3 tgkN*ttiCZf#=*)+{DIfjZ5w+SpYON)$YAK`$iTqB;OXk;vd$@?2>?w-E;s-H literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/flip.png b/core/assets-raw/icons/flip.png new file mode 100644 index 0000000000000000000000000000000000000000..d81d7414341c073de398ac1eecba89a82b7171c7 GIT binary patch literal 4349 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 SpB)1O1B0ilpUXO@geCxwP9drQ literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/folder.png b/core/assets-raw/icons/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..c55313ef324824f8a668e06c2f7e155b258598b0 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15TAnVBAr-fh6Bd~L`2XKt zLU^%&?1Z&~>m-*m{`X{AES0%XaNYEOeyZ#Y3}<9tsj%ixWMN=nVDNPHb6Mw<&;$UL Cup49m literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/grid.png b/core/assets-raw/icons/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..5427571a1610ad52c0529c2a029603eed4f32122 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7EInNuLn>}1|M>sko>^65 z_JevGsei)R2kMiKu1sUt*}yoP*CksnCegrxXMu*mN}=9nZ2`?wJ}QX}k@rKc^?C%) RWME)m@O1TaS?83{1OWDgBHI7} literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/hammer.png b/core/assets-raw/icons/hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee4a5c3bff128731c76e0740459c5c77ccfe9f4 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15xt=bLAr-ggUh3v-FyLXi z(DN|m-Gh{M50i?7GMt>&+4D1P`?hsS$i3$xs~_*WY|bD*{lyZ!4M7(Ka?UO2)yxqM z{`XzM+l{5qsO5FVLifIUhaa8NwMt(l6n1;Qvf0bZ=-s$E_9b&ifZD?4@18Lq);VAD UTj2CV1_lNOPgg&ebxsLQ09czq7ytkO literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/home.png b/core/assets-raw/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..b97dba2a11b60ea144edb01c5a3ce09298213358 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq152A(dCAr-fh6Bd~L;Ac(A zRPy{>FVmpoTVeWNU1-8mPG{qrQktKXXSuPN*yNZ@Vq$2IOIs0sM<~%9~>5v`Kh4!OoG?W?)MumzezXkqBDEr_uo!`vvlv;<)`KOLVG4{ zKfUAn?WSKJzBc^WyYJq$$y@f$-C|zia!)#?_f5g2@(I<>Z?;wKjt?%o?b#WA_vZf1 zJJ*CR%&VWfes4pM+yy!7qGsLMUte$Y;1QX#b3xCK)N9gjt*+N|vrl{f=VI$FYnHfk zet%|eyZ%{RHrm;J`=id~d+)XV{-Zl>onT~n=bLqcODh9v+V|hQJSX{e?8k`?;diV{ zOH$`PbPIS@X)9L9v5)cjroJBKnMqP1uU}-T1{Y3T%l!Cq)$QDkm-|A^ZZllm{g7p8 z@!5~7ymj<;Z*%!rb>n5r0{`bMrczUqLw0kE?S7Qj+n&HVare===N1`e)Kp*C`RMNB zWeY8@KD#!n)+}z#m%WSuEjJhwbetK5b=jrY3O+v)^0SFgN^b*w)QO_N&v%uig>zdOunJYJhH$Nn)uL=PF5&;(JbofvgD`%V*6@*;~G9 zPFC8cpDK`;L~Sq8maH|6)b+p<@y zA}{OeH5tmfz~!QmT|1zWbfv4&Sws z*U~eq7^h5I@~U&P#epKJhgPS)E38&cE%h`CcJSEC;GUQfdV24xs`izxC95A?i0t5T z(fafvH!yqlrns_zj2GM?imNA-IV{L)PVrk%=D|_Hoi%Z9qtb$)0Be;mbBbTc?Y3Ze z-Kv`C!xzhE8$R!9>m`FN9~zIVY?hv3X&@rSb93!H2ULashwzbW{Stpwu>m8@&doc^OGG98sXnDHNMYpT@ zGo1cBWXKBltGFR{{lk^H+Mef=#h90@&3k01HnH!j694SzM`^O@(#H;zzs`sao+T+N z+mpR8CcE`@|vkQ0GJ$?PnhpVdkNR=h`H!<(!yylM@Se|z}%5KZBDolHC9-iR6 z?^gBFCF1e{61sWM4lqSb6ST7O!J{Tth00wIElTMB zr_BDvNRr=cmpjvz04YA9U)Rn?^PMwWaF~7mtp+~%nk?q3$&>Pt_|5<4|9O9_;oRke zyUiASF8Q#I_l0wo9*k)tyC<8us@m(%+CS@WHOQ^yf|LI;S~zT@MB}zHLde=ZM*DVk z*=&Y#ZEwr`xyDwn`hTh7&ns+Sa*97hOHcT}m{(}8vFg3ej1cKBw{0I8v;B*y`@NF) z#rEnW>1GS=zZ3i)^Uod3n18dOZlk-;rlJcWhYUP2*e0#LGWSQ1kI9qBo&Ncm9Zzy5 z-a4Yu5VpuA#p$S&C*RJ5HCHn(U4K0<{;2N9Q+eLMTqc{ex=&w{|HbxY@@6Zpec!jN zU$@17LV13synx^H)APQSzJ2BO=g`D&SGB5dU60V@slFxNe_hjjLs`JAZ<=d#Kki;q z%f9BTUG+KUYn)TmPGl~;+sG)U8}l$AYhJ?2!(tnFukpuRbiB44gSZ*-zQ{E_dGBe_ zxxHWY!b{Aq?T)$l*YQVA@lyV~Z3|vYM2j27`n=BmUFE#@2&yxyr9R$>eADQOAlBWUoz}#lXPWlIiRm;OXoP ztNj=lD(2KqwDmabAagW6c&pM>zA^#9GXZmTI=U>fM7shMuW+rkni2C$(InF&C`N|$ zdQ-D}cPP7fdaP^=tK$deBS)`#UUc>P6Cacz`1oL<{k^-@clI*3RL#r`J1(){<+hoA zYDaSNTzU2`;ud6Z<~VuAC{0z9_5R1weunt>k8Do=zcYVv_}OS4j*cV7XAE*5l|EYO zd;7s2f0(=ugPDcyt`!?C+0qQv}>tm^?|2+7yhT5SoX%tahB6UhCTBynm=vW7rh|;>g%;T z`!BOAIL9u{YiM>(SmJRr+wT3ly!UVK8=w7G$M9RBsCRnus&@_E(>lD9=X}jje&X3w3xY@qed+##lJ$rcN Vs$W#eFfcGMc)I$ztaD0e0stw1WZnP( literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/itchio.png b/core/assets-raw/icons/itchio.png new file mode 100644 index 0000000000000000000000000000000000000000..ec92eb3725af699d64aeba8a18ed749275004d68 GIT binary patch literal 1474 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!toy{keZN`ey06$*;-(=u~X z6-p`#QWa7wGSe6sDsJtao?UiFfv5HV<}N)(PmY5{8w{V9u*cTv&!|i@I_Yy~R&sNy zPUr8FK99E9@1Om!yqA`1~%)F5l*7pJ`=PIgf9tdm7IxpCT)vdv8tN$3CkKcyzVs+0C$XcbA<0 z_u`+O#E}(T^@sY*6+b>cRjqRKeADCtRl|46veWYTo#ek3|BE_o&3JyX_1`~MZ;K`- zmzP9^?YW$J%TxZfdC0DF9Y17dt~WmQRp!y+y0y!$ZL2L+bz$H6DCSD0W^zmC1d|gL zx{Dr62F~F-h4`e1w!9%R2n?2R3ck2tRiN+WG~K|Y4yoiVH@>e-N;-ID(M;9TVUw0jFgco{ zxpa=#Go2g9t~{NgyL?WuCP$Q06nS`6c1*5scAWQ9 zEz#(P)f=OHO|Ngd*cNo_(6Z<|Io{FtyqwpXW-iR^J{y&_bE@%H&#%*N+3tLPB_rrD zDCN3?rm}+Gxz$3lU z%xd%Q3BRYzZr-)N=&}2g8254(%j*|oC;mS1mT_y;u`+Gufd5K5yrY)|%t> zKelRh`TKo8_ATC4GpodV-d)3=H6>qE-hIAj>-XjB(_PJ5_E}Wv_n%fSpKwjx{r-vP z+&u3(YUW+Ncslh#-%0kqKF#CuS1#Jhecx-g3+Dg0o5^yI~o7fP!4ri(-!sd)I&?%eL@AMVvQ z?2k)Zb<>b<#jMmNLWPQxV?~?Re^|($$fK-d7(8G2sEW<&*YkF*e3xW%diVSDuL6tI zm}{6m>RjgSu4t~Px_rsLR{wC=QAA>{mu%zceFZ5 zpUyqg)#hd6Dia#g`{}RbbkTFsbFLOmHGO|FUgA`y_UV}ArY$UD8(9RIQbGcqB*l`p zWG|WFak28wVfz<9T#HUV(Q2HS%qY5If{gtS`9Jg4&YVA|V6s!;g3m{{*}FA7(7UkW z=C|(~bItu44j30K-TG&$mBDAvsB;H?Px%Z!Eb(r8;=vg8uSTxI zesTUOroY=AzR$AW{>;)(zQN?IRwc8H4AWxPQ*qxb%EN!(`S&*S+#B#r<8 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/line.png b/core/assets-raw/icons/line.png new file mode 100644 index 0000000000000000000000000000000000000000..5ce2cfdc7882d9018bf2f813b7af35ddac48a7b4 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7+&x_!Ln>~ay=*ANpuoZG z`0xMAh{zQzO(Lg!PTl5XPMCX>JK>&a17E=r(F47q4ac|yj!8~9Ca7?fXF@W+#!>5l gKFJUNjdi6HZ_D$jB}qPFU|?YIboFyt=akR{03rP-*Z=?k literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/link.png b/core/assets-raw/icons/link.png new file mode 100644 index 0000000000000000000000000000000000000000..71446afcc070ebdf8a5701871d9aff8fa23e3c47 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15L7py-Ar-gQPV(epFyLVR z{NMk!_ev#0&83X`uO2utEb6dO+&X(zgkCr6lCPX;3T+ik^VPmx70%)1TJ=+qr+ho} s%~wJt_y4lr<0|+zOGfqY>Maa`do7-P)>*fffq{X+)78&qol`;+0LeBlh5!Hn literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/liquid-consume.png b/core/assets-raw/icons/liquid-consume.png new file mode 100644 index 0000000000000000000000000000000000000000..48c93ed9d2b8efc2fe381c718d8114bed0465853 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7+0%zA6M*4n6qEa!{XTMw>u`5-SBKzEH~T}7Z-l*cb!G0#HTIC?|!`dB-yDm{Gp8f z6~4{wAAi4hWN=Hr@i`@<;`!TOOZHA`7q|P}lzn9R_g@PR@2-fOfAIMGA2Yd2_!;)x zx%)8P|NI|uncEj6!}c70DN$Zy{!ah&gCuICSdnL(d`uw!ZxP&*~oB z{ocFK()8@y%`clo|0tc+-?8w_OZ9n7ig|J~J{`I~vv%WmebsBtj&TO+EDEnc=WI<#z+Jg2a@dGp1}vWt<5LeCqLne18TP38|d*pPhq%0pGw z_sS+1D@oyW9H zuf}*g|Jrh4$5A!it#`bZzq3|3@a4wR<@2f~^Ax7KN!UD^FwspeRq6V&`H7!;g41SI zPUFsIU%h?JUE}Y@+3ym1#R7lLsoB_;IPr2zuw~*?o}R#hgqSIeDkhrgW;+EuW(J?j zQOnp!{m&oK77TYqp);Hz~rexJL|e61?7 z=(V_GROHHs z$^4X#N%(WQ?(Lpgw;46}y|#7c)L9?+d-v*}pPSb`oyq0IbK^?DuL~z{R;}#In$vri z>$c?lFKJh%JnNV%Jf*iPtG4I;yZdp;*Jt+L;4}!4Y&6nMHg?}@6?->uRkjI#+~VM< z&^5{{XXfloubFSgF88bYa=>Yc70p|BWitk{IL;OlIKO~F^!?@Z=!<^@Tok7;{?{&F zJtfj*d76&o-jdl>8IskmJ(Y@wkE~CW6_DzFuiAf$RocOmv3p0`GrbnEi%CCwTK}#{ zKE$nXmUY(cART57hq&eQv=&Ub6}#ls`bB$r#bTBOa7=Db={aNPxs-oP!uyv3HU~e6 z&a~aU;k2xyqL!b@uChL}Dy|u^R-f04T(9B1qr@?9&9=!6{0|MxW^6g6aQan#QH4?K zj7F9Qfqvd1NvGI7I=@7B^95xr$QRlku{p1}eRK4hJImhnZ7Y{sZ1GB$qbg;IvD9s` zHkGw1j)}`cnidGA`T8#2$*B=u`&+L6ijKC$?jYgL>Lt$vH5sA<&s26~Y|B(2eG zclUcv{f6)TAC|h=&8#+E)pU%-;>Mj2Rh{O)FOxGDmWW5YlqYk$+|ipC&9%W?QP?d_ zPs`|l>Bkr&k3~i=6q{e1T;;0PyX$TSZ>|6R$c)vmmM&9xkYFg?KUcG>T};!j_JFhT z_A4e)9HC-=rvz681*jS(eK)cv*$mmQ_cAte8>HU1(&b*l|}=zC(VD(OxPJ4x%!~NeXE`WS5q@C zy)w;^yUH7_@wVsEI`>TF&0(3(V{fr-eZ6xBWBJkP+xDyo_!556%s*h?u^*O)!avNK z|MBjcmx*Ps&+8sq<<6bNkW;qrAJb#)7FKr8IlPwN8FiRa1YM&iuRi!v?}fsd;Qvkq zax<UNJ?2wZ{%ga{KG_EG;;9&3;kI z<@>K!?~COvdd4ZfYH9x!$&H;_K7H={Uw!4berE8yp?z}O;b*buD^3|dy-_1|c#iMl zqYM8}eo&WjBcA(~P5-a03(kIC5zl>VPxGn83(i`H*mK?5U!gHVfOYH%N^~_l#lFnno+Q9L!ya- zY4zLRIrq27esNzOyL4WC_NiOk497Q`u{FdR-=10A=Jlx2V)4JPC;j)g%2##HP3*JV zR>ybq_Z+!=Q??(s70%7bw=*p`XFgxb;`wZU-Z`JoE@wOU^I0(S^P0~q8;ke-ymG+u z{+~k)atYQ#rDr;F-fvZmo_#b;+WMhN``vwIhGFN{#;C758?(JA_v+3CU*9Rtb)V() z@|{buWth6zr_xoH=S+Ux4___$=kd;Gmp7j%c3xlF-9Ov)@!{QP@AYA4!y9Cna78Xvq>X)0ftfZ&;cxjG$P7FnWQ z0g6|+)>_So`K4%*=@Aqo!+O1`S-v}zT|7NjHip&l1M`uiS3NJfdi{wH$`E{fu+aYA z-Re7gnOmx6W`-S?SnzV&Oh2_FIeD%;dlzvFGB|UbJY$rms>yo)V`)D_{QE~Xr~luX zzc~DCG!I9|5#uukxsOU8t@OS9V2{5{s%oUFow}Uq%cdj!G2u3Kk7G(AAIuCio;**v zPpJE-S=g-^Q+;|XCRr@YvU#Gb|;8^zeLH&o_(W?y%->J3=J3Q}xT*Je> zFm^#;@tpU`$1~?J987=UmH$(_G~w6eFHzpzvWydRA3WN%RI~cPQ@#uTQ%)><`+MWHE*%h2)m*zDzJ0~phxS4JD{$1YtxA%?D{;Om7tx#0H z#bEDr1_lPs0*}aI1_nK45N51cYG1~{z`$PO>Fdh=m`#q~SkEEZ(uskAA=cByF+}2W zZ@(d5g8_%Dyzl#`Pu_&S%@VKP^xnm3Yp#l-L&bsP=UzYSpQ&5<2Hm!%6$^{%| zFVdQ&MBb@007uOApigX literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/load-image.png b/core/assets-raw/icons/load-image.png new file mode 100644 index 0000000000000000000000000000000000000000..88a162b628c9a137344e3accc4ecc7a7f18e52ac GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7d_7$pLn?0VophUvL4m{h z`+xhr^Qr`kHoG=ECdlb?Ov>0(`e(7w>KukSDXblC8*FbLlnA)*!{Ec}1CoE9?!Otp^ zsdjq8e+vfJS)FDqOV~IMe?4gMm#J`xWP`Wjx(UYv{8t4RN;zmPn8!GUf#I&Z+Kasm S;!+F@3=E#GelF{r5}E+v5h8~G literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/load.png b/core/assets-raw/icons/load.png new file mode 100644 index 0000000000000000000000000000000000000000..ecbd0c08cffb3c8d14e17e713f8269c19c45a29c GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15&YmugAr-gQo_FM9P~c#8 z{P+K5Rj`VyRDp1R@YNoc1bI#Vf>Z8HA71owt2|uwDeRX!>(UR0axE&ecAY!6&uOLQ cn=K3mcduF=+^&Cwfq{X+)78&qol`;+09iUJX#fBK literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/loading.png b/core/assets-raw/icons/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd2d5265dc611c182fecbd9306cbc5bfb997808 GIT binary patch literal 1355 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to9#(}!lmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y-M2_ak*D?h93^)LA*TYFj0IZeCq8~&Fms-~^~$cvu42sd z*i61mzQBH??CwnzX6#b`E zhUa7km+g~|-4lL%eR6rS0@ul)3vM=s&oVtT%lEmMbSk8-zv4#4twoSQu_()gD zsVdz?Qg&VY*3Jr?tpAT;YunPW=h|#DB_!oVRs=3|tli2k%VAiM?tHptgHE*2<1@#b zgwmECe0E@YBgbjRA|~VbjTb)6UT$yU{oxLW@k|A_W9P5#mD(3IzvbAB+jCAV*ADOK ze*Vu%V)C7uB(a7IH!QDCjW0@n9DkZcTVaLvSx#=9ee;AuU+&wUQYf~bFSyzMJa^=6 zCJ(_H?IuM=MtRREN|niGN>23zfL=*o;SS%*_RneJg!RL00Sm-WvSe;PUxUgud)T(O{YnRQ+w%kzLSMWlR-}=(T{!2SN z4~ssC%DEPFdTq(88(y|0Z#PE!+kQ9NaJ{X^pyWuRa<9!P*WBRRW#7EseZP_s{FpWC z+-7Uj8E5l^Ox6p}J>$^B+_=M+>Ba?{nLk|=Kd6|`{CVb)%M`(-eiprIh5|fuBiLi# zyn9l2@~qX2kqbG|BV`ijiTx z-qbAL9m+1A9xEHe>iB{A$kD5w7hS#n#0O;vK0a7zfA4PfoxRL0RWmcgj!P_fxoxJO z+L4?*SDw9#xCI%UIZmE2N>kNjz5lVapCSJJBb(Fz@62Buem0tiqvMG28H3zMrH@wn z-hQyhUnW&GQq@jf&h%x|k^Y!)o4Us_C6Nzi1{zPEr`#vhebg-M){Ln>y%m!zmStHz z<&NwRJr_M^YtdBG_b1~e&b>bE9kblBLq%)@2d9!q$i_yaoFkc6JvUBR_P3?K{=ir7 zCqXB+GP?CuhAeO_`}?5&!|v$S28QocTZJ8-cR#M-VO|)!Ah3AO`{d)9a~KY$Kk&-` zsa=}zYx0*U?`~PfiMbCR?OLi?ec&nIh5sohmc8+EoaMBTVbA=F=1&{;MK4Id`g-lo z{>$tN&aq4L8k(IGmU!IEwtN3B@BQ2R#%KT4G5l62D&JzTcRB+D16z`}y9>ilhQ$oW zlOk;^85kHi3p^r=85s1GL71^(seKs(0|R@Br>`sfV>S^n1v9@@Gh`VU7@|F0978Nl zubpho$DqLB9DVrj`krnzwS*^&g_+l`=L!ie>60nF(z$v%gTbVv%i4X_5j8?f^7jeu z*|gZXVLsa~<*l45KYra;Zc&>k%M`{DaD&_Vz?+0lWxu~CST>&J)tPbrCOZQI1B0il KpUXO@geCy0G-A5| literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/lock-open.png b/core/assets-raw/icons/lock-open.png new file mode 100644 index 0000000000000000000000000000000000000000..36b637b0b9ead71d4631d67b2db46b55f1a81190 GIT binary patch literal 122 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/menu.png b/core/assets-raw/icons/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..0469f997211e19df410e1b59475b5030172e560b GIT binary patch literal 97 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/none.png b/core/assets-raw/icons/none.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf22bc9dacaf5aa82c3a2927fb490c497b615bc GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7|rs&gb@Wlm9ngS)hGnnZzQ2n-w;4hYOVTjxJ&6 dKght&5Y^?ImF3a&n1O+T!PC{xWt~$(695J%DOdmi literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/paste.png b/core/assets-raw/icons/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..606165ed342024f089f6c7ec8e468631aa065ccf GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Y&~5ZLn>}1|M>sko>^65 zzKWH?DTbI?1yXJP#)=J>8Ioe1FEBVII!7~q_*s30^-BTcP0fjoA!l2PlmjIg*ve9l Vnbh|(F)%PNc)I$ztaD0e0sv=}Br^a2 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/pause.png b/core/assets-raw/icons/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..7471836eaaf369540b7e35eae92c22c0c9abf6bb GIT binary patch literal 93 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 D=l5W_ literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/play-2.png b/core/assets-raw/icons/play-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c001e60b04b10a81bdddc4af8a58c12de957689b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15PM$7~Ar-fh6Belb`2XKt zLYVcR90&8`|0@{u_zp*yI^{aC7l=<-CFp9rQtJQYY~>i^Skp=J7FYWDHVHA@^y~{^ aVA$##c*bU;Q#u0!1B0ilpUXO@geCy2rX)Q8 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/play.png b/core/assets-raw/icons/play.png new file mode 100644 index 0000000000000000000000000000000000000000..8530e6b09d4f6bbad4ed2a8885e2cc50e430b927 GIT binary patch literal 104 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/production.png b/core/assets-raw/icons/production.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6c3523c03e66d835c2fbc96ae571549c6c35ab GIT binary patch literal 1789 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/rotate-arrow.png b/core/assets-raw/icons/rotate-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..22039f30208b4b9b9b294f9ccc967a764772193e GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15ww^AIAr-fh6Bd~L`2XL& za+b$6j>|1=|0l1VsB+fh&wmTk|LTkZ?#hhIC$Ho5Rc5x7>g0C4u;5C1=+{cyTjG%zCW0FJXv~|c>r^_M7j{4Cetj>-uO$VymAZ-)z2^L>pLxP RVPIfj@O1TaS?83{1OUr)B8&h4 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/rotate.png b/core/assets-raw/icons/rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..3c989a555f5bfd7c405a389424c7729b849b0f74 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15dY&$hAr-fh6Bd~L;Act6 zREm6DFVm3ItCD#vP2yyu^R)f#6WqEMx2|b%*t&&>!SMa^$R!hHXEHD_FnGH9xvX?|z`3wv%W=tR0_7I150}1|M>sko>_Iq z1SSay(}sI&0!%JD8#K~RP%4n5qkz$u0;_%1^b<5wO9X=VndBMz_Fn$I;bFfcH9 My85}Sb4q9e0096Ww*UYD literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/save.png b/core/assets-raw/icons/save.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ba657ab7b91f444943a07b5aabbe693d3a3a1d GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq157M?DSAr-fh6Be-i`Tu{u zO3%895)Hx1fjP4>j}#~wN);yF$~Ypvh{ZH%YiCk#!PzStCa$>REXcqhk@rf)%lqaB Q1_lNOPgg&ebxsLQ0Or6X)&Kwi literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/settings.png b/core/assets-raw/icons/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..51a969c401834543f01a7dcea6aed5af0e722067 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7#L}Dpdm-r&ox1KqsAdEw>?ga)~X#dUc%0A$jHaA_LUn`-mw{$ Q3=9kmp00i_>zopr0QcV`NB{r; literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/spray.png b/core/assets-raw/icons/spray.png new file mode 100644 index 0000000000000000000000000000000000000000..17198d657b0a9fa85749d9d529f639786f941dfa GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7EIeHtLn>}1|M>sko>^7m z*bo1ej5m0k*j;urOjrC;%xHGjg7;vWmZHN2hOVSWEjX1s_a^w8Uq@;sa7R^*W9X4sn1e2pF znoH++J=3u`cID{|-Q{zNH94Z38rL`dWNm8|k36)F zW_2U>1{h_wALK2 z|FOSTl+WMyW8dO!HQL)$&%cwgjhEdk@W1l?JJx+KAFHjg*1R6>p8uk9S50})I{m)5 z3!iz}%G>7IU%hxc^+DaT$5}FBb^67335yu!8CYDUa2 zMUzaApcom}>rKt_-J$H_>9Mjgtd1X;j~u<~dC}GDPkc~@;NydZ_V?~q-`UIDQZ+L( z?6|~&m)mCgsU6A5bLH8)h+B}snd9Ucqcl}b*83kz`x)ZjKe9Rf|IYly;b)_HI696P zpE1aNRQhP8@9hVB{AE&ABUSCxkoYOeiC$IE2CRqWyk`@vcC`NKkSZPZD9CLwN=>RdH3TQ9_EFy3j&MhyiY!! zIfvn3`U9{0pW3Afzb1c)^6r*poS6II(XOSM)d!yPUHG4JV%Zxn$5~Db8TQP-X#TWe zU-W|XtFPDY?7z&e;2gU&uc6sFVTs4hY`gdG^4`C_Z+!M&9m8*hqVg>Ud#5unFt821sKV}mV)w6WEAQsKQ zz!2~0;uvCa`t2lZz5@mv&Ks}(j=vde6p-R&AGEwm<>TQNmpvjeftNlC707Nl^Xh>p z+vU*ULp+JR0X;>}D_!Qz(01WFbP0l+XkK#$Bvp literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/tools.png b/core/assets-raw/icons/tools.png new file mode 100644 index 0000000000000000000000000000000000000000..2ece1ae8f450070e3955cfd725fe840086fad868 GIT binary patch literal 4557 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 Hl+XkKG{~sH literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/trash-16.png b/core/assets-raw/icons/trash-16.png new file mode 100644 index 0000000000000000000000000000000000000000..a1de49233bdf9cf765b12f23391031ba163d181d GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7EIeHtLn>}1|M>sko>{Di zJ7GoYfn)~5q${QkAq`g<*pxmhm^Caia42Urd=to=k;-r}utVQiu$S@PJ+~)1_B%Qm Q7#J8lUHx3vIVCg!0K2~;u>b%7 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/trash.png b/core/assets-raw/icons/trash.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f419f2f38b1c379817f37bed824d2e9bf729e1 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15R-P`7Ar-fh6Be-i`Tt*D zb}_R^rIXagjT^I6#1gKaa9{|ISB~^^-S*YqZlmH7!F4mE%pUOuiu68VV36DMTKT7= Stsnyf1B0ilpUXO@geCyKJ|d|A literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/tree.png b/core/assets-raw/icons/tree.png new file mode 100644 index 0000000000000000000000000000000000000000..0901a7a72194831d630570067499d12f14a80975 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0y~yVBiN~4mJh`2J356y%-o67>k44ofy`glX=O&z!2u? z;uxYaaqT2St^)=<%%w~J|KDU>xu<5-{UP*=_xMJEzhvW%b+jEVoN$v-TDX$r@TuzRtkFz~JfX K=d#Wzp$PzR(KucJ literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/turret.png b/core/assets-raw/icons/turret.png new file mode 100644 index 0000000000000000000000000000000000000000..32fd01b464fd55c2b2efad90d641948684f31477 GIT binary patch literal 2488 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 KelF{r5}E+IzoS?H literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/tutorial.png b/core/assets-raw/icons/tutorial.png new file mode 100644 index 0000000000000000000000000000000000000000..40ba90a5e4060098da56631d66634807b5142ec3 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15QJyZ2Ar-gQPCCuWpupp7 zz4Y_086jU3{<11doH+W)!&y{w$*SX1cm!G(UX*UycCAKo>CP!Xjx`ANgr^-ax>(|p zS*pYkoX+MWusiG3?^_@F*lx(m)iIPv{anl0Fe}|c{ilZl0|Nttr>mdKI;Vst01vV= ARR910 literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/undo.png b/core/assets-raw/icons/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5dd4c1546284a5a74bf7e53208dda21ab793a4 GIT binary patch literal 1344 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to9#(}!lmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(yJ-SFnk;nCar0cW>m6im{3l5=W6P`YIGPdQnUfDIdzsBeB z!-Wgix9}z0{wjaJ{dZgYrVZR#n$IL`=S^^a*5vo;dGWRNlV279MGT`i5UVx~zMD zU$dg5@4|MOLUEz}S$4LZizeu>=DPG6`gbpsS6L{wvHxfBKf`u?&OKH7KR<6j@nl|K z@QZD0eoR`Pt6sbD^wYNaN=o}|J}0}VP4DLaDZO~9;jf*$gcdpPdK7mhS95iHr|8Qm zU!zs6jsDEs)0m&Ir0q*u_|)9LzF^veoq}mbjyyf{yQ@uWw%Ty^8g93o=pVjLK>YmQ zRs*%2k;!5W7j9Tyof==1{y2UPd?I#lU>GEKTmwqHr5GB zKf+j?nV9S*X}Eqmmg90FnQ4C0iAbh!0fo|2yn#gmoeh&KejT%R%huDLpBAIfu+YMU z&BVf?LA0r@kI{KMq@RLeAE?Zzly)9XbEzhxd?P?jrOqAb6(aB`dW zfvq>zES(np^2)}kRWEKOZ=YB7E;V62uVmtjj>B$Jl~cNJE&Jv3cIut?D=#iP#(iZ@ zdU=+??7J!%aq3nx8ztD83TLxySXgQFxzp)^XP(jLnMXS{l)dH_NckoyNLX#;+jZma z$-k3kJD2^RB3{_Wd_XV5Q6PkG*2R|NOa){IZN9m`n z*M9C7so>t*de13;;r0vBFLb}ebDlgP&oBAk?=MSV(8Pl>PnEnG7#LeJot*#Zhe&@3mnV-KB)h&J9@Q&;XBn&pI^O+?f{wP`}>X$A&{08bak5R21$ zCtVa|Fko>$db9p%3FDNk*Ox!4SSn~vzO>*xXM-?nuKhF}cY_KptLc%P8+ii#uVr== w>`7w3uCu`D{#gcdJHg;(F@F)ALLF`ub%qKT1_lNOPgg&ebxsLQ0Fx_O=l}o! literal 0 HcmV?d00001 diff --git a/core/assets-raw/icons/units.png b/core/assets-raw/icons/units.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee9cd9f554285f0a199d923b65aa83035a26fed GIT binary patch literal 2234 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7nHWC<#g|S12gTPs_|n zRVb+}NL5I!$V_8ksJQhuBDzRLo9}PB=;oFwEdo02=|}D!jQuAw@nzN4ySdw|m7Xou zj`bAdbh2{yIF$JB_j#`W2irG46}VcYr78R4h!A(U&6CG}=IF{6-aqfZH>&C#|90^n zJxA^5=S|js6#ZK@KjGu6{PTYg{!&$sZ@L$@kELtTv7FHQN z|F!Pi(cN3-u8*sCXO?hQ^tbpRGAa4~<}Its*Nkgx@LI3FMde-w(ZaQ2)+?YW4%S zFLT$q@Bj6b@3`iRvunOIUB2r7%dSp(se5lnzV_$EZgcYH{OhWVPJpuq+v zDC59|iaEbqb7Ghn1h0i@I5V;Jxh$IU!XQnVsZa7xNX9v#osEo_7T7FMb)U#mWc2&i zjN~oHH+{O<`+-SGWcD!!UNeCcU4hAm>P{CdlnOCfl@)Y(jcfKKk;%)Z=v2;Gr6%U9 zJ2P@ylBsuJWU-UZ>77rac5ob;(Ke}TYK+%P(e7&zimQ`qT-_h5>6+!Pj6A(|%dLlY zwq$c=P4Gr77v25e7 zGq<#h?bCbpu2l#>ef;K})ULDlTqd*&m!3Ny;m-8<8P9=*H!ZD=j-EI-r?^aHn!+L; z-K!@hpY${ywCF6o*t^@hSpJh(!@Kax$KPjg``w+Npl4Caf9CIr+tzD(cO71v(^MnQ z6zt-0@Z0Rk#Yg3nLhR?;IMy!ZmFJ(qYnZk6sn2(%>}_t@yQVU1_Sv-c)WoEZf>umS z`q{E;)3Q}fT{6X6GQLgxqx!p1dfRh3n~mI`IXV_(GM$|hwDP!wPUbhGwCSu~Y3#+D zS&8jAtAe~89T$50=SP0MoFk$t+!b`{ZGr|ZnD|D1WZen##09H*y?Y_qc3T|}}n zD|QB`Y~HHrJF(&UjC5A>i8V8C`JJA=_F>wa%&emiSBow=y{Ee-JMPJ0=71N;7C8;Q zD?Wy6-8N-$SD)h%P{6vRSYPt=BQG_N*T42`n7{bk((4(Ib>tMQ-7F_tD*Jk0RQ^-4 z$vM`BIysD9kb zb#3dqTYWzllrH#^z14nk>5raU^DkP}xV=4}@i%tE$E+zI;+gifa6I;Uq|Cs;*plh& z9N_8f46A7v7%Jw}PPFwn>>zVAK6tCrRK79+!7~AKbvn8%vP8QA6t8ftwVDz0OVK3L zBPd3O^?FmYe0M0jczUdC46EY@<|9Y1dR}z(`V$|NA^7-Uq5ZwP)pzzXw^Yr{3_C8d z;N`ZNeriW@@?3fLF5(tsaOOC9#wblyllA_`(td{c_m6B&|GzVTaroJ29*&M9#%Bz2 zAC*2@>3jRZ9)Fos)ksx4bve_QO-K4;!fomv$CN}qm>Fn1d7g5gQ1?-@uv;^x`t(*z zvRIa7^^`lZKlEJmoUKJuP2Zo4mpJ$Ow0F#M%MKN>4IG?GA|V?ajdG4;UiI8KVcFl7 z{`v!7y`Kb~*vjbER~fRvvFz`I`VYIKR~s0k|EG3o!mr6+qP)9h87JmGc(iM&X7z!md>8(woLKh8%W;;|LWVu_FPcAX*cZJZ z{p#zrJNqxQD>%n4&1-0OPFUh`Gu!U{yS(>r?;D@}SI6*Mp{RU|!QSZ%3=EtF9+AZi z40_5S%viD1zKnr^fxX1j*OmP-o16fXQLAg)Ck6(FcuyC{5Q)pJ6Rd?A3^-hF@_gU4 z>D#JhroEOoZ)pf~NUogmbYo3H-1aq(ZkV4o<>1kgv2fs6kf|W4$Y$QfVN&R1G;deI z%(816wJncjr5a{k^2&|(1GY$e-|&9l#=yY9;OXk;vd$@?2>=vb B9+m(A literal 0 HcmV?d00001 diff --git a/core/src/mindustry/ui/fragments/ChatFragment.java b/core/src/mindustry/ui/fragments/ChatFragment.java index dd553b647f..1020a74af9 100644 --- a/core/src/mindustry/ui/fragments/ChatFragment.java +++ b/core/src/mindustry/ui/fragments/ChatFragment.java @@ -183,7 +183,7 @@ public class ChatFragment extends Table{ if(!shown){ scene.setKeyboardFocus(chatfield); - shown = !shown; + shown = true; if(mobile){ TextInput input = new TextInput(); input.maxLength = maxTextLength; @@ -199,10 +199,13 @@ public class ChatFragment extends Table{ chatfield.fireClick(); } }else{ - scene.setKeyboardFocus(null); - shown = !shown; - scrollPos = 0; - sendMessage(); + //sending chat has a delay; workaround for issue #1943 + Time.run(2f, () ->{ + scene.setKeyboardFocus(null); + shown = false; + scrollPos = 0; + sendMessage(); + }); } } diff --git a/gradle.properties b/gradle.properties index 5719c2429e..3976157a39 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=83cae56974fabfec535ae7d53a1f83a5f795d28b +archash=73b7d84c43621e935d0281160b4d3caed7d77222 diff --git a/tools/build.gradle b/tools/build.gradle index 42b27b3ccb..d00a04075b 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -421,3 +421,10 @@ task fontgen(dependsOn: classes, type: JavaExec){ standardInput = System.in workingDir = "../" } + +task icongen(dependsOn: classes, type: JavaExec){ + main = "mindustry.tools.IconConverter" + classpath = sourceSets.main.runtimeClasspath + standardInput = System.in + workingDir = "../core/assets-raw" +} \ No newline at end of file diff --git a/tools/src/mindustry/tools/FontGenerator.java b/tools/src/mindustry/tools/FontGenerator.java index 05f2715d29..ba9f76c007 100644 --- a/tools/src/mindustry/tools/FontGenerator.java +++ b/tools/src/mindustry/tools/FontGenerator.java @@ -24,12 +24,12 @@ public class FontGenerator{ Log.info("Session..."); - OS.exec("curl", "--fail", "--output", "core/assets-raw/fontgen/out/session", "--form", "config=@core/assets-raw/fontgen/config.json", "http://fontello.com"); + OS.exec("curl", "--fail", "--output", "core/assets-raw/fontgen/out/session", "--form", "config=@core/assets-raw/fontgen/config.json", "https://fontello.com"); Log.info("Zip..."); String session = folder.child("session").readString(); - net.httpGet("http://fontello.com/" + session + "/get", result -> { + net.httpGet("https://fontello.com/" + session + "/get", result -> { try{ Streams.copy(result.getResultAsStream(), folder.child("font.zip").write()); }catch(IOException e){ @@ -46,8 +46,7 @@ public class FontGenerator{ Log.info("Merge..."); - //don't merge since it breaks the font - //OS.exec("fontforge", "-script", "core/assets-raw/fontgen/merge.pe"); + OS.exec("fontforge", "-script", "core/assets-raw/fontgen/merge.pe"); Log.info("Done."); } diff --git a/tools/src/mindustry/tools/SquareMarcher.java b/tools/src/mindustry/tools/IconConverter.java similarity index 50% rename from tools/src/mindustry/tools/SquareMarcher.java rename to tools/src/mindustry/tools/IconConverter.java index 0caf7642ff..c672e2a119 100644 --- a/tools/src/mindustry/tools/SquareMarcher.java +++ b/tools/src/mindustry/tools/IconConverter.java @@ -1,40 +1,62 @@ package mindustry.tools; -import arc.*; import arc.files.*; import arc.graphics.*; -import arc.graphics.g2d.*; -import arc.graphics.gl.*; +import arc.struct.*; import arc.util.*; -public class SquareMarcher{ - final int resolution; - FrameBuffer buffer; +public class IconConverter{ + StringBuilder out = new StringBuilder(); + float width, height; - SquareMarcher(int resolution){ - this.resolution = resolution; - this.buffer = new FrameBuffer(resolution, resolution); + public static void main(String[] __){ + + Log.info("Converting icons..."); + Time.mark(); + Fi.get("fontgen/icons").deleteDirectory(); + Fi.get("fontgen/icon_parts").deleteDirectory(); + Fi[] list = new Fi("icons").list(); + + ArcNativesLoader.load(); + Seq files = new Seq<>(); + + for(Fi img : list){ + if(img.extension().equals("png")){ + Fi dst = new Fi("fontgen/icons").child(img.nameWithoutExtension().replace("icon-", "") + ".svg"); + new IconConverter().convert(new Pixmap(img), dst); + dst.copyTo(new Fi("fontgen/icon_parts/").child(dst.name())); + files.add(dst); + } + } + + Seq args = Seq.with("inkscape", "--batch-process", "--verb", "EditSelectAll;SelectionUnion;FitCanvasToSelectionOrDrawing;FileSave"); + args.addAll(files.map(Fi::absolutePath)); + + Fi.get("fontgen/extra").findAll().each(f -> f.copyTo(Fi.get("fontgen/icons").child(f.name()))); + + Log.info("Merging paths..."); + Log.info(OS.exec(args.toArray(String.class))); + + Log.info("Done converting icons in &lm@&lgs.", Time.elapsed()/1000f); + System.exit(0); } - void render(Pixmap pixmap, Fi file){ + void convert(Pixmap pixmap, Fi output){ boolean[][] grid = new boolean[pixmap.getWidth()][pixmap.getHeight()]; for(int x = 0; x < pixmap.getWidth(); x++){ for(int y = 0; y < pixmap.getHeight(); y++){ - Tmp.c1.set(pixmap.getPixel(x, y)); - grid[x][pixmap.getHeight() - 1 - y] = Tmp.c1.a > 0.01f; + grid[x][pixmap.getHeight() - 1 - y] = !Pixmaps.empty(pixmap.getPixel(x, y)); } } - float xscl = resolution / (float)pixmap.getWidth(), yscl = resolution / (float)pixmap.getHeight(); + float xscl = 1f, yscl = 1f;//resolution / (float)pixmap.getWidth(), yscl = resolution / (float)pixmap.getHeight(); float scl = xscl; - Draw.flush(); - Draw.proj().setOrtho(-xscl / 2f, -yscl / 2f, resolution, resolution); + width = pixmap.getWidth(); + height = pixmap.getHeight(); - buffer.begin(); - Core.graphics.clear(Color.clear); - Draw.color(Color.white); + out.append("\n"); for(int x = -1; x < pixmap.getWidth(); x++){ for(int y = -1; y < pixmap.getHeight(); y++){ @@ -47,24 +69,24 @@ public class SquareMarcher{ case 0: break; case 1: - Fill.tri( + tri( leftx, midy, leftx, topy, midx, topy ); break; case 2: - Fill.tri( + tri( midx, topy, rightx, topy, rightx, midy ); break; case 3: - Fill.crect(leftx, midy, scl, scl / 2f); + rect(leftx, midy, scl, scl / 2f); break; case 4: - Fill.tri( + tri( midx, boty, rightx, boty, rightx, midy @@ -74,125 +96,148 @@ public class SquareMarcher{ //ambiguous //7 - Fill.tri( + tri( leftx, midy, midx, midy, midx, boty ); //13 - Fill.tri( + tri( midx, topy, midx, midy, rightx, midy ); - Fill.crect(leftx, midy, scl / 2f, scl / 2f); - Fill.crect(midx, boty, scl / 2f, scl / 2f); + rect(leftx, midy, scl / 2f, scl / 2f); + rect(midx, boty, scl / 2f, scl / 2f); break; case 6: - Fill.crect(midx, boty, scl / 2f, scl); + rect(midx, boty, scl / 2f, scl); break; case 7: //invert triangle - Fill.tri( + tri( leftx, midy, midx, midy, midx, boty ); //3 - Fill.crect(leftx, midy, scl, scl / 2f); + rect(leftx, midy, scl, scl / 2f); - Fill.crect(midx, boty, scl / 2f, scl / 2f); + rect(midx, boty, scl / 2f, scl / 2f); break; case 8: - Fill.tri( + tri( leftx, boty, leftx, midy, midx, boty ); break; case 9: - Fill.crect(leftx, boty, scl / 2f, scl); + rect(leftx, boty, scl / 2f, scl); break; case 10: //ambiguous //11 - Fill.tri( + tri( midx, boty, midx, midy, rightx, midy ); //14 - Fill.tri( + tri( leftx, midy, midx, midy, midx, topy ); - Fill.crect(midx, midy, scl / 2f, scl / 2f); - Fill.crect(leftx, boty, scl / 2f, scl / 2f); + rect(midx, midy, scl / 2f, scl / 2f); + rect(leftx, boty, scl / 2f, scl / 2f); break; case 11: //invert triangle - Fill.tri( + tri( midx, boty, midx, midy, rightx, midy ); //3 - Fill.crect(leftx, midy, scl, scl / 2f); + rect(leftx, midy, scl, scl / 2f); - Fill.crect(leftx, boty, scl / 2f, scl / 2f); + rect(leftx, boty, scl / 2f, scl / 2f); break; case 12: - Fill.crect(leftx, boty, scl, scl / 2f); + rect(leftx, boty, scl, scl / 2f); break; case 13: //invert triangle - Fill.tri( + tri( midx, topy, midx, midy, rightx, midy ); //12 - Fill.crect(leftx, boty, scl, scl / 2f); + rect(leftx, boty, scl, scl / 2f); - Fill.crect(leftx, midy, scl / 2f, scl / 2f); + rect(leftx, midy, scl / 2f, scl / 2f); break; case 14: //invert triangle - Fill.tri( + tri( leftx, midy, midx, midy, midx, topy ); //12 - Fill.crect(leftx, boty, scl, scl / 2f); + rect(leftx, boty, scl, scl / 2f); - Fill.crect(midx, midy, scl / 2f, scl / 2f); + rect(midx, midy, scl / 2f, scl / 2f); break; case 15: - Fill.square(midx, midy, scl / 2f); + square(midx, midy, scl); break; } } } - Draw.flush(); - ScreenUtils.saveScreenshot(file, 0, 0, resolution, resolution); - buffer.end(); + out.append(""); + + output.writeString(out.toString()); + } + + void square(float x, float y, float size){ + rect(x - size/2f, y - size/2f, size, size); + } + + void tri(float x1, float y1, float x2, float y2, float x3, float y3){ + out.append("\n"); + } + + void rect(float x1, float y1, float width, float height){ + out.append("\n"); + } + + float flip(float y){ + return height - y; } int index(int x, int y, int w, int h, boolean[][] grid){ @@ -204,6 +249,6 @@ public class SquareMarcher{ } int sample(boolean[][] grid, int x, int y){ - return (x < 0 || y < 0 || x >= grid.length || y >= grid.length) ? 0 : grid[x][y] ? 1 : 0; + return (x < 0 || y < 0 || x >= grid.length || y >= grid[0].length) ? 0 : grid[x][y] ? 1 : 0; } }