From 36edaaf17b9fc71c8575294d8405f2c664fe9b44 Mon Sep 17 00:00:00 2001
From: Tony Bark
Date: Thu, 14 Dec 2023 01:41:21 -0500
Subject: [PATCH 1/3] Merge Kenny's City Builder Starter Kit
---
.gitignore | 503 +++-
README.md | 16 +-
addons/SpritesheetGenerator/Checker.png | Bin 913 -> 0 bytes
.../SpritesheetGenerator/Checker.png.import | 34 -
.../SpriteSheetGenerator.gd | 13 -
.../SpritesheetFrame.tscn | 77 -
.../SpritesheetGenerator.tscn | 714 ------
addons/SpritesheetGenerator/plugin.cfg | 7 -
addons/fontawesome/All.gd | 2029 -----------------
addons/fontawesome/FontAwesome.gd | 44 -
addons/fontawesome/LICENSE.txt | 21 -
addons/fontawesome/flag-solid.svg | 1 -
addons/fontawesome/flag-solid.svg.import | 37 -
addons/fontawesome/fonts/fa-brands-400.woff2 | Bin 108000 -> 0 bytes
.../fonts/fa-brands-400.woff2.import | 33 -
addons/fontawesome/fonts/fa-regular-400.woff2 | Bin 24840 -> 0 bytes
.../fonts/fa-regular-400.woff2.import | 33 -
addons/fontawesome/fonts/fa-solid-900.woff2 | Bin 149908 -> 0 bytes
.../fonts/fa-solid-900.woff2.import | 33 -
addons/fontawesome/plugin.cfg | 6 -
addons/fontawesome/plugin.gd | 8 -
addons/kenney_ui_audio/LICENSE.txt | 21 -
addons/kenney_ui_audio/click1.wav | Bin 18254 -> 0 bytes
addons/kenney_ui_audio/click1.wav.import | 24 -
addons/kenney_ui_audio/click2.wav | Bin 10062 -> 0 bytes
addons/kenney_ui_audio/click2.wav.import | 24 -
addons/kenney_ui_audio/click3.wav | Bin 15694 -> 0 bytes
addons/kenney_ui_audio/click3.wav.import | 24 -
addons/kenney_ui_audio/click4.wav | Bin 6734 -> 0 bytes
addons/kenney_ui_audio/click4.wav.import | 24 -
addons/kenney_ui_audio/click5.wav | Bin 6222 -> 0 bytes
addons/kenney_ui_audio/click5.wav.import | 24 -
addons/kenney_ui_audio/mouseclick1.wav | Bin 13646 -> 0 bytes
addons/kenney_ui_audio/mouseclick1.wav.import | 24 -
addons/kenney_ui_audio/mouserelease1.wav | Bin 15182 -> 0 bytes
.../kenney_ui_audio/mouserelease1.wav.import | 24 -
addons/kenney_ui_audio/rollover1.wav | Bin 41806 -> 0 bytes
addons/kenney_ui_audio/rollover1.wav.import | 24 -
addons/kenney_ui_audio/rollover2.wav | Bin 11086 -> 0 bytes
addons/kenney_ui_audio/rollover2.wav.import | 24 -
addons/kenney_ui_audio/rollover3.wav | Bin 15182 -> 0 bytes
addons/kenney_ui_audio/rollover3.wav.import | 24 -
addons/kenney_ui_audio/rollover4.wav | Bin 21838 -> 0 bytes
addons/kenney_ui_audio/rollover4.wav.import | 24 -
addons/kenney_ui_audio/rollover5.wav | Bin 22862 -> 0 bytes
addons/kenney_ui_audio/rollover5.wav.import | 24 -
addons/kenney_ui_audio/rollover6.wav | Bin 31054 -> 0 bytes
addons/kenney_ui_audio/rollover6.wav.import | 24 -
addons/kenney_ui_audio/switch1.wav | Bin 57166 -> 0 bytes
addons/kenney_ui_audio/switch1.wav.import | 24 -
addons/kenney_ui_audio/switch10.wav | Bin 68430 -> 0 bytes
addons/kenney_ui_audio/switch10.wav.import | 24 -
addons/kenney_ui_audio/switch11.wav | Bin 55118 -> 0 bytes
addons/kenney_ui_audio/switch11.wav.import | 24 -
addons/kenney_ui_audio/switch12.wav | Bin 12110 -> 0 bytes
addons/kenney_ui_audio/switch12.wav.import | 24 -
addons/kenney_ui_audio/switch13.wav | Bin 8014 -> 0 bytes
addons/kenney_ui_audio/switch13.wav.import | 24 -
addons/kenney_ui_audio/switch14.wav | Bin 6222 -> 0 bytes
addons/kenney_ui_audio/switch14.wav.import | 24 -
addons/kenney_ui_audio/switch15.wav | Bin 46926 -> 0 bytes
addons/kenney_ui_audio/switch15.wav.import | 24 -
addons/kenney_ui_audio/switch16.wav | Bin 66382 -> 0 bytes
addons/kenney_ui_audio/switch16.wav.import | 24 -
addons/kenney_ui_audio/switch17.wav | Bin 62286 -> 0 bytes
addons/kenney_ui_audio/switch17.wav.import | 24 -
addons/kenney_ui_audio/switch18.wav | Bin 77134 -> 0 bytes
addons/kenney_ui_audio/switch18.wav.import | 24 -
addons/kenney_ui_audio/switch19.wav | Bin 69454 -> 0 bytes
addons/kenney_ui_audio/switch19.wav.import | 24 -
addons/kenney_ui_audio/switch2.wav | Bin 56142 -> 0 bytes
addons/kenney_ui_audio/switch2.wav.import | 24 -
addons/kenney_ui_audio/switch20.wav | Bin 64334 -> 0 bytes
addons/kenney_ui_audio/switch20.wav.import | 24 -
addons/kenney_ui_audio/switch21.wav | Bin 74062 -> 0 bytes
addons/kenney_ui_audio/switch21.wav.import | 24 -
addons/kenney_ui_audio/switch22.wav | Bin 65358 -> 0 bytes
addons/kenney_ui_audio/switch22.wav.import | 24 -
addons/kenney_ui_audio/switch23.wav | Bin 70478 -> 0 bytes
addons/kenney_ui_audio/switch23.wav.import | 24 -
addons/kenney_ui_audio/switch24.wav | Bin 49998 -> 0 bytes
addons/kenney_ui_audio/switch24.wav.import | 24 -
addons/kenney_ui_audio/switch25.wav | Bin 67918 -> 0 bytes
addons/kenney_ui_audio/switch25.wav.import | 24 -
addons/kenney_ui_audio/switch26.wav | Bin 41806 -> 0 bytes
addons/kenney_ui_audio/switch26.wav.import | 24 -
addons/kenney_ui_audio/switch27.wav | Bin 52046 -> 0 bytes
addons/kenney_ui_audio/switch27.wav.import | 24 -
addons/kenney_ui_audio/switch28.wav | Bin 38222 -> 0 bytes
addons/kenney_ui_audio/switch28.wav.import | 24 -
addons/kenney_ui_audio/switch29.wav | Bin 55630 -> 0 bytes
addons/kenney_ui_audio/switch29.wav.import | 24 -
addons/kenney_ui_audio/switch3.wav | Bin 64846 -> 0 bytes
addons/kenney_ui_audio/switch3.wav.import | 24 -
addons/kenney_ui_audio/switch30.wav | Bin 65870 -> 0 bytes
addons/kenney_ui_audio/switch30.wav.import | 24 -
addons/kenney_ui_audio/switch31.wav | Bin 78670 -> 0 bytes
addons/kenney_ui_audio/switch31.wav.import | 24 -
addons/kenney_ui_audio/switch32.wav | Bin 79182 -> 0 bytes
addons/kenney_ui_audio/switch32.wav.import | 24 -
addons/kenney_ui_audio/switch33.wav | Bin 90446 -> 0 bytes
addons/kenney_ui_audio/switch33.wav.import | 24 -
addons/kenney_ui_audio/switch34.wav | Bin 85326 -> 0 bytes
addons/kenney_ui_audio/switch34.wav.import | 24 -
addons/kenney_ui_audio/switch35.wav | Bin 60750 -> 0 bytes
addons/kenney_ui_audio/switch35.wav.import | 24 -
addons/kenney_ui_audio/switch36.wav | Bin 58190 -> 0 bytes
addons/kenney_ui_audio/switch36.wav.import | 24 -
addons/kenney_ui_audio/switch37.wav | Bin 55630 -> 0 bytes
addons/kenney_ui_audio/switch37.wav.import | 24 -
addons/kenney_ui_audio/switch38.wav | Bin 75086 -> 0 bytes
addons/kenney_ui_audio/switch38.wav.import | 24 -
addons/kenney_ui_audio/switch4.wav | Bin 76110 -> 0 bytes
addons/kenney_ui_audio/switch4.wav.import | 24 -
addons/kenney_ui_audio/switch5.wav | Bin 55630 -> 0 bytes
addons/kenney_ui_audio/switch5.wav.import | 24 -
addons/kenney_ui_audio/switch6.wav | Bin 64334 -> 0 bytes
addons/kenney_ui_audio/switch6.wav.import | 24 -
addons/kenney_ui_audio/switch7.wav | Bin 37710 -> 0 bytes
addons/kenney_ui_audio/switch7.wav.import | 24 -
addons/kenney_ui_audio/switch8.wav | Bin 60238 -> 0 bytes
addons/kenney_ui_audio/switch8.wav.import | 24 -
addons/kenney_ui_audio/switch9.wav | Bin 46414 -> 0 bytes
addons/kenney_ui_audio/switch9.wav.import | 24 -
addons/simplelicense/GUI/LicenseGUI.tscn | 111 -
addons/simplelicense/Icon.png | Bin 46235 -> 0 bytes
addons/simplelicense/Icon.svg | 163 --
addons/simplelicense/Icon.svg.import | 37 -
addons/simplelicense/LICENSE.txt | 121 -
addons/simplelicense/README.txt | 37 -
addons/simplelicense/api/License.gd | 78 -
addons/simplelicense/api/LicenseLink.gd | 178 --
addons/simplelicense/api/LicenseManager.gd | 121 -
.../license_links/mod_1_license_link.tres | 14 -
.../licenses/mod_1_license_identifier.txt | 15 -
addons/simplelicense/mod_example/mod_1.gd | 1 -
addons/simplelicense/plugin.cfg | 9 -
addons/simplelicense/plugin.gd | 12 -
addons/simplelicense/screenshots/Example.png | Bin 143174 -> 0 bytes
assets/Assets_Material.tres | 14 -
assets/Bomb.scn | Bin 13173 -> 0 bytes
assets/CGTuts_OceanHDRI_Freebie_001.hdr | 6 -
.../CGTuts_OceanHDRI_Freebie_001.hdr.import | 34 -
assets/Hand_Left.scn | Bin 7034 -> 0 bytes
assets/Hand_Right.scn | Bin 6968 -> 0 bytes
assets/Items_Albedo.png | Bin 332 -> 0 bytes
assets/Items_EM.png | Bin 263 -> 0 bytes
assets/Pistol.scn | Bin 53311 -> 0 bytes
assets/Pistol_Flash.scn | Bin 2233 -> 0 bytes
assets/RigidBody_Sphere.scn | Bin 29268 -> 0 bytes
assets/SIL Open Font License.txt | 155 --
assets/Shotgun.scn | Bin 45536 -> 0 bytes
assets/Shotgun_Flash.scn | Bin 5006 -> 0 bytes
assets/Shpere_Target.scn | Bin 6922 -> 0 bytes
assets/Sword.scn | Bin 28502 -> 0 bytes
assets/Titillium-Regular.otf | Bin 57460 -> 0 bytes
assets/VR_Assets.dae.import | 1064 ---------
assets/adorable-z.png | Bin 26323 -> 0 bytes
assets/adorable-z.png.import | 34 -
assets/avatars/cindy.png | Bin 11115 -> 0 bytes
assets/avatars/kit.png | Bin 10429 -> 0 bytes
assets/avatars/zc.png | Bin 1249 -> 0 bytes
assets/avatars/zc.png.import | 34 -
assets/cirria.png | Bin 68045 -> 0 bytes
assets/cirria.png.import | 34 -
assets/firestation_3x3.png.import | 34 -
assets/fnn.png.import | 35 -
assets/res_zones_3x3.png.import | 34 -
assets/symbols/fontawesome/coins.svg.import | 37 -
assets/ticker/pawprint-logo.svg | 165 --
assets/ticker_black.tres | 4 -
.../fonts/LICENSE.txt => fonts/license.txt | 87 +-
fonts/lilita_one_regular.ttf | Bin 0 -> 26828 bytes
.../lilita_one_regular.ttf.import | 8 +-
licenses/Unlicense.txt | 24 -
licenses/license_links/SimpleLicense.tres | 14 -
models/Textures/colormap.png | Bin 0 -> 9385 bytes
.../Textures/colormap.png.import | 8 +-
models/building-garage.glb | Bin 0 -> 19204 bytes
models/building-garage.glb.import | 34 +
models/building-small-a.glb | Bin 0 -> 39660 bytes
models/building-small-a.glb.import | 34 +
models/building-small-b.glb | Bin 0 -> 49768 bytes
models/building-small-b.glb.import | 34 +
models/building-small-c.glb | Bin 0 -> 70088 bytes
models/building-small-c.glb.import | 34 +
models/building-small-d.glb | Bin 0 -> 39348 bytes
models/building-small-d.glb.import | 34 +
models/grass-trees-tall.glb | Bin 0 -> 47688 bytes
models/grass-trees-tall.glb.import | 34 +
models/grass-trees.glb | Bin 0 -> 38160 bytes
models/grass-trees.glb.import | 34 +
models/grass.glb | Bin 0 -> 4604 bytes
models/grass.glb.import | 34 +
models/pavement-fountain.glb | Bin 0 -> 14076 bytes
models/pavement-fountain.glb.import | 34 +
models/pavement.glb | Bin 0 -> 3620 bytes
models/pavement.glb.import | 34 +
models/road-corner.glb | Bin 0 -> 11096 bytes
models/road-corner.glb.import | 34 +
models/road-intersection.glb | Bin 0 -> 13140 bytes
models/road-intersection.glb.import | 34 +
models/road-split.glb | Bin 0 -> 9400 bytes
models/road-split.glb.import | 34 +
models/road-straight-lightposts.glb | Bin 0 -> 18216 bytes
models/road-straight-lightposts.glb.import | 34 +
models/road-straight.glb | Bin 0 -> 6148 bytes
models/road-straight.glb.import | 34 +
project.godot | 79 +-
scenes/game.tscn | 13 -
scenes/interface.tscn | 35 +
scenes/item_select.tscn | 38 -
scenes/license_gui.tscn | 85 -
scenes/main-environment.tres | 31 +
scenes/main2d.tscn | 63 +
scenes/main3d.tscn | 93 +
script_templates/.gdignore | 0
script_templates/BTNode/default.gd | 4 -
scripts/3d/builder3d.gd | 156 ++
scripts/3d/data_map.gd | 5 +
scripts/3d/data_structure.gd | 6 +
scripts/3d/structure.gd | 8 +
scripts/3d/view.gd | 49 +
scripts/builder.gd | 21 +
scripts/editor.gd | 22 -
scripts/license_gui.gd | 150 --
splash-screen.png | Bin 0 -> 60513 bytes
...con.png.import => splash-screen.png.import | 8 +-
{assets => sprites}/airport.png | Bin
{assets => sprites}/airport.png.import | 8 +-
{assets => sprites}/airport_3x3.png | Bin
{assets => sprites}/airport_3x3.png.import | 8 +-
{assets => sprites}/coal.png | Bin
{assets => sprites}/coal.png.import | 8 +-
{assets => sprites}/coal_3x3.png | Bin
{assets => sprites}/coal_3x3.png.import | 8 +-
{assets => sprites}/coal_smoke_frames.png | Bin
.../coal_smoke_frames.png.import | 8 +-
{assets => sprites}/coal_smoke_frames_3x3.png | Bin
.../coal_smoke_frames_3x3.png.import | 8 +-
sprites/coin.png | Bin 0 -> 5062 bytes
.../ind.png.import => sprites/coin.png.import | 8 +-
{assets => sprites}/com_zones.png | Bin
{assets => sprites}/com_zones.png.import | 8 +-
{assets => sprites}/com_zones_3x3.png | Bin
{assets => sprites}/com_zones_3x3.png.import | 8 +-
{assets => sprites}/firestation.png | Bin
{assets => sprites}/firestation.png.import | 8 +-
{assets => sprites}/firestation_3x3.png | Bin
.../firestation_3x3.png.import | 8 +-
{assets => sprites}/grass.tres | 2 +-
{assets => sprites}/ind.png | Bin
.../ind.png.import | 8 +-
{assets => sprites}/ind01_pistons_frames.png | Bin
.../ind01_pistons_frames.png.import | 8 +-
{assets => sprites}/ind03_smoke_frames.png | Bin
.../ind03_smoke_frames.png.import | 8 +-
{assets => sprites}/ind04_smoke_frames.png | Bin
.../ind04_smoke_frames.png.import | 8 +-
{assets => sprites}/ind07_smoke_frames.png | Bin
.../ind07_smoke_frames.png.import | 8 +-
{assets => sprites}/ind08_smoke_frames.png | Bin
.../ind08_smoke_frames.png.import | 8 +-
{assets => sprites}/ind_zones.png | Bin
{assets => sprites}/ind_zones.png.import | 8 +-
{assets => sprites}/ind_zones_3x3.png | Bin
{assets => sprites}/ind_zones_3x3.png.import | 8 +-
{assets => sprites}/misc_animation.png | Bin
{assets => sprites}/misc_animation.png.import | 8 +-
{assets => sprites}/misc_animation_3x3.png | Bin
.../misc_animation_3x3.png.import | 8 +-
{assets => sprites}/nuclear.png | Bin
{assets => sprites}/nuclear.png.import | 8 +-
{assets => sprites}/nuclear_3x3.png | Bin
{assets => sprites}/nuclear_3x3.png.import | 8 +-
{assets => sprites}/police.png | Bin
{assets => sprites}/police.png.import | 8 +-
{assets => sprites}/police_3x3.png | Bin
{assets => sprites}/police_3x3.png.import | 8 +-
{assets => sprites}/rails.png | Bin
{assets => sprites}/rails.png.import | 8 +-
{assets => sprites}/rails_3x3.png | Bin
{assets => sprites}/rails_3x3.png.import | 8 +-
{assets => sprites}/res.png | Bin
{assets => sprites}/res.png.import | 8 +-
{assets => sprites}/res_houses.png | Bin
{assets => sprites}/res_houses.png.import | 8 +-
{assets => sprites}/res_houses_3x3.png | Bin
{assets => sprites}/res_houses_3x3.png.import | 8 +-
{assets => sprites}/res_zones.png | Bin
{assets => sprites}/res_zones.png.import | 8 +-
{assets => sprites}/res_zones_3x3.png | Bin
.../res_zones_3x3.png.import | 8 +-
{assets => sprites}/roads.png | Bin
{assets => sprites}/roads.png.import | 8 +-
{assets => sprites}/roads.tres | 2 +-
{assets => sprites}/roads_3x3.png | Bin
{assets => sprites}/roads_3x3.png.import | 8 +-
{assets => sprites}/roadwire.png | Bin
{assets => sprites}/roadwire.png.import | 8 +-
{assets => sprites}/roadwire_3x3.png | Bin
{assets => sprites}/roadwire_3x3.png.import | 8 +-
{assets => sprites}/seaport.png | Bin
.../seaport.png.import | 8 +-
{assets => sprites}/seaport_3x3.png | Bin
{assets => sprites}/seaport_3x3.png.import | 8 +-
sprites/selector.png | Bin 0 -> 791 bytes
.../selector.png.import | 8 +-
{assets => sprites}/snow-expansion.png | Bin
{assets => sprites}/snow-expansion.png.import | 8 +-
{assets => sprites}/stadium.png | Bin
{assets => sprites}/stadium.png.import | 8 +-
{assets => sprites}/stadium2.png | Bin
{assets => sprites}/stadium2.png.import | 8 +-
{assets => sprites}/stadium2_3x3.png | Bin
{assets => sprites}/stadium2_3x3.png.import | 8 +-
{assets => sprites}/stadium_3x3.png | Bin
{assets => sprites}/stadium_3x3.png.import | 8 +-
{assets => sprites}/stadium_animation_gfx.png | Bin
.../stadium_animation_gfx.png.import | 8 +-
.../symbols/fontawesome/LICENSE | 0
.../fontawesome/arrow-pointing-down.svg | 0
.../arrow-pointing-down.svg.import | 8 +-
.../symbols/fontawesome/arrow-up.svg | 0
.../symbols/fontawesome/arrow-up.svg.import | 8 +-
.../symbols/fontawesome/building.svg | 0
.../symbols/fontawesome/building.svg.import | 8 +-
.../symbols/fontawesome/calendar.svg | 0
.../symbols/fontawesome/calendar.svg.import | 8 +-
.../symbols/fontawesome/city.svg | 0
.../symbols/fontawesome/city.svg.import | 8 +-
.../symbols/fontawesome/cogs.svg | 0
.../symbols/fontawesome/cogs.svg.import | 8 +-
.../symbols/fontawesome/coins.svg | 0
.../symbols/fontawesome/coins.svg.import | 8 +-
.../symbols/fontawesome/comments.svg | 0
.../symbols/fontawesome/comments.svg.import | 8 +-
.../symbols/fontawesome/envelope-open.svg | 0
.../fontawesome/envelope-open.svg.import | 8 +-
.../symbols/fontawesome/envelope.svg | 0
.../symbols/fontawesome/envelope.svg.import | 8 +-
.../symbols/fontawesome/fast.svg | 0
.../symbols/fontawesome/fast.svg.import | 8 +-
.../symbols/fontawesome/folder-open.svg | 0
.../fontawesome/folder-open.svg.import | 8 +-
.../symbols/fontawesome/folder.svg | 0
.../symbols/fontawesome/folder.svg.import | 8 +-
.../symbols/fontawesome/github-sign.svg | 0
.../fontawesome/github-sign.svg.import | 8 +-
.../symbols/fontawesome/graph.svg | 0
.../symbols/fontawesome/graph.svg.import | 8 +-
.../symbols/fontawesome/layer-group.svg | 0
.../fontawesome/layer-group.svg.import | 8 +-
.../symbols/fontawesome/meet.svg | 0
.../symbols/fontawesome/meet.svg.import | 8 +-
.../symbols/fontawesome/pie-chart.svg | 0
.../symbols/fontawesome/pie-chart.svg.import | 8 +-
.../symbols/fontawesome/population.svg | 0
.../symbols/fontawesome/population.svg.import | 8 +-
.../symbols/fontawesome/question-circle.svg | 0
.../fontawesome/question-circle.svg.import | 8 +-
.../symbols/fontawesome/slow.svg | 0
.../symbols/fontawesome/slow.svg.import | 8 +-
.../symbols/fontawesome/spinner.svg | 0
.../symbols/fontawesome/spinner.svg.import | 8 +-
.../symbols/fontawesome/thumbs-down.svg | 0
.../fontawesome/thumbs-down.svg.import | 8 +-
.../symbols/fontawesome/thumbs-up.svg | 0
.../symbols/fontawesome/thumbs-up.svg.import | 8 +-
{assets => sprites}/terrain.png | Bin
{assets => sprites}/terrain.png.import | 8 +-
{assets => sprites}/terrain_3x3.png | Bin
{assets => sprites}/terrain_3x3.png.import | 8 +-
{assets => sprites}/terrain_cl.png | Bin
{assets => sprites}/terrain_cl.png.import | 8 +-
{assets => sprites}/terrian.tres | 2 +-
{assets => sprites}/traffic_frames.png | Bin
{assets => sprites}/traffic_frames.png.import | 8 +-
{assets => sprites}/traffic_frames_3x3.png | Bin
.../traffic_frames_3x3.png.import | 8 +-
{assets => sprites}/ui/airport.png | Bin
{assets => sprites}/ui/airport.png.import | 8 +-
{assets => sprites}/ui/coal.png | Bin
{assets => sprites}/ui/coal.png.import | 8 +-
{assets => sprites}/ui/com.png | Bin
{assets => sprites}/ui/com.png.import | 8 +-
{assets => sprites}/ui/demandg.png | Bin
{assets => sprites}/ui/demandg.png.import | 8 +-
{assets => sprites}/ui/dropdownBottom.png | Bin
.../ui/dropdownBottom.png.import | 8 +-
{assets => sprites}/ui/dropdownMid.png | Bin
{assets => sprites}/ui/dropdownMid.png.import | 8 +-
{assets => sprites}/ui/dropdownTop.png | Bin
sprites/ui/dropdownTop.png.import | 34 +
{assets => sprites}/ui/fire.png | Bin
{assets => sprites}/ui/fire.png.import | 8 +-
{assets => sprites}/ui/grcom.png | Bin
{assets => sprites}/ui/grcom.png.import | 8 +-
{assets => sprites}/ui/grcomhi.png | Bin
{assets => sprites}/ui/grcomhi.png.import | 8 +-
{assets => sprites}/ui/grcrim.png | Bin
{assets => sprites}/ui/grcrim.png.import | 8 +-
{assets => sprites}/ui/grcrimhi.png | Bin
{assets => sprites}/ui/grcrimhi.png.import | 8 +-
{assets => sprites}/ui/grind.png | Bin
{assets => sprites}/ui/grind.png.import | 8 +-
{assets => sprites}/ui/grindhi.png | Bin
{assets => sprites}/ui/grindhi.png.import | 8 +-
{assets => sprites}/ui/grmony.png | Bin
{assets => sprites}/ui/grmony.png.import | 8 +-
{assets => sprites}/ui/grmonyhi.png | Bin
{assets => sprites}/ui/grmonyhi.png.import | 8 +-
{assets => sprites}/ui/grpoll.png | Bin
{assets => sprites}/ui/grpoll.png.import | 8 +-
{assets => sprites}/ui/grpollhi.png | Bin
{assets => sprites}/ui/grpollhi.png.import | 8 +-
{assets => sprites}/ui/grres.png | Bin
{assets => sprites}/ui/grres.png.import | 8 +-
{assets => sprites}/ui/grreshi.png | Bin
{assets => sprites}/ui/grreshi.png.import | 8 +-
{assets => sprites}/ui/icairp.png | Bin
{assets => sprites}/ui/icairp.png.import | 8 +-
{assets => sprites}/ui/icairphi.png | Bin
{assets => sprites}/ui/icairphi.png.import | 8 +-
{assets => sprites}/ui/iccoal.png | Bin
{assets => sprites}/ui/iccoal.png.import | 8 +-
{assets => sprites}/ui/iccoalhi.png | Bin
{assets => sprites}/ui/iccoalhi.png.import | 8 +-
{assets => sprites}/ui/iccom.png | Bin
{assets => sprites}/ui/iccom.png.import | 8 +-
{assets => sprites}/ui/iccomhi.png | Bin
{assets => sprites}/ui/iccomhi.png.import | 8 +-
{assets => sprites}/ui/icdozr.png | Bin
{assets => sprites}/ui/icdozr.png.import | 8 +-
{assets => sprites}/ui/icdozrhi.png | Bin
{assets => sprites}/ui/icdozrhi.png.import | 8 +-
{assets => sprites}/ui/icfire.png | Bin
{assets => sprites}/ui/icfire.png.import | 8 +-
{assets => sprites}/ui/icfirehi.png | Bin
{assets => sprites}/ui/icfirehi.png.import | 8 +-
{assets => sprites}/ui/icind.png | Bin
{assets => sprites}/ui/icind.png.import | 8 +-
{assets => sprites}/ui/icindhi.png | Bin
{assets => sprites}/ui/icindhi.png.import | 8 +-
{assets => sprites}/ui/icnuc.png | Bin
{assets => sprites}/ui/icnuc.png.import | 8 +-
{assets => sprites}/ui/icnuchi.png | Bin
{assets => sprites}/ui/icnuchi.png.import | 8 +-
{assets => sprites}/ui/icpark.png | Bin
{assets => sprites}/ui/icpark.png.import | 8 +-
{assets => sprites}/ui/icparkhi.png | Bin
{assets => sprites}/ui/icparkhi.png.import | 8 +-
{assets => sprites}/ui/icpol.png | Bin
{assets => sprites}/ui/icpol.png.import | 8 +-
{assets => sprites}/ui/icpolhi.png | Bin
{assets => sprites}/ui/icpolhi.png.import | 8 +-
{assets => sprites}/ui/icqry.png | Bin
{assets => sprites}/ui/icqry.png.import | 8 +-
{assets => sprites}/ui/icqryhi.png | Bin
{assets => sprites}/ui/icqryhi.png.import | 8 +-
{assets => sprites}/ui/icrail.png | Bin
{assets => sprites}/ui/icrail.png.import | 8 +-
{assets => sprites}/ui/icrailhi.png | Bin
.../ui/icrailhi.png.import | 8 +-
{assets => sprites}/ui/icres.png | Bin
{assets => sprites}/ui/icres.png.import | 8 +-
{assets => sprites}/ui/icreshi.png | Bin
{assets => sprites}/ui/icreshi.png.import | 8 +-
{assets => sprites}/ui/icroad.png | Bin
{assets => sprites}/ui/icroad.png.import | 8 +-
{assets => sprites}/ui/icroadhi.png | Bin
{assets => sprites}/ui/icroadhi.png.import | 8 +-
{assets => sprites}/ui/icseap.png | Bin
{assets => sprites}/ui/icseap.png.import | 8 +-
{assets => sprites}/ui/icseaphi.png | Bin
{assets => sprites}/ui/icseaphi.png.import | 8 +-
{assets => sprites}/ui/icstad.png | Bin
{assets => sprites}/ui/icstad.png.import | 8 +-
{assets => sprites}/ui/icstadhi.png | Bin
{assets => sprites}/ui/icstadhi.png.import | 8 +-
{assets => sprites}/ui/icwire.png | Bin
{assets => sprites}/ui/icwire.png.import | 8 +-
{assets => sprites}/ui/icwirehi.png | Bin
{assets => sprites}/ui/icwirehi.png.import | 8 +-
{assets => sprites}/ui/pause.svg | 0
{assets => sprites}/ui/pause.svg.import | 8 +-
{assets => sprites}/vignette.png | Bin
{assets => sprites}/vignette.png.import | 8 +-
{assets => sprites}/water.tres | 2 +-
{assets => sprites}/wires.png | Bin
{assets => sprites}/wires.png.import | 8 +-
{assets => sprites}/wires_3x3.png | Bin
{assets => sprites}/wires_3x3.png.import | 8 +-
structures/building-garage.tres | 9 +
structures/building-small-a.tres | 9 +
structures/building-small-b.tres | 9 +
structures/building-small-c.tres | 9 +
structures/building-small-d.tres | 9 +
structures/grass-trees-tall.tres | 9 +
structures/grass-trees.tres | 9 +
structures/grass.tres | 9 +
structures/pavement-fountain.tres | 9 +
structures/pavement.tres | 9 +
structures/road-corner.tres | 9 +
structures/road-intersection.tres | 9 +
structures/road-split.tres | 9 +
structures/road-straight-lightposts.tres | 9 +
structures/road-straight.tres | 9 +
.../screenshots => vector}/.gdignore | 0
vector/sprites.fla | Bin 0 -> 50517 bytes
510 files changed, 2236 insertions(+), 7925 deletions(-)
delete mode 100644 addons/SpritesheetGenerator/Checker.png
delete mode 100644 addons/SpritesheetGenerator/Checker.png.import
delete mode 100644 addons/SpritesheetGenerator/SpriteSheetGenerator.gd
delete mode 100644 addons/SpritesheetGenerator/SpritesheetFrame.tscn
delete mode 100644 addons/SpritesheetGenerator/SpritesheetGenerator.tscn
delete mode 100644 addons/SpritesheetGenerator/plugin.cfg
delete mode 100644 addons/fontawesome/All.gd
delete mode 100644 addons/fontawesome/FontAwesome.gd
delete mode 100644 addons/fontawesome/LICENSE.txt
delete mode 100644 addons/fontawesome/flag-solid.svg
delete mode 100644 addons/fontawesome/flag-solid.svg.import
delete mode 100644 addons/fontawesome/fonts/fa-brands-400.woff2
delete mode 100644 addons/fontawesome/fonts/fa-brands-400.woff2.import
delete mode 100644 addons/fontawesome/fonts/fa-regular-400.woff2
delete mode 100644 addons/fontawesome/fonts/fa-regular-400.woff2.import
delete mode 100644 addons/fontawesome/fonts/fa-solid-900.woff2
delete mode 100644 addons/fontawesome/fonts/fa-solid-900.woff2.import
delete mode 100644 addons/fontawesome/plugin.cfg
delete mode 100644 addons/fontawesome/plugin.gd
delete mode 100644 addons/kenney_ui_audio/LICENSE.txt
delete mode 100644 addons/kenney_ui_audio/click1.wav
delete mode 100644 addons/kenney_ui_audio/click1.wav.import
delete mode 100644 addons/kenney_ui_audio/click2.wav
delete mode 100644 addons/kenney_ui_audio/click2.wav.import
delete mode 100644 addons/kenney_ui_audio/click3.wav
delete mode 100644 addons/kenney_ui_audio/click3.wav.import
delete mode 100644 addons/kenney_ui_audio/click4.wav
delete mode 100644 addons/kenney_ui_audio/click4.wav.import
delete mode 100644 addons/kenney_ui_audio/click5.wav
delete mode 100644 addons/kenney_ui_audio/click5.wav.import
delete mode 100644 addons/kenney_ui_audio/mouseclick1.wav
delete mode 100644 addons/kenney_ui_audio/mouseclick1.wav.import
delete mode 100644 addons/kenney_ui_audio/mouserelease1.wav
delete mode 100644 addons/kenney_ui_audio/mouserelease1.wav.import
delete mode 100644 addons/kenney_ui_audio/rollover1.wav
delete mode 100644 addons/kenney_ui_audio/rollover1.wav.import
delete mode 100644 addons/kenney_ui_audio/rollover2.wav
delete mode 100644 addons/kenney_ui_audio/rollover2.wav.import
delete mode 100644 addons/kenney_ui_audio/rollover3.wav
delete mode 100644 addons/kenney_ui_audio/rollover3.wav.import
delete mode 100644 addons/kenney_ui_audio/rollover4.wav
delete mode 100644 addons/kenney_ui_audio/rollover4.wav.import
delete mode 100644 addons/kenney_ui_audio/rollover5.wav
delete mode 100644 addons/kenney_ui_audio/rollover5.wav.import
delete mode 100644 addons/kenney_ui_audio/rollover6.wav
delete mode 100644 addons/kenney_ui_audio/rollover6.wav.import
delete mode 100644 addons/kenney_ui_audio/switch1.wav
delete mode 100644 addons/kenney_ui_audio/switch1.wav.import
delete mode 100644 addons/kenney_ui_audio/switch10.wav
delete mode 100644 addons/kenney_ui_audio/switch10.wav.import
delete mode 100644 addons/kenney_ui_audio/switch11.wav
delete mode 100644 addons/kenney_ui_audio/switch11.wav.import
delete mode 100644 addons/kenney_ui_audio/switch12.wav
delete mode 100644 addons/kenney_ui_audio/switch12.wav.import
delete mode 100644 addons/kenney_ui_audio/switch13.wav
delete mode 100644 addons/kenney_ui_audio/switch13.wav.import
delete mode 100644 addons/kenney_ui_audio/switch14.wav
delete mode 100644 addons/kenney_ui_audio/switch14.wav.import
delete mode 100644 addons/kenney_ui_audio/switch15.wav
delete mode 100644 addons/kenney_ui_audio/switch15.wav.import
delete mode 100644 addons/kenney_ui_audio/switch16.wav
delete mode 100644 addons/kenney_ui_audio/switch16.wav.import
delete mode 100644 addons/kenney_ui_audio/switch17.wav
delete mode 100644 addons/kenney_ui_audio/switch17.wav.import
delete mode 100644 addons/kenney_ui_audio/switch18.wav
delete mode 100644 addons/kenney_ui_audio/switch18.wav.import
delete mode 100644 addons/kenney_ui_audio/switch19.wav
delete mode 100644 addons/kenney_ui_audio/switch19.wav.import
delete mode 100644 addons/kenney_ui_audio/switch2.wav
delete mode 100644 addons/kenney_ui_audio/switch2.wav.import
delete mode 100644 addons/kenney_ui_audio/switch20.wav
delete mode 100644 addons/kenney_ui_audio/switch20.wav.import
delete mode 100644 addons/kenney_ui_audio/switch21.wav
delete mode 100644 addons/kenney_ui_audio/switch21.wav.import
delete mode 100644 addons/kenney_ui_audio/switch22.wav
delete mode 100644 addons/kenney_ui_audio/switch22.wav.import
delete mode 100644 addons/kenney_ui_audio/switch23.wav
delete mode 100644 addons/kenney_ui_audio/switch23.wav.import
delete mode 100644 addons/kenney_ui_audio/switch24.wav
delete mode 100644 addons/kenney_ui_audio/switch24.wav.import
delete mode 100644 addons/kenney_ui_audio/switch25.wav
delete mode 100644 addons/kenney_ui_audio/switch25.wav.import
delete mode 100644 addons/kenney_ui_audio/switch26.wav
delete mode 100644 addons/kenney_ui_audio/switch26.wav.import
delete mode 100644 addons/kenney_ui_audio/switch27.wav
delete mode 100644 addons/kenney_ui_audio/switch27.wav.import
delete mode 100644 addons/kenney_ui_audio/switch28.wav
delete mode 100644 addons/kenney_ui_audio/switch28.wav.import
delete mode 100644 addons/kenney_ui_audio/switch29.wav
delete mode 100644 addons/kenney_ui_audio/switch29.wav.import
delete mode 100644 addons/kenney_ui_audio/switch3.wav
delete mode 100644 addons/kenney_ui_audio/switch3.wav.import
delete mode 100644 addons/kenney_ui_audio/switch30.wav
delete mode 100644 addons/kenney_ui_audio/switch30.wav.import
delete mode 100644 addons/kenney_ui_audio/switch31.wav
delete mode 100644 addons/kenney_ui_audio/switch31.wav.import
delete mode 100644 addons/kenney_ui_audio/switch32.wav
delete mode 100644 addons/kenney_ui_audio/switch32.wav.import
delete mode 100644 addons/kenney_ui_audio/switch33.wav
delete mode 100644 addons/kenney_ui_audio/switch33.wav.import
delete mode 100644 addons/kenney_ui_audio/switch34.wav
delete mode 100644 addons/kenney_ui_audio/switch34.wav.import
delete mode 100644 addons/kenney_ui_audio/switch35.wav
delete mode 100644 addons/kenney_ui_audio/switch35.wav.import
delete mode 100644 addons/kenney_ui_audio/switch36.wav
delete mode 100644 addons/kenney_ui_audio/switch36.wav.import
delete mode 100644 addons/kenney_ui_audio/switch37.wav
delete mode 100644 addons/kenney_ui_audio/switch37.wav.import
delete mode 100644 addons/kenney_ui_audio/switch38.wav
delete mode 100644 addons/kenney_ui_audio/switch38.wav.import
delete mode 100644 addons/kenney_ui_audio/switch4.wav
delete mode 100644 addons/kenney_ui_audio/switch4.wav.import
delete mode 100644 addons/kenney_ui_audio/switch5.wav
delete mode 100644 addons/kenney_ui_audio/switch5.wav.import
delete mode 100644 addons/kenney_ui_audio/switch6.wav
delete mode 100644 addons/kenney_ui_audio/switch6.wav.import
delete mode 100644 addons/kenney_ui_audio/switch7.wav
delete mode 100644 addons/kenney_ui_audio/switch7.wav.import
delete mode 100644 addons/kenney_ui_audio/switch8.wav
delete mode 100644 addons/kenney_ui_audio/switch8.wav.import
delete mode 100644 addons/kenney_ui_audio/switch9.wav
delete mode 100644 addons/kenney_ui_audio/switch9.wav.import
delete mode 100644 addons/simplelicense/GUI/LicenseGUI.tscn
delete mode 100644 addons/simplelicense/Icon.png
delete mode 100644 addons/simplelicense/Icon.svg
delete mode 100644 addons/simplelicense/Icon.svg.import
delete mode 100644 addons/simplelicense/LICENSE.txt
delete mode 100644 addons/simplelicense/README.txt
delete mode 100644 addons/simplelicense/api/License.gd
delete mode 100644 addons/simplelicense/api/LicenseLink.gd
delete mode 100644 addons/simplelicense/api/LicenseManager.gd
delete mode 100644 addons/simplelicense/mod_example/licenses/license_links/mod_1_license_link.tres
delete mode 100644 addons/simplelicense/mod_example/licenses/mod_1_license_identifier.txt
delete mode 100644 addons/simplelicense/mod_example/mod_1.gd
delete mode 100644 addons/simplelicense/plugin.cfg
delete mode 100644 addons/simplelicense/plugin.gd
delete mode 100644 addons/simplelicense/screenshots/Example.png
delete mode 100644 assets/Assets_Material.tres
delete mode 100644 assets/Bomb.scn
delete mode 100644 assets/CGTuts_OceanHDRI_Freebie_001.hdr
delete mode 100644 assets/CGTuts_OceanHDRI_Freebie_001.hdr.import
delete mode 100644 assets/Hand_Left.scn
delete mode 100644 assets/Hand_Right.scn
delete mode 100644 assets/Items_Albedo.png
delete mode 100644 assets/Items_EM.png
delete mode 100644 assets/Pistol.scn
delete mode 100644 assets/Pistol_Flash.scn
delete mode 100644 assets/RigidBody_Sphere.scn
delete mode 100644 assets/SIL Open Font License.txt
delete mode 100644 assets/Shotgun.scn
delete mode 100644 assets/Shotgun_Flash.scn
delete mode 100644 assets/Shpere_Target.scn
delete mode 100644 assets/Sword.scn
delete mode 100644 assets/Titillium-Regular.otf
delete mode 100644 assets/VR_Assets.dae.import
delete mode 100644 assets/adorable-z.png
delete mode 100644 assets/adorable-z.png.import
delete mode 100644 assets/avatars/cindy.png
delete mode 100644 assets/avatars/kit.png
delete mode 100644 assets/avatars/zc.png
delete mode 100644 assets/avatars/zc.png.import
delete mode 100644 assets/cirria.png
delete mode 100644 assets/cirria.png.import
delete mode 100644 assets/firestation_3x3.png.import
delete mode 100644 assets/fnn.png.import
delete mode 100644 assets/res_zones_3x3.png.import
delete mode 100644 assets/symbols/fontawesome/coins.svg.import
delete mode 100644 assets/ticker/pawprint-logo.svg
delete mode 100644 assets/ticker_black.tres
rename addons/fontawesome/fonts/LICENSE.txt => fonts/license.txt (54%)
create mode 100644 fonts/lilita_one_regular.ttf
rename assets/Titillium-Regular.otf.import => fonts/lilita_one_regular.ttf.import (61%)
delete mode 100644 licenses/Unlicense.txt
delete mode 100644 licenses/license_links/SimpleLicense.tres
create mode 100644 models/Textures/colormap.png
rename assets/Items_Albedo.png.import => models/Textures/colormap.png.import (68%)
create mode 100644 models/building-garage.glb
create mode 100644 models/building-garage.glb.import
create mode 100644 models/building-small-a.glb
create mode 100644 models/building-small-a.glb.import
create mode 100644 models/building-small-b.glb
create mode 100644 models/building-small-b.glb.import
create mode 100644 models/building-small-c.glb
create mode 100644 models/building-small-c.glb.import
create mode 100644 models/building-small-d.glb
create mode 100644 models/building-small-d.glb.import
create mode 100644 models/grass-trees-tall.glb
create mode 100644 models/grass-trees-tall.glb.import
create mode 100644 models/grass-trees.glb
create mode 100644 models/grass-trees.glb.import
create mode 100644 models/grass.glb
create mode 100644 models/grass.glb.import
create mode 100644 models/pavement-fountain.glb
create mode 100644 models/pavement-fountain.glb.import
create mode 100644 models/pavement.glb
create mode 100644 models/pavement.glb.import
create mode 100644 models/road-corner.glb
create mode 100644 models/road-corner.glb.import
create mode 100644 models/road-intersection.glb
create mode 100644 models/road-intersection.glb.import
create mode 100644 models/road-split.glb
create mode 100644 models/road-split.glb.import
create mode 100644 models/road-straight-lightposts.glb
create mode 100644 models/road-straight-lightposts.glb.import
create mode 100644 models/road-straight.glb
create mode 100644 models/road-straight.glb.import
delete mode 100644 scenes/game.tscn
create mode 100644 scenes/interface.tscn
delete mode 100644 scenes/item_select.tscn
delete mode 100644 scenes/license_gui.tscn
create mode 100644 scenes/main-environment.tres
create mode 100644 scenes/main2d.tscn
create mode 100644 scenes/main3d.tscn
delete mode 100644 script_templates/.gdignore
delete mode 100644 script_templates/BTNode/default.gd
create mode 100644 scripts/3d/builder3d.gd
create mode 100644 scripts/3d/data_map.gd
create mode 100644 scripts/3d/data_structure.gd
create mode 100644 scripts/3d/structure.gd
create mode 100644 scripts/3d/view.gd
create mode 100644 scripts/builder.gd
delete mode 100644 scripts/editor.gd
delete mode 100644 scripts/license_gui.gd
create mode 100644 splash-screen.png
rename addons/simplelicense/Icon.png.import => splash-screen.png.import (68%)
rename {assets => sprites}/airport.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/airport.png.import (69%)
rename {assets => sprites}/airport_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/airport_3x3.png.import (68%)
rename {assets => sprites}/coal.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/coal.png.import (70%)
rename {assets => sprites}/coal_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/coal_3x3.png.import (69%)
rename {assets => sprites}/coal_smoke_frames.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/coal_smoke_frames.png.import (66%)
rename {assets => sprites}/coal_smoke_frames_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/coal_smoke_frames_3x3.png.import (66%)
create mode 100644 sprites/coin.png
rename assets/ind.png.import => sprites/coin.png.import (70%)
rename {assets => sprites}/com_zones.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/com_zones.png.import (69%)
rename {assets => sprites}/com_zones_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/com_zones_3x3.png.import (67%)
rename {assets => sprites}/firestation.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/firestation.png.import (68%)
rename {assets => sprites}/firestation_3x3.png (100%)
mode change 100644 => 100755
rename assets/ui/icrailhi.png.import => sprites/firestation_3x3.png.import (70%)
rename {assets => sprites}/grass.tres (93%)
mode change 100644 => 100755
rename {assets => sprites}/ind.png (100%)
rename assets/ui/dropdownTop.png.import => sprites/ind.png.import (71%)
rename {assets => sprites}/ind01_pistons_frames.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ind01_pistons_frames.png.import (66%)
rename {assets => sprites}/ind03_smoke_frames.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ind03_smoke_frames.png.import (66%)
rename {assets => sprites}/ind04_smoke_frames.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ind04_smoke_frames.png.import (66%)
rename {assets => sprites}/ind07_smoke_frames.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ind07_smoke_frames.png.import (66%)
rename {assets => sprites}/ind08_smoke_frames.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ind08_smoke_frames.png.import (66%)
rename {assets => sprites}/ind_zones.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ind_zones.png.import (69%)
rename {assets => sprites}/ind_zones_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ind_zones_3x3.png.import (67%)
rename {assets => sprites}/misc_animation.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/misc_animation.png.import (67%)
rename {assets => sprites}/misc_animation_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/misc_animation_3x3.png.import (66%)
rename {assets => sprites}/nuclear.png (100%)
rename {assets => sprites}/nuclear.png.import (69%)
rename {assets => sprites}/nuclear_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/nuclear_3x3.png.import (68%)
rename {assets => sprites}/police.png (100%)
rename {assets => sprites}/police.png.import (69%)
rename {assets => sprites}/police_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/police_3x3.png.import (68%)
rename {assets => sprites}/rails.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/rails.png.import (70%)
rename {assets => sprites}/rails_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/rails_3x3.png.import (69%)
rename {assets => sprites}/res.png (100%)
rename {assets => sprites}/res.png.import (70%)
rename {assets => sprites}/res_houses.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/res_houses.png.import (68%)
rename {assets => sprites}/res_houses_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/res_houses_3x3.png.import (67%)
rename {assets => sprites}/res_zones.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/res_zones.png.import (69%)
rename {assets => sprites}/res_zones_3x3.png (100%)
mode change 100644 => 100755
rename assets/seaport.png.import => sprites/res_zones_3x3.png.import (70%)
rename {assets => sprites}/roads.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/roads.png.import (70%)
rename {assets => sprites}/roads.tres (93%)
mode change 100644 => 100755
rename {assets => sprites}/roads_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/roads_3x3.png.import (69%)
rename {assets => sprites}/roadwire.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/roadwire.png.import (69%)
rename {assets => sprites}/roadwire_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/roadwire_3x3.png.import (68%)
rename {assets => sprites}/seaport.png (100%)
rename assets/avatars/cindy.png.import => sprites/seaport.png.import (69%)
rename {assets => sprites}/seaport_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/seaport_3x3.png.import (70%)
create mode 100644 sprites/selector.png
rename assets/Items_EM.png.import => sprites/selector.png.import (69%)
rename {assets => sprites}/snow-expansion.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/snow-expansion.png.import (67%)
rename {assets => sprites}/stadium.png (100%)
rename {assets => sprites}/stadium.png.import (69%)
rename {assets => sprites}/stadium2.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/stadium2.png.import (69%)
rename {assets => sprites}/stadium2_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/stadium2_3x3.png.import (68%)
rename {assets => sprites}/stadium_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/stadium_3x3.png.import (68%)
rename {assets => sprites}/stadium_animation_gfx.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/stadium_animation_gfx.png.import (65%)
rename {assets => sprites}/symbols/fontawesome/LICENSE (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/arrow-pointing-down.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/arrow-pointing-down.svg.import (68%)
rename {assets => sprites}/symbols/fontawesome/arrow-up.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/arrow-up.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/building.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/building.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/calendar.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/calendar.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/city.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/city.svg.import (72%)
rename {assets => sprites}/symbols/fontawesome/cogs.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/cogs.svg.import (72%)
rename {assets => sprites}/symbols/fontawesome/coins.svg (100%)
mode change 100644 => 100755
rename assets/ticker/pawprint-logo.svg.import => sprites/symbols/fontawesome/coins.svg.import (72%)
rename {assets => sprites}/symbols/fontawesome/comments.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/comments.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/envelope-open.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/envelope-open.svg.import (69%)
rename {assets => sprites}/symbols/fontawesome/envelope.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/envelope.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/fast.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/fast.svg.import (72%)
rename {assets => sprites}/symbols/fontawesome/folder-open.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/folder-open.svg.import (70%)
rename {assets => sprites}/symbols/fontawesome/folder.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/folder.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/github-sign.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/github-sign.svg.import (70%)
rename {assets => sprites}/symbols/fontawesome/graph.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/graph.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/layer-group.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/layer-group.svg.import (70%)
rename {assets => sprites}/symbols/fontawesome/meet.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/meet.svg.import (72%)
rename {assets => sprites}/symbols/fontawesome/pie-chart.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/pie-chart.svg.import (70%)
rename {assets => sprites}/symbols/fontawesome/population.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/population.svg.import (70%)
rename {assets => sprites}/symbols/fontawesome/question-circle.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/question-circle.svg.import (69%)
rename {assets => sprites}/symbols/fontawesome/slow.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/slow.svg.import (72%)
rename {assets => sprites}/symbols/fontawesome/spinner.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/spinner.svg.import (71%)
rename {assets => sprites}/symbols/fontawesome/thumbs-down.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/thumbs-down.svg.import (70%)
rename {assets => sprites}/symbols/fontawesome/thumbs-up.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/symbols/fontawesome/thumbs-up.svg.import (70%)
rename {assets => sprites}/terrain.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/terrain.png.import (69%)
rename {assets => sprites}/terrain_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/terrain_3x3.png.import (68%)
rename {assets => sprites}/terrain_cl.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/terrain_cl.png.import (68%)
rename {assets => sprites}/terrian.tres (93%)
mode change 100644 => 100755
rename {assets => sprites}/traffic_frames.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/traffic_frames.png.import (67%)
rename {assets => sprites}/traffic_frames_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/traffic_frames_3x3.png.import (66%)
rename {assets => sprites}/ui/airport.png (100%)
rename {assets => sprites}/ui/airport.png.import (69%)
rename {assets => sprites}/ui/coal.png (100%)
rename {assets => sprites}/ui/coal.png.import (70%)
rename {assets => sprites}/ui/com.png (100%)
rename {assets => sprites}/ui/com.png.import (70%)
rename {assets => sprites}/ui/demandg.png (100%)
rename {assets => sprites}/ui/demandg.png.import (69%)
rename {assets => sprites}/ui/dropdownBottom.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ui/dropdownBottom.png.import (67%)
rename {assets => sprites}/ui/dropdownMid.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/ui/dropdownMid.png.import (68%)
rename {assets => sprites}/ui/dropdownTop.png (100%)
mode change 100644 => 100755
create mode 100644 sprites/ui/dropdownTop.png.import
rename {assets => sprites}/ui/fire.png (100%)
rename {assets => sprites}/ui/fire.png.import (70%)
rename {assets => sprites}/ui/grcom.png (100%)
rename {assets => sprites}/ui/grcom.png.import (69%)
rename {assets => sprites}/ui/grcomhi.png (100%)
rename {assets => sprites}/ui/grcomhi.png.import (69%)
rename {assets => sprites}/ui/grcrim.png (100%)
rename {assets => sprites}/ui/grcrim.png.import (69%)
rename {assets => sprites}/ui/grcrimhi.png (100%)
rename {assets => sprites}/ui/grcrimhi.png.import (69%)
rename {assets => sprites}/ui/grind.png (100%)
rename {assets => sprites}/ui/grind.png.import (69%)
rename {assets => sprites}/ui/grindhi.png (100%)
rename {assets => sprites}/ui/grindhi.png.import (69%)
rename {assets => sprites}/ui/grmony.png (100%)
rename {assets => sprites}/ui/grmony.png.import (69%)
rename {assets => sprites}/ui/grmonyhi.png (100%)
rename {assets => sprites}/ui/grmonyhi.png.import (69%)
rename {assets => sprites}/ui/grpoll.png (100%)
rename {assets => sprites}/ui/grpoll.png.import (69%)
rename {assets => sprites}/ui/grpollhi.png (100%)
rename {assets => sprites}/ui/grpollhi.png.import (69%)
rename {assets => sprites}/ui/grres.png (100%)
rename {assets => sprites}/ui/grres.png.import (69%)
rename {assets => sprites}/ui/grreshi.png (100%)
rename {assets => sprites}/ui/grreshi.png.import (69%)
rename {assets => sprites}/ui/icairp.png (100%)
rename {assets => sprites}/ui/icairp.png.import (69%)
rename {assets => sprites}/ui/icairphi.png (100%)
rename {assets => sprites}/ui/icairphi.png.import (69%)
rename {assets => sprites}/ui/iccoal.png (100%)
rename {assets => sprites}/ui/iccoal.png.import (69%)
rename {assets => sprites}/ui/iccoalhi.png (100%)
rename {assets => sprites}/ui/iccoalhi.png.import (69%)
rename {assets => sprites}/ui/iccom.png (100%)
rename {assets => sprites}/ui/iccom.png.import (69%)
rename {assets => sprites}/ui/iccomhi.png (100%)
rename {assets => sprites}/ui/iccomhi.png.import (69%)
rename {assets => sprites}/ui/icdozr.png (100%)
rename {assets => sprites}/ui/icdozr.png.import (69%)
rename {assets => sprites}/ui/icdozrhi.png (100%)
rename {assets => sprites}/ui/icdozrhi.png.import (69%)
rename {assets => sprites}/ui/icfire.png (100%)
rename {assets => sprites}/ui/icfire.png.import (69%)
rename {assets => sprites}/ui/icfirehi.png (100%)
rename {assets => sprites}/ui/icfirehi.png.import (69%)
rename {assets => sprites}/ui/icind.png (100%)
rename {assets => sprites}/ui/icind.png.import (69%)
rename {assets => sprites}/ui/icindhi.png (100%)
rename {assets => sprites}/ui/icindhi.png.import (69%)
rename {assets => sprites}/ui/icnuc.png (100%)
rename {assets => sprites}/ui/icnuc.png.import (69%)
rename {assets => sprites}/ui/icnuchi.png (100%)
rename {assets => sprites}/ui/icnuchi.png.import (69%)
rename {assets => sprites}/ui/icpark.png (100%)
rename {assets => sprites}/ui/icpark.png.import (69%)
rename {assets => sprites}/ui/icparkhi.png (100%)
rename {assets => sprites}/ui/icparkhi.png.import (69%)
rename {assets => sprites}/ui/icpol.png (100%)
rename {assets => sprites}/ui/icpol.png.import (69%)
rename {assets => sprites}/ui/icpolhi.png (100%)
rename {assets => sprites}/ui/icpolhi.png.import (69%)
rename {assets => sprites}/ui/icqry.png (100%)
rename {assets => sprites}/ui/icqry.png.import (69%)
rename {assets => sprites}/ui/icqryhi.png (100%)
rename {assets => sprites}/ui/icqryhi.png.import (69%)
rename {assets => sprites}/ui/icrail.png (100%)
rename {assets => sprites}/ui/icrail.png.import (69%)
rename {assets => sprites}/ui/icrailhi.png (100%)
rename assets/avatars/kit.png.import => sprites/ui/icrailhi.png.import (69%)
rename {assets => sprites}/ui/icres.png (100%)
rename {assets => sprites}/ui/icres.png.import (69%)
rename {assets => sprites}/ui/icreshi.png (100%)
rename {assets => sprites}/ui/icreshi.png.import (69%)
rename {assets => sprites}/ui/icroad.png (100%)
rename {assets => sprites}/ui/icroad.png.import (69%)
rename {assets => sprites}/ui/icroadhi.png (100%)
rename {assets => sprites}/ui/icroadhi.png.import (69%)
rename {assets => sprites}/ui/icseap.png (100%)
rename {assets => sprites}/ui/icseap.png.import (69%)
rename {assets => sprites}/ui/icseaphi.png (100%)
rename {assets => sprites}/ui/icseaphi.png.import (69%)
rename {assets => sprites}/ui/icstad.png (100%)
rename {assets => sprites}/ui/icstad.png.import (69%)
rename {assets => sprites}/ui/icstadhi.png (100%)
rename {assets => sprites}/ui/icstadhi.png.import (69%)
rename {assets => sprites}/ui/icwire.png (100%)
rename {assets => sprites}/ui/icwire.png.import (69%)
rename {assets => sprites}/ui/icwirehi.png (100%)
rename {assets => sprites}/ui/icwirehi.png.import (69%)
rename {assets => sprites}/ui/pause.svg (100%)
mode change 100644 => 100755
rename {assets => sprites}/ui/pause.svg.import (73%)
rename {assets => sprites}/vignette.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/vignette.png.import (69%)
rename {assets => sprites}/water.tres (90%)
mode change 100644 => 100755
rename {assets => sprites}/wires.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/wires.png.import (70%)
rename {assets => sprites}/wires_3x3.png (100%)
mode change 100644 => 100755
rename {assets => sprites}/wires_3x3.png.import (69%)
create mode 100644 structures/building-garage.tres
create mode 100644 structures/building-small-a.tres
create mode 100644 structures/building-small-b.tres
create mode 100644 structures/building-small-c.tres
create mode 100644 structures/building-small-d.tres
create mode 100644 structures/grass-trees-tall.tres
create mode 100644 structures/grass-trees.tres
create mode 100644 structures/grass.tres
create mode 100644 structures/pavement-fountain.tres
create mode 100644 structures/pavement.tres
create mode 100644 structures/road-corner.tres
create mode 100644 structures/road-intersection.tres
create mode 100644 structures/road-split.tres
create mode 100644 structures/road-straight-lightposts.tres
create mode 100644 structures/road-straight.tres
rename {addons/simplelicense/screenshots => vector}/.gdignore (100%)
create mode 100644 vector/sprites.fla
diff --git a/.gitignore b/.gitignore
index c6b96f4..025ba01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
-# Created by https://www.toptal.com/developers/gitignore/api/windows,web,visualstudiocode,monodevelop,macos,linux,godot,executable,dotnetcore,backup
-# Edit at https://www.toptal.com/developers/gitignore?templates=windows,web,visualstudiocode,monodevelop,macos,linux,godot,executable,dotnetcore,backup
+# Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,rider,macos,linux,godot,executable,backup,visualstudio
+# Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,rider,macos,linux,godot,executable,backup,visualstudio
### Backup ###
*.bak
@@ -9,15 +9,6 @@
*.orig
*.tmp
-### DotnetCore ###
-# .NET Core build folders
-bin/
-obj/
-
-# Common node modules locations
-/node_modules
-/wwwroot/node_modules
-
### Executable ###
*.app
*.bat
@@ -95,15 +86,84 @@ Temporary Items
# iCloud generated files
*.icloud
-### MonoDevelop ###
-#User Specific
-*.userprefs
-*.usertasks
+### Rider ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-#Mono Project Files
-*.pidb
-*.resources
-test-results/
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# AWS User-specific
+.idea/**/aws.xml
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# SonarLint plugin
+.idea/sonarlint/
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
### VisualStudioCode ###
.vscode/*
@@ -124,21 +184,6 @@ test-results/
.history
.ionide
-### Web ###
-*.asp
-*.cer
-*.csr
-*.css
-*.htm
-*.html
-*.js
-*.jsp
-*.php
-*.rss
-*.wasm
-*.wat
-*.xhtml
-
### Windows ###
# Windows thumbnail cache files
Thumbs.db
@@ -165,7 +210,395 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
-# End of https://www.toptal.com/developers/gitignore/api/windows,web,visualstudiocode,monodevelop,macos,linux,godot,executable,dotnetcore,backup
+### VisualStudio ###
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.tlog
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio 6 auto-generated project file (contains which files were open etc.)
+*.vbp
+
+# Visual Studio 6 workspace and project file (working project files containing files to include in project)
+*.dsw
+*.dsp
+
+# Visual Studio 6 technical files
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# Visual Studio History (VSHistory) files
+.vshistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
+
+# VS Code files for those working on multiple tools
+*.code-workspace
+
+# Local History for Visual Studio Code
+
+# Windows Installer files from build outputs
+
+# JetBrains Rider
+*.sln.iml
+
+### VisualStudio Patch ###
+# Additional files built by Visual Studio
+
+# End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,rider,macos,linux,godot,executable,backup,visualstudio
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
diff --git a/README.md b/README.md
index c94c874..29948b2 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
-Based on Godot, CityLimits is an open source reimagining of SimCity Classic based on Godot. In the long run, I plan on adding on gameplay mechanics used in later iterations. Like it's cousin, everything learned in the making of CityLimits will go towards the building and customization that I've been itching to create.
+CityLimits is an open source reimagining of SimCity Classic based on Godot. In the long run, I plan on adding on gameplay mechanics used in later iterations. Like it's cousin, everything learned in the making of CityLimits will go towards the building and customization that I've been itching to create.
## Getting Started
@@ -15,6 +15,20 @@ Based on Godot, CityLimits is an open source reimagining of SimCity Classic base
- Godot Engine 4.x
+### Controls
+
+| Key | Command |
+| --- | --- |
+| W A S D | Move camera |
+| F | Camera to center |
+| Middle mouse button | Hold to rotate camera |
+| Left mouse button | Place building |
+| DEL | Remove building |
+| Right mouse button | Rotate building |
+| Q E | Toggle between buildings |
+| F1 | Save |
+| F2 | Load |
+
## Authors
- **Tony Bark** - _Initial work_ - [tonytins](https://github.com/tonytins)
diff --git a/addons/SpritesheetGenerator/Checker.png b/addons/SpritesheetGenerator/Checker.png
deleted file mode 100644
index f147f725c689ade6c43239efce58247395ae9c70..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 913
zcmV;C18)3@P)
zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vtlG`8*hX3mnJp%dw#Bnf~nckqs?~6CidUw-K
zyV#5)MiJtL2a(YJ>*t^!c-Y0sV)j&03V5tok&2Fo_h*0D62h2$!^;mJKckpFd~x;|
z?Ui3(6;|Jz&-rvF(#wGKwEW7?@snSl)5r%!ekKyMi@*4DigziGcZ}`>Yo-}()e`n6
zJr;E?<>(=B!^Y?_ETLt*5&e9$g65%yMr@&n7B;lTg@rW?Htt+`@P63F4H8Xu$*>|#
z^zgZ6Dbh43tC5--56N1ztE*^}T@_w=YT;wva!l9QF>z-^3L_a~#L?*NthSel#%Obk
z7^^?`3c5rl2A;d9^Ak}3!s9$g@z~(AeSQEINeoeQn;i?RVS7ulMSee9N(X2~V1%`|
z!MQ&YV2dz!gcw#32#Gav;*do$GxpKJr$V_XnQTD7F-nI@G1UY(E^}^-$$Z30ls7j@
z2q2;+%|KJMf|XgcM3&8QhHBJkF~$^g^jKm|nk>bXQcklLYu0Qz=9F{xTyk}F^XSR5
zyBDuiq$p}NmQ-@_QcA6uv?6oG=;{@YO*Y+Zi(A_A=3Cin!|`d>VoNPIZ>3f0(zRQU
zJ@wqZmtJ??ag=u391OlHB^OeQ&+%t8@VMHHxv6Hezz3kSuGU$jtu+{DfAnIU2~BgbyyPs000SaNLh0L01FcU
z01FcV0GgZ_00007bV*G`2j>F_4=M`5W3jFP001RPL_t&-(_?gZcmL0T1iZYwkhu&@
n33RuwX+_r5Sz1;u+Ai4#_yJJPV00000NkvXXu0mjf7tO0-
diff --git a/addons/SpritesheetGenerator/Checker.png.import b/addons/SpritesheetGenerator/Checker.png.import
deleted file mode 100644
index 7bcd8ec..0000000
--- a/addons/SpritesheetGenerator/Checker.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bnkl8rujlgv0h"
-path="res://.godot/imported/Checker.png-95b82ca4c05ab143e1e16c56d598421b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/SpritesheetGenerator/Checker.png"
-dest_files=["res://.godot/imported/Checker.png-95b82ca4c05ab143e1e16c56d598421b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/addons/SpritesheetGenerator/SpriteSheetGenerator.gd b/addons/SpritesheetGenerator/SpriteSheetGenerator.gd
deleted file mode 100644
index cbb9bbe..0000000
--- a/addons/SpritesheetGenerator/SpriteSheetGenerator.gd
+++ /dev/null
@@ -1,13 +0,0 @@
-@tool
-extends EditorPlugin
-
-func _enter_tree() -> void:
- add_tool_menu_item("Open Spritesheet Generator", run_generator)
- get_editor_interface().get_command_palette().add_command("Open Spritesheet Generator", "addons/open_spritesheet_generator", run_generator)
-
-func _exit_tree() -> void:
- remove_tool_menu_item("Open Spritesheet Generator")
- get_editor_interface().get_command_palette().remove_command("addons/open_spritesheet_generator")
-
-func run_generator():
- get_editor_interface().play_custom_scene("res://addons/SpritesheetGenerator/SpritesheetGenerator.tscn")
diff --git a/addons/SpritesheetGenerator/SpritesheetFrame.tscn b/addons/SpritesheetGenerator/SpritesheetFrame.tscn
deleted file mode 100644
index 790cf62..0000000
--- a/addons/SpritesheetGenerator/SpritesheetFrame.tscn
+++ /dev/null
@@ -1,77 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://cd5wndu01c1sn"]
-
-[sub_resource type="StyleBoxFlat" id="2"]
-resource_local_to_scene = true
-bg_color = Color(0, 0.501961, 0.501961, 1)
-
-[sub_resource type="GDScript" id="3"]
-resource_name = "Prefab"
-script/source = "extends PanelContainer
-
-var odd: Vector2
-
-func set_frame_margin(margin: Vector2):
- $MarginContainer.add_theme_constant_override(&\"margin_left\", margin.x)
- $MarginContainer.add_theme_constant_override(&\"margin_top\", margin.y)
-
- margin += odd
-
- $MarginContainer.add_theme_constant_override(&\"margin_right\", margin.x)
- $MarginContainer.add_theme_constant_override(&\"margin_bottom\", margin.y)
-
-func set_texture(texture: Texture2D):
- %TextureRect.texture = texture
- odd = Vector2(int(get_texture_size().x) % 2, int(get_texture_size().y) % 2)
-
-func get_texture_size() -> Vector2:
- return %TextureRect.texture.get_size()
-
-func get_position2() -> Vector2:
- return position + %TextureRect.position
-
-func get_texture_data() -> Image:
- return %TextureRect.texture.get_image()
-
-func set_display_background(display: bool):
- get_theme_stylebox(&\"panel\").draw_center = display
-
-func set_background_color(color: Color):
- get_theme_stylebox(&\"panel\").bg_color = color
-
-func _get_drag_data(p: Vector2):
- var preview = TextureRect.new()
- preview.texture = %TextureRect.texture
- preview.ignore_texture_size = true
- preview.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
- preview.size = Vector2(64, 64)
- set_drag_preview(preview)
- return {type = \"SpritesheetFrame\", node = self}
-
-func _can_drop_data(p: Vector2, data) -> bool:
- return data is Dictionary and data.get(\"type\", \"\") == \"SpritesheetFrame\"
-
-func _drop_data(p: Vector2, data) -> void:
- var index = get_index()
- get_parent().move_child(self, data.node.get_index())
- get_parent().move_child(data.node, index)
- get_tree().current_scene.refresh_grid()
-
-func _gui_input(event: InputEvent) -> void:
- if event is InputEventMouseButton:
- if event.pressed and event.button_index == MOUSE_BUTTON_RIGHT:
- get_tree().current_scene.remove_frame.call_deferred(self)
-"
-
-[node name="FramePrefab" type="PanelContainer" groups=["frame"]]
-theme_override_styles/panel = SubResource("2")
-script = SubResource("3")
-
-[node name="MarginContainer" type="MarginContainer" parent="."]
-layout_mode = 2
-mouse_filter = 2
-
-[node name="TextureRect" type="TextureRect" parent="MarginContainer"]
-unique_name_in_owner = true
-texture_filter = 1
-layout_mode = 2
-stretch_mode = 4
diff --git a/addons/SpritesheetGenerator/SpritesheetGenerator.tscn b/addons/SpritesheetGenerator/SpritesheetGenerator.tscn
deleted file mode 100644
index c064e03..0000000
--- a/addons/SpritesheetGenerator/SpritesheetGenerator.tscn
+++ /dev/null
@@ -1,714 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://bf3b0i8scthbm"]
-
-[ext_resource type="Texture2D" uid="uid://bnkl8rujlgv0h" path="res://addons/SpritesheetGenerator/Checker.png" id="1_hs1uu"]
-
-[sub_resource type="GDScript" id="1"]
-resource_name = "Generator"
-script/source = "extends Control
-
-const SUPPORTED_FORMATS: PackedStringArray = [\"bmp\", \"dds\", \"exr\", \"hdr\", \"jpg\", \"jpeg\", \"png\", \"tga\", \"svg\", \"svgz\", \"webp\"]
-
-@onready var grid := %GridContainer
-
-var file_list: Array
-var image_list: Array
-var texture_list: Array
-
-var images_to_process: Array
-var images_to_texturize: Array
-var first_time := true
-var image_count: int
-var output_path: String
-
-var auto := true
-var margin := Vector2.ONE
-
-var pan_origin: Vector2
-var pan_start: Vector2
-
-signal images_processed
-
-func _enter_tree() -> void:
- $SplitDialog.hide()
- $StashDialog.hide()
-
-func _ready():
- $Status.text = $Status.text % \", \".join(SUPPORTED_FORMATS)
-
- get_viewport().files_dropped.connect(load_files)
- grid.minimum_size_changed.connect(refresh_background)
- set_process(false)
-
-func refresh_background():
- %Background.custom_minimum_size = grid.get_minimum_size()
-
-func load_files(files: PackedStringArray):
- file_list.clear()
- image_list.clear()
-
- %CustomName.text = \"\"
- %Reload.disabled = false
- %SavePNG.disabled = false
-
- if files.size() == 1 and not FileAccess.file_exists(files[0]):
- var dir := DirAccess.open(files[0])
- if not dir:
- show_error(\"Can't open directory.\")
- return
-
- for file in dir.get_files():
- if file.get_extension() in SUPPORTED_FORMATS:
- file_list.append(str(dir.get_current_dir().path_join(file)))
- else:
- var wrong_count: int
- for file in files:
- if file.get_extension() in SUPPORTED_FORMATS:
- file_list.append(file)
- else:
- wrong_count += 1
-
- if wrong_count > 0:
- show_error(\"Skipped %s file(s) with unsupported extension.\" % wrong_count)
-
- if file_list.is_empty():
- show_error(\"No valid files or directories to process.\")
- return
-
- load_images()
-
-func load_images():
- texture_list.clear()
-
- for image in grid.get_children():
- image.free()
-
- for image in %StashImages.get_children():
- image.free()
- update_stash()
-
- var size_map: Dictionary
-
- if not file_list.is_empty():
- image_list = file_list.map(func(file: String):
- var image := Image.load_from_file(file)
- if image:
- image.set_meta(&\"path\", file)
- return image)
-
- for image in image_list:
- if not image:
- continue
-
- if not image.get_size() in size_map:
- size_map[image.get_size()] = []
- size_map[image.get_size()].append(image)
-
- var output_name: String
- var most_common_size: Vector2i
- var most_common_count: int
-
- for size in size_map:
- if size_map[size].size() > most_common_count:
- most_common_size = size
- most_common_count = size_map[size].size()
-
- for image in size_map[most_common_size]:
- if output_path.is_empty():
- var path: String = image.get_meta(&\"path\", \"\")
- output_path = path.get_base_dir()
- output_name = path.get_base_dir().get_file()
-
- images_to_process.append(image)
- size_map.clear()
-
- if not output_name.is_empty() and %CustomName.text.is_empty():
- %CustomName.text = output_name
- update_save_button()
-
- if images_to_process.size() < file_list.size():
- show_error(\"Rejected %s image(s) due to size mismatch.\" % (file_list.size() - images_to_process.size()))
-
- if images_to_process.size() == 1:
- if file_list.size() > 1:
- images_to_process.clear()
- show_error(\"Only one dropped image was valid.\")
- else:
- %SplitPreview.texture = ImageTexture.create_from_image(images_to_process[0])
- $SplitDialog.reset_size()
- $SplitDialog.popup_centered()
-
- return
-
- $Status.show()
- %CenterContainer.hide()
-
- image_count = images_to_process.size()
- %Columns.max_value = image_count
-
- threshold = %Threshold.value
- min_x = 9999999
- min_y = 9999999
- max_x = -9999999
- max_y = -9999999
-
- set_process(true)
-
- await images_processed
-
- for texture in texture_list:
- add_frame(texture)
-
- toggle_auto(auto)
- refresh_margin()
-
- $Status.hide()
- %CenterContainer.show()
-
-var threshold: float
-var min_x: int
-var min_y: int
-var max_x: int
-var max_y: int
-
-func _process(delta: float) -> void:
- if not images_to_process.is_empty():
- var image: Image = images_to_process.pop_front()
- $Status.text = str(\"Preprocessing image \", image_count - images_to_process.size(), \"/\", image_count)
-
- for x in image.get_width():
- for y in image.get_height():
- if image.get_pixel(x, y).a >= threshold:
- min_x = mini(min_x, x)
- min_y = mini(min_y, y)
- max_x = maxi(max_x, x)
- max_y = maxi(max_y, y)
-
- images_to_texturize.append(image)
- elif not images_to_texturize.is_empty():
- var rect := Rect2i(min_x, min_y, max_x - min_x + 1, max_y - min_y + 1)
- var image: Image = images_to_texturize.pop_front()
- $Status.text = str(\"Creating texture \", image_count - images_to_texturize.size(), \"/\", image_count)
-
- var true_image := Image.create(rect.size.x, rect.size.y, false, image.get_format())
- true_image.blit_rect(image, rect, Vector2())
-
- var texture := ImageTexture.create_from_image(true_image)
- texture_list.append(texture)
-
- if images_to_texturize.is_empty():
- set_process(false)
- images_processed.emit()
- if first_time:
- recenter()
- first_time = false
-
-func toggle_grid(show: bool) -> void:
- get_tree().call_group(&\"frame\", &\"set_display_background\", show)
-
-func toggle_auto(button_pressed: bool) -> void:
- %Columns.editable = not button_pressed
- auto = button_pressed
-
- if button_pressed:
- var best: int
- var best_score = -9999999
-
- for i in range(1, image_count + 1):
- var cols = i
- var rows = ceili(image_count / float(i))
-
- var score = image_count - cols * rows - maxi(cols, rows) - rows
- if score > best_score:
- best = i
- best_score = score
-
- grid.columns = best
- else:
- grid.columns = %Columns.value
- refresh_grid()
-
-func hmargin_changed(value: float) -> void:
- margin.x = value
- refresh_margin()
-
-func vmargin_changed(value: float) -> void:
- margin.y = value
- refresh_margin()
-
-func refresh_margin():
- get_tree().call_group(&\"frame\", &\"set_frame_margin\", margin)
-
-func columns_changed(value: float) -> void:
- grid.columns = value
- refresh_grid()
-
-func refresh_grid():
- var coord: Vector2
- var dark = false
-
- for rect in grid.get_children():
- rect.set_background_color(Color(0, 0, 0, 0.2 if dark else 0.1))
- dark = not dark
- coord.x += 1
-
- if coord.x == grid.columns:
- coord.x = 0
- coord.y += 1
- dark = int(coord.y) % 2 == 1
-
-func save_png() -> void:
- var image_size: Vector2 = grid.get_child(0).get_minimum_size()
-
- var image := Image.create(image_size.x * grid.columns, image_size.y * (ceil(grid.get_child_count() / float(grid.columns))), false, Image.FORMAT_RGBA8)
-
- for rect in grid.get_children():
- image.blit_rect(rect.get_texture_data(), Rect2(Vector2(), image_size), rect.get_position2())
-
- image.save_png(output_path.path_join(%CustomName.text) + \".png\")
-
-func show_error(text: String):
- if not %Error.visible:
- %Error.show()
- else:
- %Error.text += \"\\n\"
- %Error.text += text
- %Timer.start()
-
-func error_hidden() -> void:
- %Error.text = \"\"
-
-func _input(event: InputEvent) -> void:
- if event is InputEventMouseButton:
- var cc: Control = %CenterContainer
-
- if event.button_index == MOUSE_BUTTON_MIDDLE:
- if event.pressed:
- pan_origin = get_local_mouse_position()
- pan_start = cc.position
- else:
- pan_origin = Vector2()
-
- if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
- var lm = cc.get_local_mouse_position()
- cc.scale -= Vector2.ONE * 0.05
- if cc.scale.x <= 0:
- cc.scale = Vector2.ONE * 0.05
-
- cc.position -= (lm - cc.get_local_mouse_position()) * cc.scale
- elif event.button_index == MOUSE_BUTTON_WHEEL_UP:
- var lm = cc.get_local_mouse_position()
- cc.scale += Vector2.ONE * 0.05
- cc.position -= (lm - cc.get_local_mouse_position()) * cc.scale
-
- if event is InputEventMouseMotion:
- if pan_origin != Vector2():
- %CenterContainer.position = pan_start + (get_local_mouse_position() - pan_origin)
-
-func recenter() -> void:
- %CenterContainer.position = get_viewport().size / 2 - Vector2i(%CenterContainer.size) / 2
- %CenterContainer.scale = Vector2.ONE
-
-func update_split_preview():
- %SplitPreview.queue_redraw()
-
-func draw_split_preview() -> void:
- var preview: TextureRect = %SplitPreview
- var frame_count := Vector2(%SplitX.value, %SplitY.value)
- var frame_size := preview.size / frame_count
-
- for x in range(1, frame_count.x):
- for y in int(frame_count.y):
- preview.draw_line(frame_size * Vector2(x, y), frame_size * Vector2(x, y + 1), Color.WHITE)
- preview.draw_line(frame_size * Vector2(x, y) + Vector2.RIGHT, frame_size * Vector2(x, y + 1) + Vector2.RIGHT, Color.BLACK)
-
- for y in range(1, frame_count.y):
- for x in int(frame_count.x):
- preview.draw_line(frame_size * Vector2(x, y), frame_size * Vector2(x + 1, y), Color.WHITE)
- preview.draw_line(frame_size * Vector2(x, y) + Vector2.DOWN, frame_size * Vector2(x + 1, y) + Vector2.DOWN, Color.BLACK)
-
-func split_spritesheet() -> void:
- file_list.clear()
- image_list.clear()
-
- var image: Image = images_to_process[0]
- var sub_image_size := image.get_size() / Vector2i(%SplitX.value, %SplitY.value)
-
- for y in %SplitY.value:
- for x in %SplitX.value:
- image_list.append(image.get_region(Rect2i(Vector2i(x, y) * sub_image_size, sub_image_size)))
-
- images_to_process.clear()
- load_images()
-
-func remove_frame(frame):
- var image: Image = frame.get_texture_data()
- var texture := ImageTexture.create_from_image(image)
-
- var button := TextureButton.new()
- button.texture_normal = texture
- button.custom_minimum_size = Vector2(128, 128)
- button.stretch_mode = TextureButton.STRETCH_KEEP_ASPECT_CENTERED
- button.ignore_texture_size = true
- button.pressed.connect(re_add_image.bind(button), CONNECT_DEFERRED)
- %StashImages.add_child(button)
-
- var ref := ReferenceRect.new()
- button.add_child(ref)
- ref.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
- ref.mouse_filter = Control.MOUSE_FILTER_IGNORE
- ref.editor_only = false
-
- frame.free()
- refresh_grid()
- update_stash()
-
-func update_stash():
- %Stash.disabled = %StashImages.get_child_count() == 0
-
-func re_add_image(tb: TextureButton):
- add_frame(tb.texture_normal)
- tb.free()
- refresh_grid()
- update_stash()
-
- if %Stash.disabled:
- $StashDialog.hide()
-
-func add_frame(texture: Texture2D):
- var rect := preload(\"res://addons/SpritesheetGenerator/SpritesheetFrame.tscn\").instantiate()
- rect.set_texture(texture)
- rect.set_display_background(%DisplayGrid.button_pressed)
- rect.set_frame_margin(margin)
- grid.add_child(rect)
-
-func update_save_button() -> void:
- %SavePNG.disabled = %CustomName.text.is_empty()
-"
-
-[sub_resource type="StyleBoxFlat" id="5"]
-content_margin_left = 20.0
-content_margin_top = 20.0
-content_margin_right = 20.0
-content_margin_bottom = 20.0
-bg_color = Color(0, 0, 0, 0.25098)
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kjgn5"]
-texture = ExtResource("1_hs1uu")
-axis_stretch_horizontal = 1
-axis_stretch_vertical = 1
-
-[node name="Main" type="HBoxContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-script = SubResource("1")
-
-[node name="MarginContainer" type="PanelContainer" parent="."]
-layout_mode = 2
-theme_override_styles/panel = SubResource("5")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
-layout_mode = 2
-theme_override_constants/separation = 10
-
-[node name="Label5" type="Label" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Alpha Threshold"
-horizontal_alignment = 1
-
-[node name="Threshold" type="SpinBox" parent="MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-max_value = 1.0
-step = 0.005
-value = 0.9
-
-[node name="Reload" type="Button" parent="MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-text = "Reload"
-
-[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Columns"
-horizontal_alignment = 1
-
-[node name="Columns" type="SpinBox" parent="MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-min_value = 1.0
-value = 1.0
-editable = false
-
-[node name="Grid" type="CheckButton" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-button_pressed = true
-text = "Auto"
-
-[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Horizontal Margin"
-horizontal_alignment = 1
-
-[node name="MarginH" type="SpinBox" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-value = 1.0
-suffix = "px"
-
-[node name="Label4" type="Label" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Vertical Margin"
-horizontal_alignment = 1
-
-[node name="MarginV" type="SpinBox" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-max_value = 128.0
-value = 1.0
-suffix = "px"
-
-[node name="Stash" type="Button" parent="MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-text = "Image Stash"
-
-[node name="HSeparator2" type="HSeparator" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="Button" type="Button" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Recenter View
-"
-
-[node name="DisplayGrid" type="CheckBox" parent="MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-button_pressed = true
-text = "Show Grid"
-
-[node name="HSeparator3" type="HSeparator" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="CustomName" type="LineEdit" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-placeholder_text = "Image Name"
-
-[node name="SavePNG" type="Button" parent="MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-text = "Save PNG"
-
-[node name="Status" type="Label" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-text = "Drop folder or image files here to start.
-
-Images should be of the same size. If their sizes don't match, the generator will try to use the dominating size.
-
-The images will be automatically cropped based on the Alpha Threshold value. Greater value means more exact crop.
-
-Supported formats: %s
-
-If you drop a single image, the generator will instead edit it as spritesheet."
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="View" type="CanvasLayer" parent="."]
-layer = -1
-
-[node name="CenterContainer" type="CenterContainer" parent="View"]
-unique_name_in_owner = true
-visible = false
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 3
-
-[node name="Background" type="ColorRect" parent="View/CenterContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-mouse_filter = 1
-color = Color(0, 0.501961, 0.501961, 1)
-
-[node name="GridContainer" type="GridContainer" parent="View/CenterContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-theme_override_constants/h_separation = 0
-theme_override_constants/v_separation = 0
-columns = 3
-
-[node name="VBoxContainer" type="GridContainer" parent="View"]
-anchors_preset = 3
-anchor_left = 1.0
-anchor_top = 1.0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = -40.0
-offset_top = -40.0
-grow_horizontal = 0
-grow_vertical = 0
-mouse_filter = 2
-columns = 3
-
-[node name="Label" type="Label" parent="View/VBoxContainer"]
-layout_mode = 2
-text = "LMB"
-horizontal_alignment = 1
-
-[node name="VSeparator" type="VSeparator" parent="View/VBoxContainer"]
-layout_mode = 2
-
-[node name="Label2" type="Label" parent="View/VBoxContainer"]
-layout_mode = 2
-text = "rearrange images"
-
-[node name="Label3" type="Label" parent="View/VBoxContainer"]
-layout_mode = 2
-text = "RMB"
-horizontal_alignment = 1
-
-[node name="VSeparator2" type="VSeparator" parent="View/VBoxContainer"]
-layout_mode = 2
-
-[node name="Label4" type="Label" parent="View/VBoxContainer"]
-layout_mode = 2
-text = "delete images"
-
-[node name="Label5" type="Label" parent="View/VBoxContainer"]
-layout_mode = 2
-text = "MMB"
-horizontal_alignment = 1
-
-[node name="VSeparator3" type="VSeparator" parent="View/VBoxContainer"]
-layout_mode = 2
-
-[node name="Label6" type="Label" parent="View/VBoxContainer"]
-layout_mode = 2
-text = "pan view"
-
-[node name="CanvasLayer" type="CanvasLayer" parent="."]
-
-[node name="Error" type="Label" parent="CanvasLayer"]
-unique_name_in_owner = true
-modulate = Color(1, 0, 0, 1)
-anchors_preset = 12
-anchor_top = 1.0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_top = -14.0
-grow_horizontal = 2
-grow_vertical = 0
-size_flags_vertical = 0
-horizontal_alignment = 1
-
-[node name="Timer" type="Timer" parent="CanvasLayer"]
-unique_name_in_owner = true
-wait_time = 5.0
-one_shot = true
-
-[node name="SplitDialog" type="ConfirmationDialog" parent="."]
-title = "Edit Spritesheet"
-position = Vector2i(-500, 0)
-size = Vector2i(272, 343)
-visible = true
-
-[node name="VBoxContainer" type="VBoxContainer" parent="SplitDialog"]
-offset_left = 8.0
-offset_top = 8.0
-offset_right = 264.0
-offset_bottom = 294.0
-
-[node name="Label" type="Label" parent="SplitDialog/VBoxContainer"]
-layout_mode = 2
-text = "Split Frames"
-horizontal_alignment = 1
-
-[node name="HBoxContainer" type="HBoxContainer" parent="SplitDialog/VBoxContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="SplitX" type="SpinBox" parent="SplitDialog/VBoxContainer/HBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-min_value = 1.0
-max_value = 1000.0
-value = 1.0
-select_all_on_focus = true
-
-[node name="Label" type="Label" parent="SplitDialog/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-text = "x"
-
-[node name="SplitY" type="SpinBox" parent="SplitDialog/VBoxContainer/HBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-min_value = 1.0
-max_value = 1000.0
-value = 1.0
-select_all_on_focus = true
-
-[node name="CenterContainer" type="CenterContainer" parent="SplitDialog/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="PanelContainer" type="PanelContainer" parent="SplitDialog/VBoxContainer/CenterContainer"]
-layout_mode = 2
-theme_override_styles/panel = SubResource("StyleBoxTexture_kjgn5")
-
-[node name="SplitPreview" type="TextureRect" parent="SplitDialog/VBoxContainer/CenterContainer/PanelContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-
-[node name="StashDialog" type="AcceptDialog" parent="."]
-title = "Image Stash"
-position = Vector2i(-500, 500)
-size = Vector2i(309, 100)
-visible = true
-
-[node name="VBoxContainer" type="VBoxContainer" parent="StashDialog"]
-offset_left = 8.0
-offset_top = 8.0
-offset_right = 301.0
-offset_bottom = 51.0
-
-[node name="Label" type="Label" parent="StashDialog/VBoxContainer"]
-layout_mode = 2
-text = "Click frame to re-add it to spritesheet."
-horizontal_alignment = 1
-
-[node name="StashImages" type="HFlowContainer" parent="StashDialog/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-
-[connection signal="pressed" from="MarginContainer/VBoxContainer/Reload" to="." method="load_images"]
-[connection signal="value_changed" from="MarginContainer/VBoxContainer/Columns" to="." method="columns_changed"]
-[connection signal="toggled" from="MarginContainer/VBoxContainer/Grid" to="." method="toggle_auto"]
-[connection signal="value_changed" from="MarginContainer/VBoxContainer/MarginH" to="." method="hmargin_changed"]
-[connection signal="value_changed" from="MarginContainer/VBoxContainer/MarginV" to="." method="vmargin_changed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/Stash" to="StashDialog" method="popup_centered_ratio" binds= [0.5]]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/Button" to="." method="recenter"]
-[connection signal="toggled" from="MarginContainer/VBoxContainer/DisplayGrid" to="." method="toggle_grid"]
-[connection signal="text_changed" from="MarginContainer/VBoxContainer/HBoxContainer/CustomName" to="." method="update_save_button" unbinds=1]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/SavePNG" to="." method="save_png"]
-[connection signal="hidden" from="CanvasLayer/Error" to="." method="error_hidden"]
-[connection signal="timeout" from="CanvasLayer/Timer" to="CanvasLayer/Error" method="hide"]
-[connection signal="confirmed" from="SplitDialog" to="." method="split_spritesheet"]
-[connection signal="value_changed" from="SplitDialog/VBoxContainer/HBoxContainer/SplitX" to="." method="update_split_preview" unbinds=1]
-[connection signal="value_changed" from="SplitDialog/VBoxContainer/HBoxContainer/SplitY" to="." method="update_split_preview" unbinds=1]
-[connection signal="draw" from="SplitDialog/VBoxContainer/CenterContainer/PanelContainer/SplitPreview" to="." method="draw_split_preview"]
diff --git a/addons/SpritesheetGenerator/plugin.cfg b/addons/SpritesheetGenerator/plugin.cfg
deleted file mode 100644
index 08a28bf..0000000
--- a/addons/SpritesheetGenerator/plugin.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-[plugin]
-
-name="Spritesheet Generator"
-description="Generates cropped spritesheets from multiple images."
-author="KoBeWi"
-version="1.2"
-script="SpriteSheetGenerator.gd"
diff --git a/addons/fontawesome/All.gd b/addons/fontawesome/All.gd
deleted file mode 100644
index 4ef5a8c..0000000
--- a/addons/fontawesome/All.gd
+++ /dev/null
@@ -1,2029 +0,0 @@
-## AUTOGENERATED BY dump_eet.html, DO NOT MODIFY!!!
-const all: Dictionary = {
- "regular": {
- "trash-can": "\uf2ed",
- "message": "\uf27a",
- "file-lines": "\uf15c",
- "calendar-days": "\uf073",
- "hand-point-right": "\uf0a4",
- "face-smile-beam": "\uf5b8",
- "face-grin-stars": "\uf587",
- "address-book": "\uf2b9",
- "comments": "\uf086",
- "paste": "\uf0ea",
- "face-grin-tongue-squint": "\uf58a",
- "face-flushed": "\uf579",
- "square-caret-right": "\uf152",
- "square-minus": "\uf146",
- "compass": "\uf14e",
- "square-caret-down": "\uf150",
- "face-kiss-beam": "\uf597",
- "lightbulb": "\uf0eb",
- "flag": "\uf024",
- "square-check": "\uf14a",
- "circle-dot": "\uf192",
- "face-dizzy": "\uf567",
- "futbol": "\uf1e3",
- "pen-to-square": "\uf044",
- "hourglass-half": "\uf252",
- "eye-slash": "\uf070",
- "hand": "\uf256",
- "hand-spock": "\uf259",
- "face-kiss": "\uf596",
- "face-grin-tongue": "\uf589",
- "chess-bishop": "\uf43a",
- "face-grin-wink": "\uf58c",
- "face-grin-wide": "\uf581",
- "face-frown-open": "\uf57a",
- "hand-point-up": "\uf0a6",
- "bookmark": "\uf02e",
- "hand-point-down": "\uf0a7",
- "folder": "\uf07b",
- "user": "\uf007",
- "square-caret-left": "\uf191",
- "star": "\uf005",
- "chess-knight": "\uf441",
- "face-laugh-squint": "\uf59b",
- "face-laugh": "\uf599",
- "folder-open": "\uf07c",
- "clipboard": "\uf328",
- "chess-queen": "\uf445",
- "hand-back-fist": "\uf255",
- "square-caret-up": "\uf151",
- "chart-bar": "\uf080",
- "window-restore": "\uf2d2",
- "square-plus": "\uf0fe",
- "image": "\uf03e",
- "folder-closed": "\ue185",
- "lemon": "\uf094",
- "handshake": "\uf2b5",
- "gem": "\uf3a5",
- "circle-play": "\uf144",
- "circle-check": "\uf058",
- "circle-stop": "\uf28d",
- "id-badge": "\uf2c1",
- "face-laugh-beam": "\uf59a",
- "registered": "\uf25d",
- "address-card": "\uf2bb",
- "face-tired": "\uf5c8",
- "font-awesome": "\uf2b4",
- "face-smile-wink": "\uf4da",
- "file-word": "\uf1c2",
- "file-powerpoint": "\uf1c4",
- "envelope-open": "\uf2b6",
- "file-zipper": "\uf1c6",
- "square": "\uf0c8",
- "snowflake": "\uf2dc",
- "newspaper": "\uf1ea",
- "face-kiss-wink-heart": "\uf598",
- "star-half-stroke": "\uf5c0",
- "file-excel": "\uf1c3",
- "face-grin-beam": "\uf582",
- "object-ungroup": "\uf248",
- "circle-right": "\uf35a",
- "face-rolling-eyes": "\uf5a5",
- "object-group": "\uf247",
- "heart": "\uf004",
- "face-surprise": "\uf5c2",
- "circle-pause": "\uf28b",
- "circle": "\uf111",
- "circle-up": "\uf35b",
- "file-audio": "\uf1c7",
- "file-image": "\uf1c5",
- "circle-question": "\uf059",
- "face-meh-blank": "\uf5a4",
- "eye": "\uf06e",
- "face-sad-cry": "\uf5b3",
- "file-code": "\uf1c9",
- "window-maximize": "\uf2d0",
- "face-frown": "\uf119",
- "floppy-disk": "\uf0c7",
- "comment-dots": "\uf4ad",
- "face-grin-squint": "\uf585",
- "hand-pointer": "\uf25a",
- "hand-scissors": "\uf257",
- "face-grin-tears": "\uf588",
- "calendar-xmark": "\uf273",
- "file-video": "\uf1c8",
- "file-pdf": "\uf1c1",
- "comment": "\uf075",
- "envelope": "\uf0e0",
- "hourglass": "\uf254",
- "calendar-check": "\uf274",
- "hard-drive": "\uf0a0",
- "face-grin-squint-tears": "\uf586",
- "rectangle-list": "\uf022",
- "calendar-plus": "\uf271",
- "circle-left": "\uf359",
- "money-bill-1": "\uf3d1",
- "clock": "\uf017",
- "keyboard": "\uf11c",
- "closed-captioning": "\uf20a",
- "images": "\uf302",
- "face-grin": "\uf580",
- "face-meh": "\uf11a",
- "id-card": "\uf2c2",
- "sun": "\uf185",
- "face-laugh-wink": "\uf59c",
- "circle-down": "\uf358",
- "thumbs-down": "\uf165",
- "chess-pawn": "\uf443",
- "credit-card": "\uf09d",
- "bell": "\uf0f3",
- "file": "\uf15b",
- "hospital": "\uf0f8",
- "chess-rook": "\uf447",
- "star-half": "\uf089",
- "chess-king": "\uf43f",
- "circle-user": "\uf2bd",
- "copy": "\uf0c5",
- "share-from-square": "\uf14d",
- "copyright": "\uf1f9",
- "map": "\uf279",
- "bell-slash": "\uf1f6",
- "hand-lizard": "\uf258",
- "face-smile": "\uf118",
- "hand-peace": "\uf25b",
- "face-grin-hearts": "\uf584",
- "building": "\uf1ad",
- "face-grin-beam-sweat": "\uf583",
- "moon": "\uf186",
- "calendar": "\uf133",
- "face-grin-tongue-wink": "\uf58b",
- "clone": "\uf24d",
- "face-angry": "\uf556",
- "rectangle-xmark": "\uf410",
- "paper-plane": "\uf1d8",
- "life-ring": "\uf1cd",
- "face-grimace": "\uf57f",
- "calendar-minus": "\uf272",
- "circle-xmark": "\uf057",
- "thumbs-up": "\uf164",
- "window-minimize": "\uf2d1",
- "square-full": "\uf45c",
- "note-sticky": "\uf249",
- "face-sad-tear": "\uf5b4",
- "hand-point-left": "\uf0a5",
- },
- "brands": {
- "monero": "\uf3d0",
- "hooli": "\uf427",
- "yelp": "\uf1e9",
- "cc-visa": "\uf1f0",
- "lastfm": "\uf202",
- "shopware": "\uf5b5",
- "creative-commons-nc": "\uf4e8",
- "aws": "\uf375",
- "redhat": "\uf7bc",
- "yoast": "\uf2b1",
- "cloudflare": "\ue07d",
- "ups": "\uf7e0",
- "wpexplorer": "\uf2de",
- "dyalog": "\uf399",
- "bity": "\uf37a",
- "stackpath": "\uf842",
- "buysellads": "\uf20d",
- "first-order": "\uf2b0",
- "modx": "\uf285",
- "guilded": "\ue07e",
- "vnv": "\uf40b",
- "square-js": "\uf3b9",
- "microsoft": "\uf3ca",
- "qq": "\uf1d6",
- "orcid": "\uf8d2",
- "java": "\uf4e4",
- "invision": "\uf7b0",
- "creative-commons-pd-alt": "\uf4ed",
- "centercode": "\uf380",
- "glide-g": "\uf2a6",
- "drupal": "\uf1a9",
- "hire-a-helper": "\uf3b0",
- "creative-commons-by": "\uf4e7",
- "unity": "\ue049",
- "whmcs": "\uf40d",
- "rocketchat": "\uf3e8",
- "vk": "\uf189",
- "untappd": "\uf405",
- "mailchimp": "\uf59e",
- "css3-alt": "\uf38b",
- "square-reddit": "\uf1a2",
- "vimeo-v": "\uf27d",
- "contao": "\uf26d",
- "square-font-awesome": "\ue5ad",
- "deskpro": "\uf38f",
- "sistrix": "\uf3ee",
- "square-instagram": "\ue055",
- "battle-net": "\uf835",
- "the-red-yeti": "\uf69d",
- "square-hacker-news": "\uf3af",
- "edge": "\uf282",
- "napster": "\uf3d2",
- "square-snapchat": "\uf2ad",
- "google-plus-g": "\uf0d5",
- "artstation": "\uf77a",
- "markdown": "\uf60f",
- "sourcetree": "\uf7d3",
- "google-plus": "\uf2b3",
- "diaspora": "\uf791",
- "foursquare": "\uf180",
- "stack-overflow": "\uf16c",
- "github-alt": "\uf113",
- "phoenix-squadron": "\uf511",
- "pagelines": "\uf18c",
- "algolia": "\uf36c",
- "red-river": "\uf3e3",
- "creative-commons-sa": "\uf4ef",
- "safari": "\uf267",
- "google": "\uf1a0",
- "square-font-awesome-stroke": "\uf35c",
- "atlassian": "\uf77b",
- "linkedin-in": "\uf0e1",
- "digital-ocean": "\uf391",
- "nimblr": "\uf5a8",
- "chromecast": "\uf838",
- "evernote": "\uf839",
- "hacker-news": "\uf1d4",
- "creative-commons-sampling": "\uf4f0",
- "adversal": "\uf36a",
- "creative-commons": "\uf25e",
- "watchman-monitoring": "\ue087",
- "fonticons": "\uf280",
- "weixin": "\uf1d7",
- "shirtsinbulk": "\uf214",
- "codepen": "\uf1cb",
- "git-alt": "\uf841",
- "lyft": "\uf3c3",
- "rev": "\uf5b2",
- "windows": "\uf17a",
- "wizards-of-the-coast": "\uf730",
- "square-viadeo": "\uf2aa",
- "meetup": "\uf2e0",
- "centos": "\uf789",
- "adn": "\uf170",
- "cloudsmith": "\uf384",
- "pied-piper-alt": "\uf1a8",
- "square-dribbble": "\uf397",
- "codiepie": "\uf284",
- "node": "\uf419",
- "mix": "\uf3cb",
- "steam": "\uf1b6",
- "cc-apple-pay": "\uf416",
- "scribd": "\uf28a",
- "openid": "\uf19b",
- "instalod": "\ue081",
- "expeditedssl": "\uf23e",
- "sellcast": "\uf2da",
- "square-twitter": "\uf081",
- "r-project": "\uf4f7",
- "delicious": "\uf1a5",
- "freebsd": "\uf3a4",
- "vuejs": "\uf41f",
- "accusoft": "\uf369",
- "ioxhost": "\uf208",
- "fonticons-fi": "\uf3a2",
- "app-store": "\uf36f",
- "cc-mastercard": "\uf1f1",
- "itunes-note": "\uf3b5",
- "golang": "\ue40f",
- "kickstarter": "\uf3bb",
- "grav": "\uf2d6",
- "weibo": "\uf18a",
- "uncharted": "\ue084",
- "firstdraft": "\uf3a1",
- "square-youtube": "\uf431",
- "wikipedia-w": "\uf266",
- "wpressr": "\uf3e4",
- "angellist": "\uf209",
- "galactic-republic": "\uf50c",
- "nfc-directional": "\ue530",
- "skype": "\uf17e",
- "joget": "\uf3b7",
- "fedora": "\uf798",
- "stripe-s": "\uf42a",
- "meta": "\ue49b",
- "laravel": "\uf3bd",
- "hotjar": "\uf3b1",
- "bluetooth-b": "\uf294",
- "sticker-mule": "\uf3f7",
- "creative-commons-zero": "\uf4f3",
- "hips": "\uf452",
- "behance": "\uf1b4",
- "reddit": "\uf1a1",
- "discord": "\uf392",
- "chrome": "\uf268",
- "app-store-ios": "\uf370",
- "cc-discover": "\uf1f2",
- "wpbeginner": "\uf297",
- "confluence": "\uf78d",
- "mdb": "\uf8ca",
- "dochub": "\uf394",
- "accessible-icon": "\uf368",
- "ebay": "\uf4f4",
- "amazon": "\uf270",
- "unsplash": "\ue07c",
- "yarn": "\uf7e3",
- "square-steam": "\uf1b7",
- "500px": "\uf26e",
- "square-vimeo": "\uf194",
- "asymmetrik": "\uf372",
- "font-awesome": "\uf2b4",
- "gratipay": "\uf184",
- "apple": "\uf179",
- "hive": "\ue07f",
- "gitkraken": "\uf3a6",
- "keybase": "\uf4f5",
- "apple-pay": "\uf415",
- "padlet": "\ue4a0",
- "amazon-pay": "\uf42c",
- "square-github": "\uf092",
- "stumbleupon": "\uf1a4",
- "fedex": "\uf797",
- "phoenix-framework": "\uf3dc",
- "shopify": "\ue057",
- "neos": "\uf612",
- "hackerrank": "\uf5f7",
- "researchgate": "\uf4f8",
- "swift": "\uf8e1",
- "angular": "\uf420",
- "speakap": "\uf3f3",
- "angrycreative": "\uf36e",
- "y-combinator": "\uf23b",
- "empire": "\uf1d1",
- "envira": "\uf299",
- "square-gitlab": "\ue5ae",
- "studiovinari": "\uf3f8",
- "pied-piper": "\uf2ae",
- "wordpress": "\uf19a",
- "product-hunt": "\uf288",
- "firefox": "\uf269",
- "linode": "\uf2b8",
- "goodreads": "\uf3a8",
- "square-odnoklassniki": "\uf264",
- "jsfiddle": "\uf1cc",
- "sith": "\uf512",
- "themeisle": "\uf2b2",
- "page4": "\uf3d7",
- "hashnode": "\ue499",
- "react": "\uf41b",
- "cc-paypal": "\uf1f4",
- "squarespace": "\uf5be",
- "cc-stripe": "\uf1f5",
- "creative-commons-share": "\uf4f2",
- "bitcoin": "\uf379",
- "keycdn": "\uf3ba",
- "opera": "\uf26a",
- "itch-io": "\uf83a",
- "umbraco": "\uf8e8",
- "galactic-senate": "\uf50d",
- "ubuntu": "\uf7df",
- "draft2digital": "\uf396",
- "stripe": "\uf429",
- "houzz": "\uf27c",
- "gg": "\uf260",
- "dhl": "\uf790",
- "square-pinterest": "\uf0d3",
- "xing": "\uf168",
- "blackberry": "\uf37b",
- "creative-commons-pd": "\uf4ec",
- "playstation": "\uf3df",
- "quinscape": "\uf459",
- "less": "\uf41d",
- "blogger-b": "\uf37d",
- "opencart": "\uf23d",
- "vine": "\uf1ca",
- "paypal": "\uf1ed",
- "gitlab": "\uf296",
- "typo3": "\uf42b",
- "reddit-alien": "\uf281",
- "yahoo": "\uf19e",
- "dailymotion": "\ue052",
- "affiliatetheme": "\uf36b",
- "pied-piper-pp": "\uf1a7",
- "bootstrap": "\uf836",
- "odnoklassniki": "\uf263",
- "nfc-symbol": "\ue531",
- "ethereum": "\uf42e",
- "speaker-deck": "\uf83c",
- "creative-commons-nc-eu": "\uf4e9",
- "patreon": "\uf3d9",
- "avianex": "\uf374",
- "ello": "\uf5f1",
- "gofore": "\uf3a7",
- "bimobject": "\uf378",
- "facebook-f": "\uf39e",
- "square-google-plus": "\uf0d4",
- "mandalorian": "\uf50f",
- "first-order-alt": "\uf50a",
- "osi": "\uf41a",
- "google-wallet": "\uf1ee",
- "d-and-d-beyond": "\uf6ca",
- "periscope": "\uf3da",
- "fulcrum": "\uf50b",
- "cloudscale": "\uf383",
- "forumbee": "\uf211",
- "mizuni": "\uf3cc",
- "schlix": "\uf3ea",
- "square-xing": "\uf169",
- "bandcamp": "\uf2d5",
- "wpforms": "\uf298",
- "cloudversify": "\uf385",
- "usps": "\uf7e1",
- "megaport": "\uf5a3",
- "magento": "\uf3c4",
- "spotify": "\uf1bc",
- "optin-monster": "\uf23c",
- "fly": "\uf417",
- "aviato": "\uf421",
- "itunes": "\uf3b4",
- "cuttlefish": "\uf38c",
- "blogger": "\uf37c",
- "flickr": "\uf16e",
- "viber": "\uf409",
- "soundcloud": "\uf1be",
- "digg": "\uf1a6",
- "tencent-weibo": "\uf1d5",
- "symfony": "\uf83d",
- "maxcdn": "\uf136",
- "etsy": "\uf2d7",
- "facebook-messenger": "\uf39f",
- "audible": "\uf373",
- "think-peaks": "\uf731",
- "bilibili": "\ue3d9",
- "erlang": "\uf39d",
- "cotton-bureau": "\uf89e",
- "dashcube": "\uf210",
- "42-group": "\ue080",
- "stack-exchange": "\uf18d",
- "elementor": "\uf430",
- "square-pied-piper": "\ue01e",
- "creative-commons-nd": "\uf4eb",
- "palfed": "\uf3d8",
- "superpowers": "\uf2dd",
- "resolving": "\uf3e7",
- "xbox": "\uf412",
- "searchengin": "\uf3eb",
- "tiktok": "\ue07b",
- "square-facebook": "\uf082",
- "renren": "\uf18b",
- "linux": "\uf17c",
- "glide": "\uf2a5",
- "linkedin": "\uf08c",
- "hubspot": "\uf3b2",
- "deploydog": "\uf38e",
- "twitch": "\uf1e8",
- "ravelry": "\uf2d9",
- "mixer": "\ue056",
- "square-lastfm": "\uf203",
- "vimeo": "\uf40a",
- "mendeley": "\uf7b3",
- "uniregistry": "\uf404",
- "figma": "\uf799",
- "creative-commons-remix": "\uf4ee",
- "cc-amazon-pay": "\uf42d",
- "dropbox": "\uf16b",
- "instagram": "\uf16d",
- "cmplid": "\ue360",
- "facebook": "\uf09a",
- "gripfire": "\uf3ac",
- "jedi-order": "\uf50e",
- "uikit": "\uf403",
- "fort-awesome-alt": "\uf3a3",
- "phabricator": "\uf3db",
- "ussunnah": "\uf407",
- "earlybirds": "\uf39a",
- "trade-federation": "\uf513",
- "autoprefixer": "\uf41c",
- "whatsapp": "\uf232",
- "slideshare": "\uf1e7",
- "google-play": "\uf3ab",
- "viadeo": "\uf2a9",
- "line": "\uf3c0",
- "google-drive": "\uf3aa",
- "servicestack": "\uf3ec",
- "simplybuilt": "\uf215",
- "bitbucket": "\uf171",
- "imdb": "\uf2d8",
- "deezer": "\ue077",
- "raspberry-pi": "\uf7bb",
- "jira": "\uf7b1",
- "docker": "\uf395",
- "screenpal": "\ue570",
- "bluetooth": "\uf293",
- "gitter": "\uf426",
- "d-and-d": "\uf38d",
- "microblog": "\ue01a",
- "cc-diners-club": "\uf24c",
- "gg-circle": "\uf261",
- "pied-piper-hat": "\uf4e5",
- "kickstarter-k": "\uf3bc",
- "yandex": "\uf413",
- "readme": "\uf4d5",
- "html5": "\uf13b",
- "sellsy": "\uf213",
- "sass": "\uf41e",
- "wirsindhandwerk": "\ue2d0",
- "buromobelexperte": "\uf37f",
- "salesforce": "\uf83b",
- "octopus-deploy": "\ue082",
- "medapps": "\uf3c6",
- "ns8": "\uf3d5",
- "pinterest-p": "\uf231",
- "apper": "\uf371",
- "fort-awesome": "\uf286",
- "waze": "\uf83f",
- "cc-jcb": "\uf24b",
- "snapchat": "\uf2ab",
- "fantasy-flight-games": "\uf6dc",
- "rust": "\ue07a",
- "wix": "\uf5cf",
- "square-behance": "\uf1b5",
- "supple": "\uf3f9",
- "rebel": "\uf1d0",
- "css3": "\uf13c",
- "staylinked": "\uf3f5",
- "kaggle": "\uf5fa",
- "space-awesome": "\ue5ac",
- "deviantart": "\uf1bd",
- "cpanel": "\uf388",
- "goodreads-g": "\uf3a9",
- "square-git": "\uf1d2",
- "square-tumblr": "\uf174",
- "trello": "\uf181",
- "creative-commons-nc-jp": "\uf4ea",
- "get-pocket": "\uf265",
- "perbyte": "\ue083",
- "grunt": "\uf3ad",
- "weebly": "\uf5cc",
- "connectdevelop": "\uf20e",
- "leanpub": "\uf212",
- "black-tie": "\uf27e",
- "themeco": "\uf5c6",
- "python": "\uf3e2",
- "android": "\uf17b",
- "bots": "\ue340",
- "free-code-camp": "\uf2c5",
- "hornbill": "\uf592",
- "js": "\uf3b8",
- "ideal": "\ue013",
- "git": "\uf1d3",
- "dev": "\uf6cc",
- "sketch": "\uf7c6",
- "yandex-international": "\uf414",
- "cc-amex": "\uf1f3",
- "uber": "\uf402",
- "github": "\uf09b",
- "php": "\uf457",
- "alipay": "\uf642",
- "youtube": "\uf167",
- "skyatlas": "\uf216",
- "firefox-browser": "\ue007",
- "replyd": "\uf3e6",
- "suse": "\uf7d6",
- "jenkins": "\uf3b6",
- "twitter": "\uf099",
- "rockrms": "\uf3e9",
- "pinterest": "\uf0d2",
- "buffer": "\uf837",
- "npm": "\uf3d4",
- "yammer": "\uf840",
- "btc": "\uf15a",
- "dribbble": "\uf17d",
- "stumbleupon-circle": "\uf1a3",
- "internet-explorer": "\uf26b",
- "stubber": "\ue5c7",
- "telegram": "\uf2c6",
- "old-republic": "\uf510",
- "odysee": "\ue5c6",
- "square-whatsapp": "\uf40c",
- "node-js": "\uf3d3",
- "edge-legacy": "\ue078",
- "slack": "\uf198",
- "medrt": "\uf3c8",
- "usb": "\uf287",
- "tumblr": "\uf173",
- "vaadin": "\uf408",
- "quora": "\uf2c4",
- "reacteurope": "\uf75d",
- "medium": "\uf23a",
- "amilia": "\uf36d",
- "mixcloud": "\uf289",
- "flipboard": "\uf44d",
- "viacoin": "\uf237",
- "critical-role": "\uf6c9",
- "sitrox": "\ue44a",
- "discourse": "\uf393",
- "joomla": "\uf1aa",
- "mastodon": "\uf4f6",
- "airbnb": "\uf834",
- "wolf-pack-battalion": "\uf514",
- "buy-n-large": "\uf8a6",
- "gulp": "\uf3ae",
- "creative-commons-sampling-plus": "\uf4f1",
- "strava": "\uf428",
- "ember": "\uf423",
- "canadian-maple-leaf": "\uf785",
- "teamspeak": "\uf4f9",
- "pushed": "\uf3e1",
- "wordpress-simple": "\uf411",
- "nutritionix": "\uf3d6",
- "wodu": "\ue088",
- "google-pay": "\ue079",
- "intercom": "\uf7af",
- "zhihu": "\uf63f",
- "korvue": "\uf42f",
- "pix": "\ue43a",
- "steam-symbol": "\uf3f6",
- },
- "solid": {
- "0": "\u0030",
- "1": "\u0031",
- "2": "\u0032",
- "3": "\u0033",
- "4": "\u0034",
- "5": "\u0035",
- "6": "\u0036",
- "7": "\u0037",
- "8": "\u0038",
- "9": "\u0039",
- "fill-drip": "\uf576",
- "arrows-to-circle": "\ue4bd",
- "circle-chevron-right": "\uf138",
- "at": "\u0040",
- "trash-can": "\uf2ed",
- "text-height": "\uf034",
- "user-xmark": "\uf235",
- "stethoscope": "\uf0f1",
- "message": "\uf27a",
- "info": "\uf129",
- "down-left-and-up-right-to-center": "\uf422",
- "explosion": "\ue4e9",
- "file-lines": "\uf15c",
- "wave-square": "\uf83e",
- "ring": "\uf70b",
- "building-un": "\ue4d9",
- "dice-three": "\uf527",
- "calendar-days": "\uf073",
- "anchor-circle-check": "\ue4aa",
- "building-circle-arrow-right": "\ue4d1",
- "volleyball": "\uf45f",
- "arrows-up-to-line": "\ue4c2",
- "sort-down": "\uf0dd",
- "circle-minus": "\uf056",
- "door-open": "\uf52b",
- "right-from-bracket": "\uf2f5",
- "atom": "\uf5d2",
- "soap": "\ue06e",
- "icons": "\uf86d",
- "microphone-lines-slash": "\uf539",
- "bridge-circle-check": "\ue4c9",
- "pump-medical": "\ue06a",
- "fingerprint": "\uf577",
- "hand-point-right": "\uf0a4",
- "magnifying-glass-location": "\uf689",
- "forward-step": "\uf051",
- "face-smile-beam": "\uf5b8",
- "flag-checkered": "\uf11e",
- "football": "\uf44e",
- "school-circle-exclamation": "\ue56c",
- "crop": "\uf125",
- "angles-down": "\uf103",
- "users-rectangle": "\ue594",
- "people-roof": "\ue537",
- "people-line": "\ue534",
- "beer-mug-empty": "\uf0fc",
- "diagram-predecessor": "\ue477",
- "arrow-up-long": "\uf176",
- "fire-flame-simple": "\uf46a",
- "person": "\uf183",
- "laptop": "\uf109",
- "file-csv": "\uf6dd",
- "menorah": "\uf676",
- "truck-plane": "\ue58f",
- "record-vinyl": "\uf8d9",
- "face-grin-stars": "\uf587",
- "bong": "\uf55c",
- "spaghetti-monster-flying": "\uf67b",
- "arrow-down-up-across-line": "\ue4af",
- "spoon": "\uf2e5",
- "jar-wheat": "\ue517",
- "envelopes-bulk": "\uf674",
- "file-circle-exclamation": "\ue4eb",
- "circle-h": "\uf47e",
- "pager": "\uf815",
- "address-book": "\uf2b9",
- "strikethrough": "\uf0cc",
- "k": "\u004b",
- "landmark-flag": "\ue51c",
- "pencil": "\uf303",
- "backward": "\uf04a",
- "caret-right": "\uf0da",
- "comments": "\uf086",
- "paste": "\uf0ea",
- "code-pull-request": "\ue13c",
- "clipboard-list": "\uf46d",
- "truck-ramp-box": "\uf4de",
- "user-check": "\uf4fc",
- "vial-virus": "\ue597",
- "sheet-plastic": "\ue571",
- "blog": "\uf781",
- "user-ninja": "\uf504",
- "person-arrow-up-from-line": "\ue539",
- "scroll-torah": "\uf6a0",
- "broom-ball": "\uf458",
- "toggle-off": "\uf204",
- "box-archive": "\uf187",
- "person-drowning": "\ue545",
- "arrow-down-9-1": "\uf886",
- "face-grin-tongue-squint": "\uf58a",
- "spray-can": "\uf5bd",
- "truck-monster": "\uf63b",
- "w": "\u0057",
- "earth-africa": "\uf57c",
- "rainbow": "\uf75b",
- "circle-notch": "\uf1ce",
- "tablet-screen-button": "\uf3fa",
- "paw": "\uf1b0",
- "cloud": "\uf0c2",
- "trowel-bricks": "\ue58a",
- "face-flushed": "\uf579",
- "hospital-user": "\uf80d",
- "tent-arrow-left-right": "\ue57f",
- "gavel": "\uf0e3",
- "binoculars": "\uf1e5",
- "microphone-slash": "\uf131",
- "box-tissue": "\ue05b",
- "motorcycle": "\uf21c",
- "bell-concierge": "\uf562",
- "pen-ruler": "\uf5ae",
- "people-arrows": "\ue068",
- "mars-and-venus-burst": "\ue523",
- "square-caret-right": "\uf152",
- "scissors": "\uf0c4",
- "sun-plant-wilt": "\ue57a",
- "toilets-portable": "\ue584",
- "hockey-puck": "\uf453",
- "table": "\uf0ce",
- "magnifying-glass-arrow-right": "\ue521",
- "tachograph-digital": "\uf566",
- "users-slash": "\ue073",
- "clover": "\ue139",
- "reply": "\uf3e5",
- "star-and-crescent": "\uf699",
- "house-fire": "\ue50c",
- "square-minus": "\uf146",
- "helicopter": "\uf533",
- "compass": "\uf14e",
- "square-caret-down": "\uf150",
- "file-circle-question": "\ue4ef",
- "laptop-code": "\uf5fc",
- "swatchbook": "\uf5c3",
- "prescription-bottle": "\uf485",
- "bars": "\uf0c9",
- "people-group": "\ue533",
- "hourglass-end": "\uf253",
- "heart-crack": "\uf7a9",
- "square-up-right": "\uf360",
- "face-kiss-beam": "\uf597",
- "film": "\uf008",
- "ruler-horizontal": "\uf547",
- "people-robbery": "\ue536",
- "lightbulb": "\uf0eb",
- "caret-left": "\uf0d9",
- "circle-exclamation": "\uf06a",
- "school-circle-xmark": "\ue56d",
- "arrow-right-from-bracket": "\uf08b",
- "circle-chevron-down": "\uf13a",
- "unlock-keyhole": "\uf13e",
- "cloud-showers-heavy": "\uf740",
- "headphones-simple": "\uf58f",
- "sitemap": "\uf0e8",
- "circle-dollar-to-slot": "\uf4b9",
- "memory": "\uf538",
- "road-spikes": "\ue568",
- "fire-burner": "\ue4f1",
- "flag": "\uf024",
- "hanukiah": "\uf6e6",
- "feather": "\uf52d",
- "volume-low": "\uf027",
- "comment-slash": "\uf4b3",
- "cloud-sun-rain": "\uf743",
- "compress": "\uf066",
- "wheat-awn": "\ue2cd",
- "ankh": "\uf644",
- "hands-holding-child": "\ue4fa",
- "asterisk": "\u002a",
- "square-check": "\uf14a",
- "peseta-sign": "\ue221",
- "heading": "\uf1dc",
- "ghost": "\uf6e2",
- "list": "\uf03a",
- "square-phone-flip": "\uf87b",
- "cart-plus": "\uf217",
- "gamepad": "\uf11b",
- "circle-dot": "\uf192",
- "face-dizzy": "\uf567",
- "egg": "\uf7fb",
- "house-medical-circle-xmark": "\ue513",
- "campground": "\uf6bb",
- "folder-plus": "\uf65e",
- "futbol": "\uf1e3",
- "paintbrush": "\uf1fc",
- "lock": "\uf023",
- "gas-pump": "\uf52f",
- "hot-tub-person": "\uf593",
- "map-location": "\uf59f",
- "house-flood-water": "\ue50e",
- "tree": "\uf1bb",
- "bridge-lock": "\ue4cc",
- "sack-dollar": "\uf81d",
- "pen-to-square": "\uf044",
- "car-side": "\uf5e4",
- "share-nodes": "\uf1e0",
- "heart-circle-minus": "\ue4ff",
- "hourglass-half": "\uf252",
- "microscope": "\uf610",
- "sink": "\ue06d",
- "bag-shopping": "\uf290",
- "arrow-down-z-a": "\uf881",
- "mitten": "\uf7b5",
- "person-rays": "\ue54d",
- "users": "\uf0c0",
- "eye-slash": "\uf070",
- "flask-vial": "\ue4f3",
- "hand": "\uf256",
- "om": "\uf679",
- "worm": "\ue599",
- "house-circle-xmark": "\ue50b",
- "plug": "\uf1e6",
- "chevron-up": "\uf077",
- "hand-spock": "\uf259",
- "stopwatch": "\uf2f2",
- "face-kiss": "\uf596",
- "bridge-circle-xmark": "\ue4cb",
- "face-grin-tongue": "\uf589",
- "chess-bishop": "\uf43a",
- "face-grin-wink": "\uf58c",
- "ear-deaf": "\uf2a4",
- "road-circle-check": "\ue564",
- "dice-five": "\uf523",
- "square-rss": "\uf143",
- "land-mine-on": "\ue51b",
- "i-cursor": "\uf246",
- "stamp": "\uf5bf",
- "stairs": "\ue289",
- "i": "\u0049",
- "hryvnia-sign": "\uf6f2",
- "pills": "\uf484",
- "face-grin-wide": "\uf581",
- "tooth": "\uf5c9",
- "v": "\u0056",
- "bangladeshi-taka-sign": "\ue2e6",
- "bicycle": "\uf206",
- "staff-snake": "\ue579",
- "head-side-cough-slash": "\ue062",
- "truck-medical": "\uf0f9",
- "wheat-awn-circle-exclamation": "\ue598",
- "snowman": "\uf7d0",
- "mortar-pestle": "\uf5a7",
- "road-barrier": "\ue562",
- "school": "\uf549",
- "igloo": "\uf7ae",
- "joint": "\uf595",
- "angle-right": "\uf105",
- "horse": "\uf6f0",
- "q": "\u0051",
- "g": "\u0047",
- "notes-medical": "\uf481",
- "temperature-half": "\uf2c9",
- "dong-sign": "\ue169",
- "capsules": "\uf46b",
- "poo-storm": "\uf75a",
- "face-frown-open": "\uf57a",
- "hand-point-up": "\uf0a6",
- "money-bill": "\uf0d6",
- "bookmark": "\uf02e",
- "align-justify": "\uf039",
- "umbrella-beach": "\uf5ca",
- "helmet-un": "\ue503",
- "bullseye": "\uf140",
- "bacon": "\uf7e5",
- "hand-point-down": "\uf0a7",
- "arrow-up-from-bracket": "\ue09a",
- "folder": "\uf07b",
- "file-waveform": "\uf478",
- "radiation": "\uf7b9",
- "chart-simple": "\ue473",
- "mars-stroke": "\uf229",
- "vial": "\uf492",
- "gauge": "\uf624",
- "wand-magic-sparkles": "\ue2ca",
- "e": "\u0045",
- "pen-clip": "\uf305",
- "bridge-circle-exclamation": "\ue4ca",
- "user": "\uf007",
- "school-circle-check": "\ue56b",
- "dumpster": "\uf793",
- "van-shuttle": "\uf5b6",
- "building-user": "\ue4da",
- "square-caret-left": "\uf191",
- "highlighter": "\uf591",
- "key": "\uf084",
- "bullhorn": "\uf0a1",
- "globe": "\uf0ac",
- "synagogue": "\uf69b",
- "person-half-dress": "\ue548",
- "road-bridge": "\ue563",
- "location-arrow": "\uf124",
- "c": "\u0043",
- "tablet-button": "\uf10a",
- "building-lock": "\ue4d6",
- "pizza-slice": "\uf818",
- "money-bill-wave": "\uf53a",
- "chart-area": "\uf1fe",
- "house-flag": "\ue50d",
- "person-circle-minus": "\ue540",
- "ban": "\uf05e",
- "camera-rotate": "\ue0d8",
- "spray-can-sparkles": "\uf5d0",
- "star": "\uf005",
- "repeat": "\uf363",
- "cross": "\uf654",
- "box": "\uf466",
- "venus-mars": "\uf228",
- "arrow-pointer": "\uf245",
- "maximize": "\uf31e",
- "charging-station": "\uf5e7",
- "shapes": "\uf61f",
- "shuffle": "\uf074",
- "person-running": "\uf70c",
- "mobile-retro": "\ue527",
- "grip-lines-vertical": "\uf7a5",
- "spider": "\uf717",
- "hands-bound": "\ue4f9",
- "file-invoice-dollar": "\uf571",
- "plane-circle-exclamation": "\ue556",
- "x-ray": "\uf497",
- "spell-check": "\uf891",
- "slash": "\uf715",
- "computer-mouse": "\uf8cc",
- "arrow-right-to-bracket": "\uf090",
- "shop-slash": "\ue070",
- "server": "\uf233",
- "virus-covid-slash": "\ue4a9",
- "shop-lock": "\ue4a5",
- "hourglass-start": "\uf251",
- "blender-phone": "\uf6b6",
- "building-wheat": "\ue4db",
- "person-breastfeeding": "\ue53a",
- "right-to-bracket": "\uf2f6",
- "venus": "\uf221",
- "passport": "\uf5ab",
- "heart-pulse": "\uf21e",
- "people-carry-box": "\uf4ce",
- "temperature-high": "\uf769",
- "microchip": "\uf2db",
- "crown": "\uf521",
- "weight-hanging": "\uf5cd",
- "xmarks-lines": "\ue59a",
- "file-prescription": "\uf572",
- "weight-scale": "\uf496",
- "user-group": "\uf500",
- "arrow-up-a-z": "\uf15e",
- "chess-knight": "\uf441",
- "face-laugh-squint": "\uf59b",
- "wheelchair": "\uf193",
- "circle-arrow-up": "\uf0aa",
- "toggle-on": "\uf205",
- "person-walking": "\uf554",
- "l": "\u004c",
- "fire": "\uf06d",
- "bed-pulse": "\uf487",
- "shuttle-space": "\uf197",
- "face-laugh": "\uf599",
- "folder-open": "\uf07c",
- "heart-circle-plus": "\ue500",
- "code-fork": "\ue13b",
- "city": "\uf64f",
- "microphone-lines": "\uf3c9",
- "pepper-hot": "\uf816",
- "unlock": "\uf09c",
- "colon-sign": "\ue140",
- "headset": "\uf590",
- "store-slash": "\ue071",
- "road-circle-xmark": "\ue566",
- "user-minus": "\uf503",
- "mars-stroke-up": "\uf22a",
- "champagne-glasses": "\uf79f",
- "clipboard": "\uf328",
- "house-circle-exclamation": "\ue50a",
- "file-arrow-up": "\uf574",
- "wifi": "\uf1eb",
- "bath": "\uf2cd",
- "underline": "\uf0cd",
- "user-pen": "\uf4ff",
- "signature": "\uf5b7",
- "stroopwafel": "\uf551",
- "bold": "\uf032",
- "anchor-lock": "\ue4ad",
- "building-ngo": "\ue4d7",
- "manat-sign": "\ue1d5",
- "not-equal": "\uf53e",
- "border-top-left": "\uf853",
- "map-location-dot": "\uf5a0",
- "jedi": "\uf669",
- "square-poll-vertical": "\uf681",
- "mug-hot": "\uf7b6",
- "car-battery": "\uf5df",
- "gift": "\uf06b",
- "dice-two": "\uf528",
- "chess-queen": "\uf445",
- "glasses": "\uf530",
- "chess-board": "\uf43c",
- "building-circle-check": "\ue4d2",
- "person-chalkboard": "\ue53d",
- "mars-stroke-right": "\uf22b",
- "hand-back-fist": "\uf255",
- "square-caret-up": "\uf151",
- "cloud-showers-water": "\ue4e4",
- "chart-bar": "\uf080",
- "hands-bubbles": "\ue05e",
- "less-than-equal": "\uf537",
- "train": "\uf238",
- "eye-low-vision": "\uf2a8",
- "crow": "\uf520",
- "sailboat": "\ue445",
- "window-restore": "\uf2d2",
- "square-plus": "\uf0fe",
- "torii-gate": "\uf6a1",
- "frog": "\uf52e",
- "bucket": "\ue4cf",
- "image": "\uf03e",
- "microphone": "\uf130",
- "cow": "\uf6c8",
- "caret-up": "\uf0d8",
- "screwdriver": "\uf54a",
- "folder-closed": "\ue185",
- "house-tsunami": "\ue515",
- "square-nfi": "\ue576",
- "arrow-up-from-ground-water": "\ue4b5",
- "martini-glass": "\uf57b",
- "rotate-left": "\uf2ea",
- "table-columns": "\uf0db",
- "lemon": "\uf094",
- "head-side-mask": "\ue063",
- "handshake": "\uf2b5",
- "gem": "\uf3a5",
- "dolly": "\uf472",
- "smoking": "\uf48d",
- "minimize": "\uf78c",
- "monument": "\uf5a6",
- "snowplow": "\uf7d2",
- "angles-right": "\uf101",
- "cannabis": "\uf55f",
- "circle-play": "\uf144",
- "tablets": "\uf490",
- "ethernet": "\uf796",
- "euro-sign": "\uf153",
- "chair": "\uf6c0",
- "circle-check": "\uf058",
- "circle-stop": "\uf28d",
- "compass-drafting": "\uf568",
- "plate-wheat": "\ue55a",
- "icicles": "\uf7ad",
- "person-shelter": "\ue54f",
- "neuter": "\uf22c",
- "id-badge": "\uf2c1",
- "marker": "\uf5a1",
- "face-laugh-beam": "\uf59a",
- "helicopter-symbol": "\ue502",
- "universal-access": "\uf29a",
- "circle-chevron-up": "\uf139",
- "lari-sign": "\ue1c8",
- "volcano": "\uf770",
- "person-walking-dashed-line-arrow-right": "\ue553",
- "sterling-sign": "\uf154",
- "viruses": "\ue076",
- "square-person-confined": "\ue577",
- "user-tie": "\uf508",
- "arrow-down-long": "\uf175",
- "tent-arrow-down-to-line": "\ue57e",
- "certificate": "\uf0a3",
- "reply-all": "\uf122",
- "suitcase": "\uf0f2",
- "person-skating": "\uf7c5",
- "filter-circle-dollar": "\uf662",
- "camera-retro": "\uf083",
- "circle-arrow-down": "\uf0ab",
- "file-import": "\uf56f",
- "square-arrow-up-right": "\uf14c",
- "box-open": "\uf49e",
- "scroll": "\uf70e",
- "spa": "\uf5bb",
- "location-pin-lock": "\ue51f",
- "pause": "\uf04c",
- "hill-avalanche": "\ue507",
- "temperature-empty": "\uf2cb",
- "bomb": "\uf1e2",
- "registered": "\uf25d",
- "address-card": "\uf2bb",
- "scale-unbalanced-flip": "\uf516",
- "subscript": "\uf12c",
- "diamond-turn-right": "\uf5eb",
- "burst": "\ue4dc",
- "house-laptop": "\ue066",
- "face-tired": "\uf5c8",
- "money-bills": "\ue1f3",
- "smog": "\uf75f",
- "crutch": "\uf7f7",
- "font-awesome": "\uf2b4",
- "cloud-arrow-up": "\uf0ee",
- "palette": "\uf53f",
- "arrows-turn-right": "\ue4c0",
- "vest": "\ue085",
- "ferry": "\ue4ea",
- "arrows-down-to-people": "\ue4b9",
- "seedling": "\uf4d8",
- "left-right": "\uf337",
- "boxes-packing": "\ue4c7",
- "circle-arrow-left": "\uf0a8",
- "group-arrows-rotate": "\ue4f6",
- "bowl-food": "\ue4c6",
- "candy-cane": "\uf786",
- "arrow-down-wide-short": "\uf160",
- "cloud-bolt": "\uf76c",
- "text-slash": "\uf87d",
- "face-smile-wink": "\uf4da",
- "file-word": "\uf1c2",
- "file-powerpoint": "\uf1c4",
- "arrows-left-right": "\uf07e",
- "house-lock": "\ue510",
- "cloud-arrow-down": "\uf0ed",
- "children": "\ue4e1",
- "chalkboard": "\uf51b",
- "user-large-slash": "\uf4fa",
- "envelope-open": "\uf2b6",
- "handshake-simple-slash": "\ue05f",
- "mattress-pillow": "\ue525",
- "guarani-sign": "\ue19a",
- "arrows-rotate": "\uf021",
- "fire-extinguisher": "\uf134",
- "cruzeiro-sign": "\ue152",
- "greater-than-equal": "\uf532",
- "shield-halved": "\uf3ed",
- "book-atlas": "\uf558",
- "virus": "\ue074",
- "envelope-circle-check": "\ue4e8",
- "layer-group": "\uf5fd",
- "arrows-to-dot": "\ue4be",
- "archway": "\uf557",
- "heart-circle-check": "\ue4fd",
- "house-chimney-crack": "\uf6f1",
- "file-zipper": "\uf1c6",
- "square": "\uf0c8",
- "martini-glass-empty": "\uf000",
- "couch": "\uf4b8",
- "cedi-sign": "\ue0df",
- "italic": "\uf033",
- "church": "\uf51d",
- "comments-dollar": "\uf653",
- "democrat": "\uf747",
- "z": "\u005a",
- "person-skiing": "\uf7c9",
- "road-lock": "\ue567",
- "a": "\u0041",
- "temperature-arrow-down": "\ue03f",
- "feather-pointed": "\uf56b",
- "p": "\u0050",
- "snowflake": "\uf2dc",
- "newspaper": "\uf1ea",
- "rectangle-ad": "\uf641",
- "circle-arrow-right": "\uf0a9",
- "filter-circle-xmark": "\ue17b",
- "locust": "\ue520",
- "sort": "\uf0dc",
- "list-ol": "\uf0cb",
- "person-dress-burst": "\ue544",
- "money-check-dollar": "\uf53d",
- "vector-square": "\uf5cb",
- "bread-slice": "\uf7ec",
- "language": "\uf1ab",
- "face-kiss-wink-heart": "\uf598",
- "filter": "\uf0b0",
- "question": "\u003f",
- "file-signature": "\uf573",
- "up-down-left-right": "\uf0b2",
- "house-chimney-user": "\ue065",
- "hand-holding-heart": "\uf4be",
- "puzzle-piece": "\uf12e",
- "money-check": "\uf53c",
- "star-half-stroke": "\uf5c0",
- "code": "\uf121",
- "whiskey-glass": "\uf7a0",
- "building-circle-exclamation": "\ue4d3",
- "magnifying-glass-chart": "\ue522",
- "arrow-up-right-from-square": "\uf08e",
- "cubes-stacked": "\ue4e6",
- "won-sign": "\uf159",
- "virus-covid": "\ue4a8",
- "austral-sign": "\ue0a9",
- "f": "\u0046",
- "leaf": "\uf06c",
- "road": "\uf018",
- "taxi": "\uf1ba",
- "person-circle-plus": "\ue541",
- "chart-pie": "\uf200",
- "bolt-lightning": "\ue0b7",
- "sack-xmark": "\ue56a",
- "file-excel": "\uf1c3",
- "file-contract": "\uf56c",
- "fish-fins": "\ue4f2",
- "building-flag": "\ue4d5",
- "face-grin-beam": "\uf582",
- "object-ungroup": "\uf248",
- "poop": "\uf619",
- "location-pin": "\uf041",
- "kaaba": "\uf66b",
- "toilet-paper": "\uf71e",
- "helmet-safety": "\uf807",
- "eject": "\uf052",
- "circle-right": "\uf35a",
- "plane-circle-check": "\ue555",
- "face-rolling-eyes": "\uf5a5",
- "object-group": "\uf247",
- "chart-line": "\uf201",
- "mask-ventilator": "\ue524",
- "arrow-right": "\uf061",
- "signs-post": "\uf277",
- "cash-register": "\uf788",
- "person-circle-question": "\ue542",
- "h": "\u0048",
- "tarp": "\ue57b",
- "screwdriver-wrench": "\uf7d9",
- "arrows-to-eye": "\ue4bf",
- "plug-circle-bolt": "\ue55b",
- "heart": "\uf004",
- "mars-and-venus": "\uf224",
- "house-user": "\ue1b0",
- "dumpster-fire": "\uf794",
- "house-crack": "\ue3b1",
- "martini-glass-citrus": "\uf561",
- "face-surprise": "\uf5c2",
- "bottle-water": "\ue4c5",
- "circle-pause": "\uf28b",
- "toilet-paper-slash": "\ue072",
- "apple-whole": "\uf5d1",
- "kitchen-set": "\ue51a",
- "r": "\u0052",
- "temperature-quarter": "\uf2ca",
- "cube": "\uf1b2",
- "bitcoin-sign": "\ue0b4",
- "shield-dog": "\ue573",
- "solar-panel": "\uf5ba",
- "lock-open": "\uf3c1",
- "elevator": "\ue16d",
- "money-bill-transfer": "\ue528",
- "money-bill-trend-up": "\ue529",
- "house-flood-water-circle-arrow-right": "\ue50f",
- "square-poll-horizontal": "\uf682",
- "circle": "\uf111",
- "backward-fast": "\uf049",
- "recycle": "\uf1b8",
- "user-astronaut": "\uf4fb",
- "plane-slash": "\ue069",
- "trademark": "\uf25c",
- "basketball": "\uf434",
- "satellite-dish": "\uf7c0",
- "circle-up": "\uf35b",
- "mobile-screen-button": "\uf3cd",
- "volume-high": "\uf028",
- "users-rays": "\ue593",
- "wallet": "\uf555",
- "clipboard-check": "\uf46c",
- "file-audio": "\uf1c7",
- "burger": "\uf805",
- "wrench": "\uf0ad",
- "bugs": "\ue4d0",
- "rupee-sign": "\uf156",
- "file-image": "\uf1c5",
- "circle-question": "\uf059",
- "plane-departure": "\uf5b0",
- "handshake-slash": "\ue060",
- "book-bookmark": "\ue0bb",
- "code-branch": "\uf126",
- "hat-cowboy": "\uf8c0",
- "bridge": "\ue4c8",
- "phone-flip": "\uf879",
- "truck-front": "\ue2b7",
- "cat": "\uf6be",
- "anchor-circle-exclamation": "\ue4ab",
- "truck-field": "\ue58d",
- "route": "\uf4d7",
- "clipboard-question": "\ue4e3",
- "panorama": "\ue209",
- "comment-medical": "\uf7f5",
- "teeth-open": "\uf62f",
- "file-circle-minus": "\ue4ed",
- "tags": "\uf02c",
- "wine-glass": "\uf4e3",
- "forward-fast": "\uf050",
- "face-meh-blank": "\uf5a4",
- "square-parking": "\uf540",
- "house-signal": "\ue012",
- "bars-progress": "\uf828",
- "faucet-drip": "\ue006",
- "cart-flatbed": "\uf474",
- "ban-smoking": "\uf54d",
- "terminal": "\uf120",
- "mobile-button": "\uf10b",
- "house-medical-flag": "\ue514",
- "basket-shopping": "\uf291",
- "tape": "\uf4db",
- "bus-simple": "\uf55e",
- "eye": "\uf06e",
- "face-sad-cry": "\uf5b3",
- "audio-description": "\uf29e",
- "person-military-to-person": "\ue54c",
- "file-shield": "\ue4f0",
- "user-slash": "\uf506",
- "pen": "\uf304",
- "tower-observation": "\ue586",
- "file-code": "\uf1c9",
- "signal": "\uf012",
- "bus": "\uf207",
- "heart-circle-xmark": "\ue501",
- "house-chimney": "\ue3af",
- "window-maximize": "\uf2d0",
- "face-frown": "\uf119",
- "prescription": "\uf5b1",
- "shop": "\uf54f",
- "floppy-disk": "\uf0c7",
- "vihara": "\uf6a7",
- "scale-unbalanced": "\uf515",
- "sort-up": "\uf0de",
- "comment-dots": "\uf4ad",
- "plant-wilt": "\ue5aa",
- "diamond": "\uf219",
- "face-grin-squint": "\uf585",
- "hand-holding-dollar": "\uf4c0",
- "bacterium": "\ue05a",
- "hand-pointer": "\uf25a",
- "drum-steelpan": "\uf56a",
- "hand-scissors": "\uf257",
- "hands-praying": "\uf684",
- "arrow-rotate-right": "\uf01e",
- "biohazard": "\uf780",
- "location-crosshairs": "\uf601",
- "mars-double": "\uf227",
- "child-dress": "\ue59c",
- "users-between-lines": "\ue591",
- "lungs-virus": "\ue067",
- "face-grin-tears": "\uf588",
- "phone": "\uf095",
- "calendar-xmark": "\uf273",
- "child-reaching": "\ue59d",
- "head-side-virus": "\ue064",
- "user-gear": "\uf4fe",
- "arrow-up-1-9": "\uf163",
- "door-closed": "\uf52a",
- "shield-virus": "\ue06c",
- "dice-six": "\uf526",
- "mosquito-net": "\ue52c",
- "bridge-water": "\ue4ce",
- "person-booth": "\uf756",
- "text-width": "\uf035",
- "hat-wizard": "\uf6e8",
- "pen-fancy": "\uf5ac",
- "person-digging": "\uf85e",
- "trash": "\uf1f8",
- "gauge-simple": "\uf629",
- "book-medical": "\uf7e6",
- "poo": "\uf2fe",
- "quote-right": "\uf10e",
- "shirt": "\uf553",
- "cubes": "\uf1b3",
- "divide": "\uf529",
- "tenge-sign": "\uf7d7",
- "headphones": "\uf025",
- "hands-holding": "\uf4c2",
- "hands-clapping": "\ue1a8",
- "republican": "\uf75e",
- "arrow-left": "\uf060",
- "person-circle-xmark": "\ue543",
- "ruler": "\uf545",
- "align-left": "\uf036",
- "dice-d6": "\uf6d1",
- "restroom": "\uf7bd",
- "j": "\u004a",
- "users-viewfinder": "\ue595",
- "file-video": "\uf1c8",
- "up-right-from-square": "\uf35d",
- "table-cells": "\uf00a",
- "file-pdf": "\uf1c1",
- "book-bible": "\uf647",
- "o": "\u004f",
- "suitcase-medical": "\uf0fa",
- "user-secret": "\uf21b",
- "otter": "\uf700",
- "person-dress": "\uf182",
- "comment-dollar": "\uf651",
- "business-time": "\uf64a",
- "table-cells-large": "\uf009",
- "book-tanakh": "\uf827",
- "phone-volume": "\uf2a0",
- "hat-cowboy-side": "\uf8c1",
- "clipboard-user": "\uf7f3",
- "child": "\uf1ae",
- "lira-sign": "\uf195",
- "satellite": "\uf7bf",
- "plane-lock": "\ue558",
- "tag": "\uf02b",
- "comment": "\uf075",
- "cake-candles": "\uf1fd",
- "envelope": "\uf0e0",
- "angles-up": "\uf102",
- "paperclip": "\uf0c6",
- "arrow-right-to-city": "\ue4b3",
- "ribbon": "\uf4d6",
- "lungs": "\uf604",
- "arrow-up-9-1": "\uf887",
- "litecoin-sign": "\ue1d3",
- "border-none": "\uf850",
- "circle-nodes": "\ue4e2",
- "parachute-box": "\uf4cd",
- "indent": "\uf03c",
- "truck-field-un": "\ue58e",
- "hourglass": "\uf254",
- "mountain": "\uf6fc",
- "user-doctor": "\uf0f0",
- "circle-info": "\uf05a",
- "cloud-meatball": "\uf73b",
- "camera": "\uf030",
- "square-virus": "\ue578",
- "meteor": "\uf753",
- "car-on": "\ue4dd",
- "sleigh": "\uf7cc",
- "arrow-down-1-9": "\uf162",
- "hand-holding-droplet": "\uf4c1",
- "water": "\uf773",
- "calendar-check": "\uf274",
- "braille": "\uf2a1",
- "prescription-bottle-medical": "\uf486",
- "landmark": "\uf66f",
- "truck": "\uf0d1",
- "crosshairs": "\uf05b",
- "person-cane": "\ue53c",
- "tent": "\ue57d",
- "vest-patches": "\ue086",
- "check-double": "\uf560",
- "arrow-down-a-z": "\uf15d",
- "money-bill-wheat": "\ue52a",
- "cookie": "\uf563",
- "arrow-rotate-left": "\uf0e2",
- "hard-drive": "\uf0a0",
- "face-grin-squint-tears": "\uf586",
- "dumbbell": "\uf44b",
- "rectangle-list": "\uf022",
- "tarp-droplet": "\ue57c",
- "house-medical-circle-check": "\ue511",
- "person-skiing-nordic": "\uf7ca",
- "calendar-plus": "\uf271",
- "plane-arrival": "\uf5af",
- "circle-left": "\uf359",
- "train-subway": "\uf239",
- "chart-gantt": "\ue0e4",
- "indian-rupee-sign": "\ue1bc",
- "crop-simple": "\uf565",
- "money-bill-1": "\uf3d1",
- "left-long": "\uf30a",
- "dna": "\uf471",
- "virus-slash": "\ue075",
- "minus": "\uf068",
- "chess": "\uf439",
- "arrow-left-long": "\uf177",
- "plug-circle-check": "\ue55c",
- "street-view": "\uf21d",
- "franc-sign": "\ue18f",
- "volume-off": "\uf026",
- "hands-asl-interpreting": "\uf2a3",
- "gear": "\uf013",
- "droplet-slash": "\uf5c7",
- "mosque": "\uf678",
- "mosquito": "\ue52b",
- "star-of-david": "\uf69a",
- "person-military-rifle": "\ue54b",
- "cart-shopping": "\uf07a",
- "vials": "\uf493",
- "plug-circle-plus": "\ue55f",
- "place-of-worship": "\uf67f",
- "grip-vertical": "\uf58e",
- "arrow-turn-up": "\uf148",
- "u": "\u0055",
- "square-root-variable": "\uf698",
- "clock": "\uf017",
- "backward-step": "\uf048",
- "pallet": "\uf482",
- "faucet": "\ue005",
- "baseball-bat-ball": "\uf432",
- "s": "\u0053",
- "timeline": "\ue29c",
- "keyboard": "\uf11c",
- "caret-down": "\uf0d7",
- "house-chimney-medical": "\uf7f2",
- "temperature-three-quarters": "\uf2c8",
- "mobile-screen": "\uf3cf",
- "plane-up": "\ue22d",
- "piggy-bank": "\uf4d3",
- "battery-half": "\uf242",
- "mountain-city": "\ue52e",
- "coins": "\uf51e",
- "khanda": "\uf66d",
- "sliders": "\uf1de",
- "folder-tree": "\uf802",
- "network-wired": "\uf6ff",
- "map-pin": "\uf276",
- "hamsa": "\uf665",
- "cent-sign": "\ue3f5",
- "flask": "\uf0c3",
- "person-pregnant": "\ue31e",
- "wand-sparkles": "\uf72b",
- "ellipsis-vertical": "\uf142",
- "ticket": "\uf145",
- "power-off": "\uf011",
- "right-long": "\uf30b",
- "flag-usa": "\uf74d",
- "laptop-file": "\ue51d",
- "tty": "\uf1e4",
- "diagram-next": "\ue476",
- "person-rifle": "\ue54e",
- "house-medical-circle-exclamation": "\ue512",
- "closed-captioning": "\uf20a",
- "person-hiking": "\uf6ec",
- "venus-double": "\uf226",
- "images": "\uf302",
- "calculator": "\uf1ec",
- "people-pulling": "\ue535",
- "n": "\u004e",
- "cable-car": "\uf7da",
- "cloud-rain": "\uf73d",
- "building-circle-xmark": "\ue4d4",
- "ship": "\uf21a",
- "arrows-down-to-line": "\ue4b8",
- "download": "\uf019",
- "face-grin": "\uf580",
- "delete-left": "\uf55a",
- "eye-dropper": "\uf1fb",
- "file-circle-check": "\ue5a0",
- "forward": "\uf04e",
- "mobile": "\uf3ce",
- "face-meh": "\uf11a",
- "align-center": "\uf037",
- "book-skull": "\uf6b7",
- "id-card": "\uf2c2",
- "outdent": "\uf03b",
- "heart-circle-exclamation": "\ue4fe",
- "house": "\uf015",
- "calendar-week": "\uf784",
- "laptop-medical": "\uf812",
- "b": "\u0042",
- "file-medical": "\uf477",
- "dice-one": "\uf525",
- "kiwi-bird": "\uf535",
- "arrow-right-arrow-left": "\uf0ec",
- "rotate-right": "\uf2f9",
- "utensils": "\uf2e7",
- "arrow-up-wide-short": "\uf161",
- "mill-sign": "\ue1ed",
- "bowl-rice": "\ue2eb",
- "skull": "\uf54c",
- "tower-broadcast": "\uf519",
- "truck-pickup": "\uf63c",
- "up-long": "\uf30c",
- "stop": "\uf04d",
- "code-merge": "\uf387",
- "upload": "\uf093",
- "hurricane": "\uf751",
- "mound": "\ue52d",
- "toilet-portable": "\ue583",
- "compact-disc": "\uf51f",
- "file-arrow-down": "\uf56d",
- "caravan": "\uf8ff",
- "shield-cat": "\ue572",
- "bolt": "\uf0e7",
- "glass-water": "\ue4f4",
- "oil-well": "\ue532",
- "vault": "\ue2c5",
- "mars": "\uf222",
- "toilet": "\uf7d8",
- "plane-circle-xmark": "\ue557",
- "yen-sign": "\uf157",
- "ruble-sign": "\uf158",
- "sun": "\uf185",
- "guitar": "\uf7a6",
- "face-laugh-wink": "\uf59c",
- "horse-head": "\uf7ab",
- "bore-hole": "\ue4c3",
- "industry": "\uf275",
- "circle-down": "\uf358",
- "arrows-turn-to-dots": "\ue4c1",
- "florin-sign": "\ue184",
- "arrow-down-short-wide": "\uf884",
- "less-than": "\u003c",
- "angle-down": "\uf107",
- "car-tunnel": "\ue4de",
- "head-side-cough": "\ue061",
- "grip-lines": "\uf7a4",
- "thumbs-down": "\uf165",
- "user-lock": "\uf502",
- "arrow-right-long": "\uf178",
- "anchor-circle-xmark": "\ue4ac",
- "ellipsis": "\uf141",
- "chess-pawn": "\uf443",
- "kit-medical": "\uf479",
- "person-through-window": "\ue5a9",
- "toolbox": "\uf552",
- "hands-holding-circle": "\ue4fb",
- "bug": "\uf188",
- "credit-card": "\uf09d",
- "car": "\uf1b9",
- "hand-holding-hand": "\ue4f7",
- "book-open-reader": "\uf5da",
- "mountain-sun": "\ue52f",
- "arrows-left-right-to-line": "\ue4ba",
- "dice-d20": "\uf6cf",
- "truck-droplet": "\ue58c",
- "file-circle-xmark": "\ue5a1",
- "temperature-arrow-up": "\ue040",
- "medal": "\uf5a2",
- "bed": "\uf236",
- "square-h": "\uf0fd",
- "podcast": "\uf2ce",
- "temperature-full": "\uf2c7",
- "bell": "\uf0f3",
- "superscript": "\uf12b",
- "plug-circle-xmark": "\ue560",
- "star-of-life": "\uf621",
- "phone-slash": "\uf3dd",
- "paint-roller": "\uf5aa",
- "handshake-angle": "\uf4c4",
- "location-dot": "\uf3c5",
- "file": "\uf15b",
- "greater-than": "\u003e",
- "person-swimming": "\uf5c4",
- "arrow-down": "\uf063",
- "droplet": "\uf043",
- "eraser": "\uf12d",
- "earth-americas": "\uf57d",
- "person-burst": "\ue53b",
- "dove": "\uf4ba",
- "battery-empty": "\uf244",
- "socks": "\uf696",
- "inbox": "\uf01c",
- "section": "\ue447",
- "gauge-high": "\uf625",
- "envelope-open-text": "\uf658",
- "hospital": "\uf0f8",
- "wine-bottle": "\uf72f",
- "chess-rook": "\uf447",
- "bars-staggered": "\uf550",
- "dharmachakra": "\uf655",
- "hotdog": "\uf80f",
- "person-walking-with-cane": "\uf29d",
- "drum": "\uf569",
- "ice-cream": "\uf810",
- "heart-circle-bolt": "\ue4fc",
- "fax": "\uf1ac",
- "paragraph": "\uf1dd",
- "check-to-slot": "\uf772",
- "star-half": "\uf089",
- "boxes-stacked": "\uf468",
- "link": "\uf0c1",
- "ear-listen": "\uf2a2",
- "tree-city": "\ue587",
- "play": "\uf04b",
- "font": "\uf031",
- "rupiah-sign": "\ue23d",
- "magnifying-glass": "\uf002",
- "table-tennis-paddle-ball": "\uf45d",
- "person-dots-from-line": "\uf470",
- "trash-can-arrow-up": "\uf82a",
- "naira-sign": "\ue1f6",
- "cart-arrow-down": "\uf218",
- "walkie-talkie": "\uf8ef",
- "file-pen": "\uf31c",
- "receipt": "\uf543",
- "square-pen": "\uf14b",
- "suitcase-rolling": "\uf5c1",
- "person-circle-exclamation": "\ue53f",
- "chevron-down": "\uf078",
- "battery-full": "\uf240",
- "skull-crossbones": "\uf714",
- "code-compare": "\ue13a",
- "list-ul": "\uf0ca",
- "school-lock": "\ue56f",
- "tower-cell": "\ue585",
- "down-long": "\uf309",
- "ranking-star": "\ue561",
- "chess-king": "\uf43f",
- "person-harassing": "\ue549",
- "brazilian-real-sign": "\ue46c",
- "landmark-dome": "\uf752",
- "arrow-up": "\uf062",
- "tv": "\uf26c",
- "shrimp": "\ue448",
- "list-check": "\uf0ae",
- "jug-detergent": "\ue519",
- "circle-user": "\uf2bd",
- "user-shield": "\uf505",
- "wind": "\uf72e",
- "car-burst": "\uf5e1",
- "y": "\u0059",
- "person-snowboarding": "\uf7ce",
- "truck-fast": "\uf48b",
- "fish": "\uf578",
- "user-graduate": "\uf501",
- "circle-half-stroke": "\uf042",
- "clapperboard": "\ue131",
- "circle-radiation": "\uf7ba",
- "baseball": "\uf433",
- "jet-fighter-up": "\ue518",
- "diagram-project": "\uf542",
- "copy": "\uf0c5",
- "volume-xmark": "\uf6a9",
- "hand-sparkles": "\ue05d",
- "grip": "\uf58d",
- "share-from-square": "\uf14d",
- "child-combatant": "\ue4e0",
- "gun": "\ue19b",
- "square-phone": "\uf098",
- "plus": "\u002b",
- "expand": "\uf065",
- "computer": "\ue4e5",
- "xmark": "\uf00d",
- "arrows-up-down-left-right": "\uf047",
- "chalkboard-user": "\uf51c",
- "peso-sign": "\ue222",
- "building-shield": "\ue4d8",
- "baby": "\uf77c",
- "users-line": "\ue592",
- "quote-left": "\uf10d",
- "tractor": "\uf722",
- "trash-arrow-up": "\uf829",
- "arrow-down-up-lock": "\ue4b0",
- "lines-leaning": "\ue51e",
- "ruler-combined": "\uf546",
- "copyright": "\uf1f9",
- "equals": "\u003d",
- "blender": "\uf517",
- "teeth": "\uf62e",
- "shekel-sign": "\uf20b",
- "map": "\uf279",
- "rocket": "\uf135",
- "photo-film": "\uf87c",
- "folder-minus": "\uf65d",
- "store": "\uf54e",
- "arrow-trend-up": "\ue098",
- "plug-circle-minus": "\ue55e",
- "sign-hanging": "\uf4d9",
- "bezier-curve": "\uf55b",
- "bell-slash": "\uf1f6",
- "tablet": "\uf3fb",
- "school-flag": "\ue56e",
- "fill": "\uf575",
- "angle-up": "\uf106",
- "drumstick-bite": "\uf6d7",
- "holly-berry": "\uf7aa",
- "chevron-left": "\uf053",
- "bacteria": "\ue059",
- "hand-lizard": "\uf258",
- "notdef": "\ue1fe",
- "disease": "\uf7fa",
- "briefcase-medical": "\uf469",
- "genderless": "\uf22d",
- "chevron-right": "\uf054",
- "retweet": "\uf079",
- "car-rear": "\uf5de",
- "pump-soap": "\ue06b",
- "video-slash": "\uf4e2",
- "battery-quarter": "\uf243",
- "radio": "\uf8d7",
- "baby-carriage": "\uf77d",
- "traffic-light": "\uf637",
- "thermometer": "\uf491",
- "vr-cardboard": "\uf729",
- "hand-middle-finger": "\uf806",
- "percent": "\u0025",
- "truck-moving": "\uf4df",
- "glass-water-droplet": "\ue4f5",
- "display": "\ue163",
- "face-smile": "\uf118",
- "thumbtack": "\uf08d",
- "trophy": "\uf091",
- "person-praying": "\uf683",
- "hammer": "\uf6e3",
- "hand-peace": "\uf25b",
- "rotate": "\uf2f1",
- "spinner": "\uf110",
- "robot": "\uf544",
- "peace": "\uf67c",
- "gears": "\uf085",
- "warehouse": "\uf494",
- "arrow-up-right-dots": "\ue4b7",
- "splotch": "\uf5bc",
- "face-grin-hearts": "\uf584",
- "dice-four": "\uf524",
- "sim-card": "\uf7c4",
- "transgender": "\uf225",
- "mercury": "\uf223",
- "arrow-turn-down": "\uf149",
- "person-falling-burst": "\ue547",
- "award": "\uf559",
- "ticket-simple": "\uf3ff",
- "building": "\uf1ad",
- "angles-left": "\uf100",
- "qrcode": "\uf029",
- "clock-rotate-left": "\uf1da",
- "face-grin-beam-sweat": "\uf583",
- "file-export": "\uf56e",
- "shield": "\uf132",
- "arrow-up-short-wide": "\uf885",
- "house-medical": "\ue3b2",
- "golf-ball-tee": "\uf450",
- "circle-chevron-left": "\uf137",
- "house-chimney-window": "\ue00d",
- "pen-nib": "\uf5ad",
- "tent-arrow-turn-left": "\ue580",
- "tents": "\ue582",
- "wand-magic": "\uf0d0",
- "dog": "\uf6d3",
- "carrot": "\uf787",
- "moon": "\uf186",
- "wine-glass-empty": "\uf5ce",
- "cheese": "\uf7ef",
- "yin-yang": "\uf6ad",
- "music": "\uf001",
- "code-commit": "\uf386",
- "temperature-low": "\uf76b",
- "person-biking": "\uf84a",
- "broom": "\uf51a",
- "shield-heart": "\ue574",
- "gopuram": "\uf664",
- "earth-oceania": "\ue47b",
- "square-xmark": "\uf2d3",
- "hashtag": "\u0023",
- "up-right-and-down-left-from-center": "\uf424",
- "oil-can": "\uf613",
- "t": "\u0054",
- "hippo": "\uf6ed",
- "chart-column": "\ue0e3",
- "infinity": "\uf534",
- "vial-circle-check": "\ue596",
- "person-arrow-down-to-line": "\ue538",
- "voicemail": "\uf897",
- "fan": "\uf863",
- "person-walking-luggage": "\ue554",
- "up-down": "\uf338",
- "cloud-moon-rain": "\uf73c",
- "calendar": "\uf133",
- "trailer": "\ue041",
- "bahai": "\uf666",
- "sd-card": "\uf7c2",
- "dragon": "\uf6d5",
- "shoe-prints": "\uf54b",
- "circle-plus": "\uf055",
- "face-grin-tongue-wink": "\uf58b",
- "hand-holding": "\uf4bd",
- "plug-circle-exclamation": "\ue55d",
- "link-slash": "\uf127",
- "clone": "\uf24d",
- "person-walking-arrow-loop-left": "\ue551",
- "arrow-up-z-a": "\uf882",
- "fire-flame-curved": "\uf7e4",
- "tornado": "\uf76f",
- "file-circle-plus": "\ue494",
- "book-quran": "\uf687",
- "anchor": "\uf13d",
- "border-all": "\uf84c",
- "face-angry": "\uf556",
- "cookie-bite": "\uf564",
- "arrow-trend-down": "\ue097",
- "rss": "\uf09e",
- "draw-polygon": "\uf5ee",
- "scale-balanced": "\uf24e",
- "gauge-simple-high": "\uf62a",
- "shower": "\uf2cc",
- "desktop": "\uf390",
- "m": "\u004d",
- "table-list": "\uf00b",
- "comment-sms": "\uf7cd",
- "book": "\uf02d",
- "user-plus": "\uf234",
- "check": "\uf00c",
- "battery-three-quarters": "\uf241",
- "house-circle-check": "\ue509",
- "angle-left": "\uf104",
- "diagram-successor": "\ue47a",
- "truck-arrow-right": "\ue58b",
- "arrows-split-up-and-left": "\ue4bc",
- "hand-fist": "\uf6de",
- "cloud-moon": "\uf6c3",
- "briefcase": "\uf0b1",
- "person-falling": "\ue546",
- "image-portrait": "\uf3e0",
- "user-tag": "\uf507",
- "rug": "\ue569",
- "earth-europe": "\uf7a2",
- "cart-flatbed-suitcase": "\uf59d",
- "rectangle-xmark": "\uf410",
- "baht-sign": "\ue0ac",
- "book-open": "\uf518",
- "book-journal-whills": "\uf66a",
- "handcuffs": "\ue4f8",
- "triangle-exclamation": "\uf071",
- "database": "\uf1c0",
- "share": "\uf064",
- "bottle-droplet": "\ue4c4",
- "mask-face": "\ue1d7",
- "hill-rockslide": "\ue508",
- "right-left": "\uf362",
- "paper-plane": "\uf1d8",
- "road-circle-exclamation": "\ue565",
- "dungeon": "\uf6d9",
- "align-right": "\uf038",
- "money-bill-1-wave": "\uf53b",
- "life-ring": "\uf1cd",
- "hands": "\uf2a7",
- "calendar-day": "\uf783",
- "water-ladder": "\uf5c5",
- "arrows-up-down": "\uf07d",
- "face-grimace": "\uf57f",
- "wheelchair-move": "\ue2ce",
- "turn-down": "\uf3be",
- "person-walking-arrow-right": "\ue552",
- "square-envelope": "\uf199",
- "dice": "\uf522",
- "bowling-ball": "\uf436",
- "brain": "\uf5dc",
- "bandage": "\uf462",
- "calendar-minus": "\uf272",
- "circle-xmark": "\uf057",
- "gifts": "\uf79c",
- "hotel": "\uf594",
- "earth-asia": "\uf57e",
- "id-card-clip": "\uf47f",
- "magnifying-glass-plus": "\uf00e",
- "thumbs-up": "\uf164",
- "user-clock": "\uf4fd",
- "hand-dots": "\uf461",
- "file-invoice": "\uf570",
- "window-minimize": "\uf2d1",
- "mug-saucer": "\uf0f4",
- "brush": "\uf55d",
- "mask": "\uf6fa",
- "magnifying-glass-minus": "\uf010",
- "ruler-vertical": "\uf548",
- "user-large": "\uf406",
- "train-tram": "\ue5b4",
- "user-nurse": "\uf82f",
- "syringe": "\uf48e",
- "cloud-sun": "\uf6c4",
- "stopwatch-20": "\ue06f",
- "square-full": "\uf45c",
- "magnet": "\uf076",
- "jar": "\ue516",
- "note-sticky": "\uf249",
- "bug-slash": "\ue490",
- "arrow-up-from-water-pump": "\ue4b6",
- "bone": "\uf5d7",
- "user-injured": "\uf728",
- "face-sad-tear": "\uf5b4",
- "plane": "\uf072",
- "tent-arrows-down": "\ue581",
- "exclamation": "\u0021",
- "arrows-spin": "\ue4bb",
- "print": "\uf02f",
- "turkish-lira-sign": "\ue2bb",
- "dollar-sign": "\u0024",
- "x": "\u0058",
- "magnifying-glass-dollar": "\uf688",
- "users-gear": "\uf509",
- "person-military-pointing": "\ue54a",
- "building-columns": "\uf19c",
- "umbrella": "\uf0e9",
- "trowel": "\ue589",
- "d": "\u0044",
- "stapler": "\ue5af",
- "masks-theater": "\uf630",
- "kip-sign": "\ue1c4",
- "hand-point-left": "\uf0a5",
- "handshake-simple": "\uf4c6",
- "jet-fighter": "\uf0fb",
- "square-share-nodes": "\uf1e1",
- "barcode": "\uf02a",
- "plus-minus": "\ue43c",
- "video": "\uf03d",
- "graduation-cap": "\uf19d",
- "hand-holding-medical": "\ue05c",
- "person-circle-check": "\ue53e",
- "turn-up": "\uf3bf",
- },
-}
\ No newline at end of file
diff --git a/addons/fontawesome/FontAwesome.gd b/addons/fontawesome/FontAwesome.gd
deleted file mode 100644
index 50631eb..0000000
--- a/addons/fontawesome/FontAwesome.gd
+++ /dev/null
@@ -1,44 +0,0 @@
-@tool
-extends Label
-
-@export_category("FontAwesome")
-@export_range(1, 16384) var icon_size: int = 16: set = set_icon_size
-@export_enum("solid", "regular", "brands") var icon_type: String = "solid": set = set_icon_type
-@export var icon_name: String = "circle-question": set = set_icon_name
-
-const icon_fonts: Dictionary = {
- "solid": "res://addons/fontawesome/fonts/fa-solid-900.woff2",
- "regular": "res://addons/fontawesome/fonts/fa-regular-400.woff2",
- "brands": "res://addons/fontawesome/fonts/fa-brands-400.woff2"
-}
-
-const cheatsheet: Dictionary = preload("res://addons/fontawesome/All.gd").all
-
-func _init():
- horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
- vertical_alignment = VERTICAL_ALIGNMENT_CENTER
- # disable some things, this is icon not text
- auto_translate = false
- localize_numeral_system = false
-
- set_icon_type(icon_type)
- set_icon_size(icon_size)
- set_icon_name(icon_name)
-
-func set_icon_size(new_size: int):
- icon_size = clamp(new_size, 1, 16384)
- add_theme_font_size_override("font_size", icon_size)
- size = Vector2(icon_size, icon_size)
-
-func set_icon_type(new_type: String):
- icon_type = new_type
- match icon_type:
- "solid", "regular", "brands":
- add_theme_font_override("font", load(icon_fonts[icon_type]))
-
-func set_icon_name(new_name: String):
- icon_name = new_name
- var iconcode = ""
- if icon_name in cheatsheet[icon_type]:
- iconcode = cheatsheet[icon_type][icon_name]
- set_text(iconcode)
diff --git a/addons/fontawesome/LICENSE.txt b/addons/fontawesome/LICENSE.txt
deleted file mode 100644
index 01bd21e..0000000
--- a/addons/fontawesome/LICENSE.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 LetterN
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/addons/fontawesome/flag-solid.svg b/addons/fontawesome/flag-solid.svg
deleted file mode 100644
index cd62b8c..0000000
--- a/addons/fontawesome/flag-solid.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/addons/fontawesome/flag-solid.svg.import b/addons/fontawesome/flag-solid.svg.import
deleted file mode 100644
index 956141a..0000000
--- a/addons/fontawesome/flag-solid.svg.import
+++ /dev/null
@@ -1,37 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cdk6bwkag1wre"
-path="res://.godot/imported/flag-solid.svg-f443982cac7d006eea43c772e2428bae.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/fontawesome/flag-solid.svg"
-dest_files=["res://.godot/imported/flag-solid.svg-f443982cac7d006eea43c772e2428bae.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
diff --git a/addons/fontawesome/fonts/fa-brands-400.woff2 b/addons/fontawesome/fonts/fa-brands-400.woff2
deleted file mode 100644
index 5929101297278b9c51cfc48d99bdd23636163525..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 108000
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