diff --git a/.gitignore b/.gitignore index 755cb88..fa22734 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,11 @@ # Godot-specific ignores .import/ +scn/ +.import +default_env.tres +icon.png +icon.png.import +project.godot # Imported translations (automatically generated from CSV files) *.translation diff --git a/README.md b/README.md index 6207dfc..584b2f4 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This plugin is now supported in [Godot Extended Library Discord](https://discord A little plugin to easy-way manage your text files inside your project folder. Author: *"Nicolo (fenix) Santilio"* -Version: *1.8.7* +Version: *1.8.8* Godot Version: *3.2.3* **This repository was pushed directly from Godot Engine Editor thanks to this [GitHub Integration](https://github.com/fenix-hub/godot-engine.github-integration)!** diff --git a/addons/file-editor/file.samples/sample.cfg b/addons/file-editor/file.samples/sample.cfg index d170597..15872e8 100644 --- a/addons/file-editor/file.samples/sample.cfg +++ b/addons/file-editor/file.samples/sample.cfg @@ -1,33 +1,9 @@ -[Locale] - -SecondLanguage="oh" -Language="it" - -[Version] - -Minor="1" -Micro="3" -Major="5" - -[Directories] - -TempDir="C:UsersJonAppDataLocalAudacitySessionData" - -[AudioIO] - -RecordingDevice="Microphone (Blue Snowball)" -Host="MME" -PlaybackDevice="Speakers / Headphones (Realtek)" -EffectsPreviewLen="6" -CutPreviewBeforeLen="2" -CutPreviewAfterLen="1" -SeekShortPeriod="1" -SeekLongPeriod="15" -Duplex="1" -SWPlaythrough="0" - -[AnotherSection] - -SectionName="ThisNewSection" -SeconKey="SecondValue" - +; last modified 1 April 2001 by John Doe +[owner] +name="John Doe" +organization="Acme Widgets Inc." +[database] +; use IP address in case network name resolution is not working +server="192.0.2.62" +port="143" +file="payroll.dat" diff --git a/addons/file-editor/file.samples/sample.txt b/addons/file-editor/file.samples/sample.txt index 57b0154..8a03e0e 100644 --- a/addons/file-editor/file.samples/sample.txt +++ b/addons/file-editor/file.samples/sample.txt @@ -1,2 +1 @@ This is a simple text file. - diff --git a/addons/file-editor/howto/.gdignore b/addons/file-editor/howto/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/addons/file-editor/lastopenedfiles.lastcfg b/addons/file-editor/lastopenedfiles.lastcfg index 3ea5c54..749518c 100644 --- a/addons/file-editor/lastopenedfiles.lastcfg +++ b/addons/file-editor/lastopenedfiles.lastcfg @@ -1,9 +1,6 @@ [Opened] +translation.csv="res://addons/file-editor/file.samples/translation.csv" sample.bbs="res://addons/file-editor/file.samples/sample.bbs" sample.cfg="res://addons/file-editor/file.samples/sample.cfg" -sample.html="res://addons/file-editor/file.samples/sample.html" sample.ini="res://addons/file-editor/file.samples/sample.ini" -sample.md="res://addons/file-editor/file.samples/sample.md" -sample.txt="res://addons/file-editor/file.samples/sample.txt" -translation.csv="res://addons/file-editor/file.samples/translation.csv" diff --git a/addons/file-editor/plugin.cfg b/addons/file-editor/plugin.cfg index 067244b..d255e6f 100644 --- a/addons/file-editor/plugin.cfg +++ b/addons/file-editor/plugin.cfg @@ -3,5 +3,5 @@ name="File Editor" description="An internal file editor to view and edit text files in your project folder." author="Nicolo 'fenix' Santilio" -version="1.8.7" +version="1.9.0" script="scripts/file-editor.gd" diff --git a/addons/file-editor/scenes/FileEditor.tscn b/addons/file-editor/scenes/FileEditor.tscn index cf2fddc..7faa3e1 100644 --- a/addons/file-editor/scenes/FileEditor.tscn +++ b/addons/file-editor/scenes/FileEditor.tscn @@ -1,66 +1,8 @@ -[gd_scene load_steps=27 format=2] +[gd_scene load_steps=31 format=2] [ext_resource path="res://addons/file-editor/scripts/FileEditor.gd" type="Script" id=1] [ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=2] - - -[sub_resource type="Image" id=25] -data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), -"format": "RGBA8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id=2] -image = SubResource( 25 ) -size = Vector2( 16, 16 ) - -[sub_resource type="Image" id=26] -data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 239, 224, 224, 224, 239, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 80, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), -"format": "RGBA8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id=4] -image = SubResource( 26 ) -size = Vector2( 16, 16 ) - -[sub_resource type="Image" id=27] -data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 80, 224, 224, 224, 206, 224, 224, 224, 238, 224, 224, 224, 238, 224, 224, 224, 174, 224, 224, 224, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 238, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 112, 224, 224, 224, 16, 224, 224, 224, 16, 224, 224, 224, 80, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 222, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 96, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 206, 224, 224, 224, 222, 224, 224, 224, 64, 0, 0, 0, 0, 224, 224, 224, 96, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 32, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 16, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 222, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 126, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 80, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 126, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 190, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 64, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 112, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 206, 224, 224, 224, 126, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), -"format": "RGBA8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id=6] -image = SubResource( 27 ) -size = Vector2( 16, 16 ) - -[sub_resource type="DynamicFont" id=7] -size = 13 -font_data = ExtResource( 2 ) - -[sub_resource type="Image" id=28] -data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), -"format": "RGBA8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id=9] -image = SubResource( 28 ) -size = Vector2( 16, 16 ) - [sub_resource type="Image" id=29] data = { "data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), @@ -70,49 +12,53 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id=11] +[sub_resource type="ImageTexture" id=2] image = SubResource( 29 ) size = Vector2( 16, 16 ) [sub_resource type="Image" id=30] data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 239, 224, 224, 224, 239, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 80, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "format": "RGBA8", "height": 16, "mipmaps": false, "width": 16 } -[sub_resource type="ImageTexture" id=13] +[sub_resource type="ImageTexture" id=4] image = SubResource( 30 ) size = Vector2( 16, 16 ) [sub_resource type="Image" id=31] data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 80, 224, 224, 224, 206, 224, 224, 224, 238, 224, 224, 224, 238, 224, 224, 224, 174, 224, 224, 224, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 238, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 112, 224, 224, 224, 16, 224, 224, 224, 16, 224, 224, 224, 80, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 222, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 96, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 206, 224, 224, 224, 222, 224, 224, 224, 64, 0, 0, 0, 0, 224, 224, 224, 96, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 32, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 16, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 222, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 126, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 80, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 126, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 190, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 64, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 112, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 206, 224, 224, 224, 126, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "format": "RGBA8", "height": 16, "mipmaps": false, "width": 16 } -[sub_resource type="ImageTexture" id=15] +[sub_resource type="ImageTexture" id=6] image = SubResource( 31 ) size = Vector2( 16, 16 ) [sub_resource type="Image" id=32] data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 69, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 234, 234, 12, 226, 226, 226, 61, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 132, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 132, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 61, 234, 234, 234, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 234, 234, 12, 224, 224, 224, 195, 224, 224, 224, 255, 224, 224, 224, 167, 224, 224, 224, 57, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 211, 224, 224, 224, 57, 224, 224, 224, 167, 224, 224, 224, 255, 224, 224, 224, 195, 234, 234, 234, 12, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 61, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 168, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 56, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 208, 224, 224, 224, 208, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 57, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 69, 224, 224, 224, 132, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 92, 234, 234, 234, 12, 234, 234, 234, 12, 225, 225, 225, 94, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 211, 224, 224, 224, 132, 225, 225, 225, 69, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 208, 216, 216, 216, 13, 224, 224, 224, 233, 224, 224, 224, 232, 234, 234, 234, 12, 224, 224, 224, 209, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 254, 224, 224, 224, 131, 221, 221, 221, 37, 224, 224, 224, 255, 224, 224, 224, 255, 221, 221, 221, 37, 224, 224, 224, 130, 224, 224, 224, 253, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 69, 224, 224, 224, 132, 224, 224, 224, 211, 224, 224, 224, 246, 225, 225, 225, 69, 0, 0, 0, 0, 221, 221, 221, 37, 224, 224, 224, 255, 224, 224, 224, 255, 221, 221, 221, 37, 0, 0, 0, 0, 225, 225, 225, 68, 224, 224, 224, 245, 224, 224, 224, 211, 224, 224, 224, 132, 225, 225, 225, 69, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 228, 19, 224, 224, 224, 41, 0, 0, 0, 0, 255, 255, 255, 1, 224, 224, 224, 99, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 100, 255, 255, 255, 1, 0, 0, 0, 0, 223, 223, 223, 40, 228, 228, 228, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 143, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 44, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 254, 225, 225, 225, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 222, 222, 70, 224, 224, 224, 206, 224, 224, 224, 245, 224, 224, 224, 187, 224, 224, 224, 187, 224, 224, 224, 245, 224, 224, 224, 206, 224, 224, 224, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 73, 223, 223, 223, 218, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 218, 224, 224, 224, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 73, 223, 223, 223, 218, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 218, 224, 224, 224, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "format": "RGBA8", "height": 16, "mipmaps": false, "width": 16 } -[sub_resource type="ImageTexture" id=17] +[sub_resource type="ImageTexture" id=8] image = SubResource( 32 ) size = Vector2( 16, 16 ) +[sub_resource type="DynamicFont" id=9] +size = 13 +font_data = ExtResource( 2 ) + [sub_resource type="Image" id=33] data = { "data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), @@ -122,7 +68,7 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id=19] +[sub_resource type="ImageTexture" id=11] image = SubResource( 33 ) size = Vector2( 16, 16 ) @@ -135,7 +81,7 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id=21] +[sub_resource type="ImageTexture" id=13] image = SubResource( 34 ) size = Vector2( 16, 16 ) @@ -148,11 +94,89 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id=23] +[sub_resource type="ImageTexture" id=15] image = SubResource( 35 ) size = Vector2( 16, 16 ) -[sub_resource type="StyleBoxEmpty" id=24] +[sub_resource type="Image" id=36] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id=17] +image = SubResource( 36 ) +size = Vector2( 16, 16 ) + +[sub_resource type="Image" id=37] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id=19] +image = SubResource( 37 ) +size = Vector2( 16, 16 ) + +[sub_resource type="Image" id=38] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id=21] +image = SubResource( 38 ) +size = Vector2( 16, 16 ) + +[sub_resource type="Image" id=39] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id=23] +image = SubResource( 39 ) +size = Vector2( 16, 16 ) + +[sub_resource type="Image" id=40] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id=25] +image = SubResource( 40 ) +size = Vector2( 16, 16 ) + +[sub_resource type="Image" id=41] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id=27] +image = SubResource( 41 ) +size = Vector2( 16, 16 ) + +[sub_resource type="StyleBoxEmpty" id=28] [node name="FileEditor" type="Control"] anchor_right = 1.0 @@ -209,7 +233,7 @@ margin_left = 215.0 margin_right = 297.0 margin_bottom = 22.0 text = "Settings" -icon = SubResource( 6 ) +icon = SubResource( 8 ) items = [ "Change Font", null, 0, false, false, 0, 0, null, "", false ] [node name="version" type="Label" parent="FileEditorContainer/TobBar"] @@ -218,9 +242,9 @@ margin_top = 2.0 margin_right = 1000.0 margin_bottom = 19.0 size_flags_horizontal = 10 -custom_fonts/font = SubResource( 7 ) +custom_fonts/font = SubResource( 9 ) custom_colors/font_color = Color( 0.121569, 0.145098, 0.192157, 1 ) -text = "v1.7.4" +text = "v1.8.8" align = 1 [node name="SplitContainer" type="HSplitContainer" parent="FileEditorContainer"] @@ -239,7 +263,7 @@ margin_bottom = 574.0 margin_right = 153.0 margin_bottom = 570.0 size_flags_vertical = 3 -items = [ "sample.bbs", SubResource( 9 ), false, "sample.cfg", SubResource( 11 ), false, "sample.csv", SubResource( 13 ), false, "sample.html", SubResource( 15 ), false, "sample.ini", SubResource( 17 ), false, "sample.md", SubResource( 19 ), false, "sample.txt", SubResource( 21 ), false, "test.csv", SubResource( 23 ), false ] +items = [ "sample.bbs", SubResource( 11 ), false, "sample.cfg", SubResource( 13 ), false, "sample.html", SubResource( 15 ), false, "sample.ini", SubResource( 17 ), false, "sample.md", SubResource( 19 ), false, "sample.txt", SubResource( 21 ), false, "test.txt", SubResource( 23 ), false, "sample.csv", SubResource( 25 ), false, "translation.csv", SubResource( 27 ), false ] allow_reselect = true [node name="HSeparator" type="HSeparator" parent="FileEditorContainer/SplitContainer/FileContainer"] @@ -247,7 +271,7 @@ margin_top = 574.0 margin_right = 153.0 margin_bottom = 574.0 rect_min_size = Vector2( 2, 0 ) -custom_styles/separator = SubResource( 24 ) +custom_styles/separator = SubResource( 28 ) custom_constants/separation = 0 [node name="EditorContainer" type="VBoxContainer" parent="FileEditorContainer/SplitContainer"] @@ -271,7 +295,7 @@ margin_right = 653.0 margin_bottom = 24.0 mouse_filter = 1 size_flags_horizontal = 3 -text = "res://test.csv" +text = "res://addons/file-editor/file.samples/translation.csv" editable = false [node name="wrap_button" type="OptionButton" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"] @@ -355,10 +379,13 @@ margin_left = 222.0 margin_top = 132.0 margin_right = -221.0 margin_bottom = -131.0 -window_title = "Select a Font" +window_title = "Open a File" resizable = true mode = 0 access = 2 filters = PoolStringArray( "*.TTF", "*.ttf" ) +show_hidden_files = true current_dir = "/COMPUTER/GodotEngine/GDScript/[Plugin]FileEditor" current_path = "/COMPUTER/GodotEngine/GDScript/[Plugin]FileEditor/" + +[connection signal="confirmed" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_confirmed"] diff --git a/addons/file-editor/scenes/FileScene.tscn b/addons/file-editor/scenes/FileScene.tscn deleted file mode 100644 index 54bf071..0000000 --- a/addons/file-editor/scenes/FileScene.tscn +++ /dev/null @@ -1,144 +0,0 @@ -[gd_scene load_steps=12 format=2] - -[ext_resource path="res://addons/file-editor/scripts/FileScene.gd" type="Script" id=1] -[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=2] - -[sub_resource type="StyleBoxFlat" id=1] -content_margin_left = 10.0 -content_margin_right = 10.0 -bg_color = Color( 0.145098, 0.172549, 0.231373, 1 ) - -[sub_resource type="StyleBoxEmpty" id=2] - -[sub_resource type="StyleBoxEmpty" id=3] - -[sub_resource type="StyleBoxEmpty" id=4] - -[sub_resource type="StyleBoxEmpty" id=5] - -[sub_resource type="StyleBoxEmpty" id=6] - -[sub_resource type="StyleBoxEmpty" id=7] - -[sub_resource type="StyleBoxEmpty" id=8] - -[sub_resource type="DynamicFont" id=9] -font_data = ExtResource( 2 ) - -[node name="filename" type="VBoxContainer"] -anchor_right = 1.0 -anchor_bottom = 1.0 -size_flags_vertical = 3 -script = ExtResource( 1 ) - -[node name="HSeparator" type="HSeparator" parent="."] -margin_right = 1024.0 -margin_bottom = 4.0 - -[node name="TopBar" type="HBoxContainer" parent="."] -margin_top = 8.0 -margin_right = 1024.0 -margin_bottom = 28.0 - -[node name="VSeparator" type="VSeparator" parent="TopBar"] -margin_right = 4.0 -margin_bottom = 20.0 - -[node name="FileButton" type="MenuButton" parent="TopBar"] -margin_left = 8.0 -margin_right = 51.0 -margin_bottom = 20.0 -custom_styles/hover = SubResource( 1 ) -custom_styles/normal = SubResource( 1 ) -text = "File" -flat = false -items = [ "Save File", null, 0, false, false, 0, 0, null, "", false, "Save file As...", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, -1, 0, null, "", true, "Normal Preview", null, 0, false, false, 2, 0, null, "", false, "BBCode Preview", null, 0, false, false, 3, 0, null, "", false, "Markdown Preview", null, 0, false, false, 4, 0, null, "", false, "HTML Preview", null, 0, false, false, 5, 0, null, "", false ] - -[node name="filepath" type="Label" parent="TopBar"] -margin_left = 523.0 -margin_top = 3.0 -margin_right = 523.0 -margin_bottom = 17.0 -size_flags_horizontal = 6 - -[node name="close_btn" type="Button" parent="TopBar"] -margin_left = 996.0 -margin_right = 1016.0 -margin_bottom = 20.0 -size_flags_horizontal = 8 -text = "X" - -[node name="VSeparator2" type="VSeparator" parent="TopBar"] -margin_left = 1020.0 -margin_right = 1024.0 -margin_bottom = 20.0 - -[node name="TextEditor" type="TextEdit" parent="."] -margin_top = 32.0 -margin_right = 1024.0 -margin_bottom = 577.0 -size_flags_vertical = 3 -syntax_highlighting = true -show_line_numbers = true -breakpoint_gutter = true -highlight_all_occurrences = true -smooth_scrolling = true -wrap_enabled = true -caret_blink = true -caret_blink_speed = 1.0 -caret_moving_by_right_click = false - -[node name="FileInfo" type="HBoxContainer" parent="."] -margin_top = 581.0 -margin_right = 1024.0 -margin_bottom = 600.0 -custom_constants/separation = 2 - -[node name="VSeparator4" type="VSeparator" parent="FileInfo"] -margin_right = 5.0 -margin_bottom = 19.0 -rect_min_size = Vector2( 5, 0 ) -custom_styles/separator = SubResource( 2 ) - -[node name="lastmodified_icon" type="TextureRect" parent="FileInfo"] -margin_left = 7.0 -margin_right = 7.0 -margin_bottom = 19.0 -stretch_mode = 4 - -[node name="Label" type="Label" parent="FileInfo"] -margin_left = 9.0 -margin_top = 2.0 -margin_right = 134.0 -margin_bottom = 16.0 -text = "Last modified time:" - -[node name="lastmodified" type="Label" parent="FileInfo"] -margin_left = 136.0 -margin_top = 2.0 -margin_right = 136.0 -margin_bottom = 16.0 - -[node name="Readonly" type="CheckBox" parent="FileInfo"] -margin_left = 939.0 -margin_right = 1018.0 -margin_bottom = 19.0 -size_flags_horizontal = 10 -custom_styles/hover = SubResource( 3 ) -custom_styles/pressed = SubResource( 4 ) -custom_styles/focus = SubResource( 5 ) -custom_styles/disabled = SubResource( 6 ) -custom_styles/hover_pressed = SubResource( 7 ) -custom_styles/normal = SubResource( 8 ) -custom_fonts/font = SubResource( 9 ) -custom_colors/font_color = Color( 0.145098, 0.172549, 0.231373, 1 ) -custom_colors/font_color_pressed = Color( 1, 1, 1, 1 ) -text = "Can Edit" -flat = true - -[node name="VSeparator3" type="VSeparator" parent="FileInfo"] -margin_left = 1020.0 -margin_right = 1024.0 -margin_bottom = 19.0 -rect_min_size = Vector2( 4, 0 ) -[connection signal="text_changed" from="TextEditor" to="." method="_on_TextEditor_text_changed"] diff --git a/addons/file-editor/scenes/VanillaEditor.tscn b/addons/file-editor/scenes/VanillaEditor.tscn index 7089862..20d7fd5 100644 --- a/addons/file-editor/scenes/VanillaEditor.tscn +++ b/addons/file-editor/scenes/VanillaEditor.tscn @@ -205,6 +205,7 @@ custom_colors/font_color = Color( 0.145098, 0.172549, 0.231373, 1 ) custom_colors/font_color_pressed = Color( 1, 1, 1, 1 ) text = "Can Edit" flat = true + [connection signal="text_changed" from="TextEditor" to="." method="_on_TextEditor_text_changed"] [connection signal="focus_entered" from="SearchBox/LineEdit" to="." method="_on_LineEdit_focus_entered"] [connection signal="text_changed" from="SearchBox/LineEdit" to="." method="_on_LineEdit_text_changed"] diff --git a/addons/file-editor/scripts/CSVEditor.gd b/addons/file-editor/scripts/CSVEditor.gd index 00a2bb9..ec52704 100644 --- a/addons/file-editor/scripts/CSVEditor.gd +++ b/addons/file-editor/scripts/CSVEditor.gd @@ -59,502 +59,502 @@ var GoogleTranslate : = GoogleTranslateAPI.new() # Called when the node enters the scene tree for the first time. func _ready(): - error_lbl.hide() - _connect_signals() - _load_icons() - _add_shortcuts() - - add_child(GoogleTranslate) + error_lbl.hide() + _connect_signals() + _load_icons() + _add_shortcuts() + + add_child(GoogleTranslate) func _add_shortcuts() -> void: - var hotkey - - hotkey = InputEventKey.new() - hotkey.scancode = KEY_R - hotkey.alt = true - edit_menu_options.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) - - hotkey = InputEventKey.new() - hotkey.scancode = KEY_C - hotkey.alt = true - edit_menu_options.set_item_accelerator(1,hotkey.get_scancode_with_modifiers()) - - hotkey = InputEventKey.new() - hotkey.scancode = KEY_D - hotkey.alt = true - edit_menu_options.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) - - hotkey = InputEventKey.new() - hotkey.scancode = KEY_R - hotkey.alt = true - hotkey.shift = true - edit_menu_options.set_item_accelerator(3,hotkey.get_scancode_with_modifiers()) - - hotkey = InputEventKey.new() - hotkey.scancode = KEY_C - hotkey.alt = true - hotkey.shift = true - edit_menu_options.set_item_accelerator(4,hotkey.get_scancode_with_modifiers()) + var hotkey + + hotkey = InputEventKey.new() + hotkey.scancode = KEY_R + hotkey.alt = true + edit_menu_options.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) + + hotkey = InputEventKey.new() + hotkey.scancode = KEY_C + hotkey.alt = true + edit_menu_options.set_item_accelerator(1,hotkey.get_scancode_with_modifiers()) + + hotkey = InputEventKey.new() + hotkey.scancode = KEY_D + hotkey.alt = true + edit_menu_options.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) + + hotkey = InputEventKey.new() + hotkey.scancode = KEY_R + hotkey.alt = true + hotkey.shift = true + edit_menu_options.set_item_accelerator(3,hotkey.get_scancode_with_modifiers()) + + hotkey = InputEventKey.new() + hotkey.scancode = KEY_C + hotkey.alt = true + hotkey.shift = true + edit_menu_options.set_item_accelerator(4,hotkey.get_scancode_with_modifiers()) func _connect_signals() -> void: - align_menu_opitons.connect("id_pressed", self, "_on_align_pressed") - edit_menu_options.connect("id_pressed", self, "_on_edit_pressed") - settings_menu_options.connect("id_pressed",self, "_on_settings_pressed") - readonly_btn.connect("toggled", self, "_is_readonly") - edit_dialog.connect("confirmed", self, "_on_edit_confirmed") - editor_settings.connect("confirmed", self, "_on_editor_settings_confirmed") - - $EditDialog/Options/Columns/LessBtn.connect("pressed", self, "_on_less_pressed") - $EditDialog/Options/Rows/LessBtn.connect("pressed", self, "_on_less_pressed") - $EditDialog/Options/Columns/MoreBtn.connect("pressed", self, "_on_more_pressed") - $EditDialog/Options/Rows/MoreBtn.connect("pressed", self, "_on_more_pressed") - - $TranslationDialog/TranslationContainer/AuthToken/SecretCheck.connect("toggled", self, "_on_secret_check") - $TranslationDialog/TranslationContainer/Buttons/AcceptBtn.connect("pressed", self, "_on_translation_accept") - $TranslationDialog/TranslationContainer/Buttons/GetTokenBtn.connect("pressed", how_to, "popup") - source_lang_menu.connect("item_selected", self , "_on_source_lang_selected") - - keys_tree.connect("cell_selected", self , "_on_keys_select_all_pressed") - target_langs_tree.connect("cell_selected", self , "_on_langs_select_all_pressed") + align_menu_opitons.connect("id_pressed", self, "_on_align_pressed") + edit_menu_options.connect("id_pressed", self, "_on_edit_pressed") + settings_menu_options.connect("id_pressed",self, "_on_settings_pressed") + readonly_btn.connect("toggled", self, "_is_readonly") + edit_dialog.connect("confirmed", self, "_on_edit_confirmed") + editor_settings.connect("confirmed", self, "_on_editor_settings_confirmed") + + $EditDialog/Options/Columns/LessBtn.connect("pressed", self, "_on_less_pressed") + $EditDialog/Options/Rows/LessBtn.connect("pressed", self, "_on_less_pressed") + $EditDialog/Options/Columns/MoreBtn.connect("pressed", self, "_on_more_pressed") + $EditDialog/Options/Rows/MoreBtn.connect("pressed", self, "_on_more_pressed") + + $TranslationDialog/TranslationContainer/AuthToken/SecretCheck.connect("toggled", self, "_on_secret_check") + $TranslationDialog/TranslationContainer/Buttons/AcceptBtn.connect("pressed", self, "_on_translation_accept") + $TranslationDialog/TranslationContainer/Buttons/GetTokenBtn.connect("pressed", how_to, "popup") + source_lang_menu.connect("item_selected", self , "_on_source_lang_selected") + + keys_tree.connect("cell_selected", self , "_on_keys_select_all_pressed") + target_langs_tree.connect("cell_selected", self , "_on_langs_select_all_pressed") func _on_keys_select_all_pressed(): - if keys_tree.get_selected() != keys_tree.get_root(): - return - var check : bool = not keys_tree.get_root().is_checked(0) - var first_key : TreeItem = keys_tree.get_root().get_children() - set_checked(first_key, check) - for key in range(0, keys.size()-1): - first_key = set_checked(first_key.get_next(), check) + if keys_tree.get_selected() != keys_tree.get_root(): + return + var check : bool = not keys_tree.get_root().is_checked(0) + var first_key : TreeItem = keys_tree.get_root().get_children() + set_checked(first_key, check) + for key in range(0, keys.size()-1): + first_key = set_checked(first_key.get_next(), check) func _on_langs_select_all_pressed(): - if target_langs_tree.get_selected() != target_langs_tree.get_root(): - return - var check : bool = not target_langs_tree.get_root().is_checked(0) - var first_key : TreeItem = target_langs_tree.get_root().get_children() - set_checked(first_key, check) - for key in range(0, keys.size()-1): - first_key = set_checked(first_key.get_next(), check) + if target_langs_tree.get_selected() != target_langs_tree.get_root(): + return + var check : bool = not target_langs_tree.get_root().is_checked(0) + var first_key : TreeItem = target_langs_tree.get_root().get_children() + set_checked(first_key, check) + for key in range(0, keys.size()-1): + first_key = set_checked(first_key.get_next(), check) func set_checked(key : TreeItem, to_check : bool) -> TreeItem: - if key!=null and key.is_editable(0): key.set_checked(0, to_check) - return key + if key!=null and key.is_editable(0): key.set_checked(0, to_check) + return key func _load_icons() -> void: - $Container/Menu/AlignMenu.set_button_icon(IconLoader.load_icon_from_name("align")) - $Container/Menu/EditMenu.set_button_icon(IconLoader.load_icon_from_name("edit_")) - $Container/Menu/SettingsMenu.set_button_icon(IconLoader.load_icon_from_name("settings")) - - align_menu_opitons.set_item_icon(0,IconLoader.load_icon_from_name("text-left")) - align_menu_opitons.set_item_icon(1,IconLoader.load_icon_from_name("text-center")) - align_menu_opitons.set_item_icon(2,IconLoader.load_icon_from_name("text-right")) - align_menu_opitons.set_item_icon(3,IconLoader.load_icon_from_name("text-fill")) - - edit_menu_options.set_item_icon(0,IconLoader.load_icon_from_name("row")) - edit_menu_options.set_item_icon(1,IconLoader.load_icon_from_name("column")) - edit_menu_options.set_item_icon(2,IconLoader.load_icon_from_name("delimiter")) - edit_menu_options.set_item_icon(3,IconLoader.load_icon_from_name("drop_row")) - edit_menu_options.set_item_icon(4,IconLoader.load_icon_from_name("drop_column")) - - readonly_btn.set("custom_icons/checked",IconLoader.load_icon_from_name("read")) - readonly_btn.set("custom_icons/unchecked",IconLoader.load_icon_from_name("edit")) - - settings_menu_options.set_item_icon(0, IconLoader.load_icon_from_name("tools")) - settings_menu_options.set_item_icon(1, IconLoader.load_icon_from_name("translate")) + $Container/Menu/AlignMenu.set_button_icon(IconLoader.load_icon_from_name("align")) + $Container/Menu/EditMenu.set_button_icon(IconLoader.load_icon_from_name("edit_")) + $Container/Menu/SettingsMenu.set_button_icon(IconLoader.load_icon_from_name("settings")) + + align_menu_opitons.set_item_icon(0,IconLoader.load_icon_from_name("text-left")) + align_menu_opitons.set_item_icon(1,IconLoader.load_icon_from_name("text-center")) + align_menu_opitons.set_item_icon(2,IconLoader.load_icon_from_name("text-right")) + align_menu_opitons.set_item_icon(3,IconLoader.load_icon_from_name("text-fill")) + + edit_menu_options.set_item_icon(0,IconLoader.load_icon_from_name("row")) + edit_menu_options.set_item_icon(1,IconLoader.load_icon_from_name("column")) + edit_menu_options.set_item_icon(2,IconLoader.load_icon_from_name("delimiter")) + edit_menu_options.set_item_icon(3,IconLoader.load_icon_from_name("drop_row")) + edit_menu_options.set_item_icon(4,IconLoader.load_icon_from_name("drop_column")) + + readonly_btn.set("custom_icons/checked",IconLoader.load_icon_from_name("read")) + readonly_btn.set("custom_icons/unchecked",IconLoader.load_icon_from_name("edit")) + + settings_menu_options.set_item_icon(0, IconLoader.load_icon_from_name("tools")) + settings_menu_options.set_item_icon(1, IconLoader.load_icon_from_name("translate")) func clear_editor() -> void: - for column in Columns.get_children(): - if not column in [_zero_column, _column_head]: - column.free() - for row in _zero_column.get_children(): - if not row.get_name() in ["0","1"]: - row.free() - for label in _column_head.get_children(): - if not label.get_text() in ["@", "1"]: - label.free() + for column in Columns.get_children(): + if not column in [_zero_column, _column_head]: + column.free() + for row in _zero_column.get_children(): + if not row.get_name() in ["0","1"]: + row.free() + for label in _column_head.get_children(): + if not label.get_text() in ["@", "1"]: + label.free() func open_csv_file(filepath : String, csv_delimiter : String = ";") -> void: - if rows_count != 0 and columns_count != 0: clear_editor() - self.file_path = filepath - self.csv_delimiter = csv_delimiter - var csv = File.new() - csv.open(filepath,File.READ) - var rows : Array = [] - var columns : int = 0 - if not csv.get_as_text().empty(): - while not csv.eof_reached(): - var csv_line = csv.get_csv_line(csv_delimiter) - if Array(csv_line) != [""]: - columns = csv_line.size() if columns < csv_line.size() else columns - if csv_line.size() < columns: - csv_line.resize(columns) - rows.append(csv_line) - csv.close() - - if columns != 0: - columns_count = columns - if rows.size() != 0: - rows_count = rows.size() - - load_file_properties() - load_file_in_table(rows,columns) + if rows_count != 0 and columns_count != 0: clear_editor() + self.file_path = filepath + self.csv_delimiter = csv_delimiter + var csv = File.new() + csv.open(filepath,File.READ) + var rows : Array = [] + var columns : int = 0 + if not csv.get_as_text().empty(): + while not csv.eof_reached(): + var csv_line = csv.get_csv_line(csv_delimiter) + if Array(csv_line) != [""]: + columns = csv_line.size() if columns < csv_line.size() else columns + if csv_line.size() < columns: + csv_line.resize(columns) + rows.append(csv_line) + csv.close() + + if columns != 0: + columns_count = columns + if rows.size() != 0: + rows_count = rows.size() + + load_file_properties() + load_file_in_table(rows,columns) func load_file_properties() -> void: - rows_count_lbl.set_text(str(rows_count)) - columns_count_lbl.set_text(str(columns_count)) - csv_delimiter_lbl.set_text(csv_delimiter) + rows_count_lbl.set_text(str(rows_count)) + columns_count_lbl.set_text(str(columns_count)) + csv_delimiter_lbl.set_text(csv_delimiter) func load_csv_grid(rows : Array, columns : int) -> void: - for row in range(1,rows.size()): - var csv_field : LineEdit = _row_line.duplicate(8) - _zero_column.add_child(csv_field) - var csv_field_label : Label = _row_label.duplicate(8) - _column_head.add_child(csv_field_label) - csv_field_label.set_text(str(row+1)) - - for column in range(1,columns): - var csv_column : VBoxContainer = _zero_column.duplicate(8) - Columns.add_child(csv_column) - csv_column.get_node("0").set_text(str(column+1)) - - for column in range(1, columns_count+1): - for row in range(1, rows_count+1): - if Columns.get_child(column).get_child(row).is_connected("text_changed", self, "_on_editing_cell"): - Columns.get_child(column).get_child(row).connect("text_changed", self, "_on_editing_cell", [Vector2(column, row)]) + for row in range(1,rows.size()): + var csv_field : LineEdit = _row_line.duplicate(8) + _zero_column.add_child(csv_field) + var csv_field_label : Label = _row_label.duplicate(8) + _column_head.add_child(csv_field_label) + csv_field_label.set_text(str(row+1)) + + for column in range(1,columns): + var csv_column : VBoxContainer = _zero_column.duplicate(8) + Columns.add_child(csv_column) + csv_column.get_node("0").set_text(str(column+1)) + + for column in range(1, columns_count+1): + for row in range(1, rows_count+1): + if Columns.get_child(column).get_child(row).is_connected("text_changed", self, "_on_editing_cell"): + Columns.get_child(column).get_child(row).connect("text_changed", self, "_on_editing_cell", [Vector2(column, row)]) func load_file_in_table(rows : Array, columns : int) -> void: - load_csv_grid(rows, columns) - - for row in range(0,rows.size()): - for column in range(0,columns): - Columns.get_child(column+1).get_child(row+1).set_text(rows[row][column]) + load_csv_grid(rows, columns) + + for row in range(0,rows.size()): + for column in range(0,columns): + Columns.get_child(column+1).get_child(row+1).set_text(rows[row][column]) func save_table() -> void: - var file = File.new() - file.open(file_path, File.WRITE) - for row in range(0, rows_count): - var current_row : PoolStringArray = [] - for column in range(0, columns_count): - current_row.append(Columns.get_child(column+1).get_child(row+1).get_text()) - file.store_csv_line(current_row, csv_delimiter) - file.close() - - emit_signal("update_file") + var file = File.new() + file.open(file_path, File.WRITE) + for row in range(0, rows_count): + var current_row : PoolStringArray = [] + for column in range(0, columns_count): + current_row.append(Columns.get_child(column+1).get_child(row+1).get_text()) + file.store_csv_line(current_row, csv_delimiter) + file.close() + + emit_signal("update_file") func _on_editing_cell(new_text : String, cell_position : Vector2) -> void: - emit_signal("editing_file") + emit_signal("editing_file") func _on_secret_check(toggled : bool) -> void: - token_line.set_secret(toggled) + token_line.set_secret(toggled) func _on_translation_accept() -> void: - error_lbl.hide() - var token : String = token_line.get_text() - var tw : Tween = Tween.new() - if token in ["", " "]: - error_lbl.show() - error_lbl.set_text("An Auth Token is required in order to make translation requests to Google Translate API.") - add_child(tw) - tw.interpolate_property($TranslationDialog/TranslationContainer/AuthToken,"modulate",Color("#ffffff"),Color("#ff0000"),0.5,Tween.TRANS_BACK,Tween.EASE_OUT_IN) - tw.start() - return - tw.queue_free() - $TranslationDialog/TranslationContainer/AuthToken.set_modulate(Color("#ffffff")) - GoogleTranslate.set_token(token) - - var source_lang_idx : int = langs.find(source_lang_menu.get_text()) if source_lang_menu.get_selected() == -1 else source_lang_menu.get_selected() - source_lang_idx += 2 # + zero_column + "keys" column - - var target_langs_idx : Array = [] - var first_lang : TreeItem = target_langs_tree.get_root().get_children() - get_checked(first_lang, target_langs_idx, langs) - for lang in range(0, langs.size()-1): - first_lang = get_checked(first_lang.get_next(), target_langs_idx, langs) - - if target_langs_idx.empty() : - error_lbl.show() - error_lbl.set_text("You must select at least one target language to translate.") - return - - var selected_keys_idx : Array = [] - var first_key : TreeItem = keys_tree.get_root().get_children() - get_checked(first_key, selected_keys_idx, keys) - for key in range(0, keys.size()-1): - first_key = get_checked(first_key.get_next(), selected_keys_idx, keys) - - if selected_keys_idx.empty() : - error_lbl.show() - error_lbl.set_text("You must select at least one key to translate.") - return - - var target_keys : Array = [] - for key_idx in selected_keys_idx: - target_keys.append(Columns.get_child(source_lang_idx).get_child(key_idx).get_text().replace("\"","")) - - for lang_idx in target_langs_idx: - GoogleTranslate.request_translation( - Columns.get_child(source_lang_idx).get_child(1).get_text(), - Columns.get_child(lang_idx).get_child(1).get_text(), - target_keys - ) - var response : Array = yield(GoogleTranslate, "translation_received") - if response[0] != 200: - error_lbl.show() - error_lbl.set_text(response[1].error.errors[0].message) - return - var translation_table : Array = response[1].data.translations - var i : int = 0 - for key in selected_keys_idx: - Columns.get_child(lang_idx).get_child(key).set_text("\"%s\""%translation_table[i].translatedText) - i+=1 - - translation_dialog.hide() + error_lbl.hide() + var token : String = token_line.get_text() + var tw : Tween = Tween.new() + if token in ["", " "]: + error_lbl.show() + error_lbl.set_text("An Auth Token is required in order to make translation requests to Google Translate API.") + add_child(tw) + tw.interpolate_property($TranslationDialog/TranslationContainer/AuthToken,"modulate",Color("#ffffff"),Color("#ff0000"),0.5,Tween.TRANS_BACK,Tween.EASE_OUT_IN) + tw.start() + return + tw.queue_free() + $TranslationDialog/TranslationContainer/AuthToken.set_modulate(Color("#ffffff")) + GoogleTranslate.set_token(token) + + var source_lang_idx : int = langs.find(source_lang_menu.get_text()) if source_lang_menu.get_selected() == -1 else source_lang_menu.get_selected() + source_lang_idx += 2 # + zero_column + "keys" column + + var target_langs_idx : Array = [] + var first_lang : TreeItem = target_langs_tree.get_root().get_children() + get_checked(first_lang, target_langs_idx, langs) + for lang in range(0, langs.size()-1): + first_lang = get_checked(first_lang.get_next(), target_langs_idx, langs) + + if target_langs_idx.empty() : + error_lbl.show() + error_lbl.set_text("You must select at least one target language to translate.") + return + + var selected_keys_idx : Array = [] + var first_key : TreeItem = keys_tree.get_root().get_children() + get_checked(first_key, selected_keys_idx, keys) + for key in range(0, keys.size()-1): + first_key = get_checked(first_key.get_next(), selected_keys_idx, keys) + + if selected_keys_idx.empty() : + error_lbl.show() + error_lbl.set_text("You must select at least one key to translate.") + return + + var target_keys : Array = [] + for key_idx in selected_keys_idx: + target_keys.append(Columns.get_child(source_lang_idx).get_child(key_idx).get_text().replace("\"","")) + + for lang_idx in target_langs_idx: + GoogleTranslate.request_translation( + Columns.get_child(source_lang_idx).get_child(1).get_text(), + Columns.get_child(lang_idx).get_child(1).get_text(), + target_keys + ) + var response : Array = yield(GoogleTranslate, "translation_received") + if response[0] != 200: + error_lbl.show() + error_lbl.set_text(response[1].error.errors[0].message) + return + var translation_table : Array = response[1].data.translations + var i : int = 0 + for key in selected_keys_idx: + Columns.get_child(lang_idx).get_child(key).set_text("\"%s\""%translation_table[i].translatedText) + i+=1 + + translation_dialog.hide() func get_checked(tree_item : TreeItem, idx_array : Array, source_array : Array) -> TreeItem: - if tree_item.is_checked(0): - idx_array.append(source_array.find(tree_item.get_text(0)) + 2) - return tree_item + if tree_item.is_checked(0): + idx_array.append(source_array.find(tree_item.get_text(0)) + 2) + return tree_item func _on_align_pressed(id : int) -> void: - for column in range(1, columns_count+1): - for row in range(1, rows_count+1): - Columns.get_child(column).get_child(row).set_align(id) + for column in range(1, columns_count+1): + for row in range(1, rows_count+1): + Columns.get_child(column).get_child(row).set_align(id) # If an Edit button is pressed func _on_edit_pressed(id : int) -> void: - for child in range(0, edit_dialog.get_node("Options").get_child_count()): - edit_dialog.get_node("Options").get_child(child).set_visible((child == id)) - - edit_dialog.rect_min_size = Vector2.ZERO - edit_dialog.rect_size = Vector2(250,100) - new_rows_line.set_text(str(0)) - new_columns_line.set_text(str(0)) - new_delimiter_line.set_text(csv_delimiter) - - for column in drop_columns.get_children(): - column.queue_free() - - for row in drop_rows.get_children(): - row.queue_free() - - - match id: - 0: - edit_dialog.window_title = ("Add Rows") - 1: - edit_dialog.window_title = ("Add Columns") - 2: - edit_dialog.window_title = ("Change Delimiter") - 3: - edit_dialog.window_title = ("Drop Rows") - for row in range(0, rows_count): - var check : CheckBox = CheckBox.new() - drop_rows.add_child(check) - check.set_text(str(row+1)) - 4: - edit_dialog.window_title = ("Drop Columns") - for column in range(0, columns_count): - var check : CheckBox = CheckBox.new() - drop_columns.add_child(check) - check.set_text(str(column+1)) - - edit_dialog.popup() + for child in range(0, edit_dialog.get_node("Options").get_child_count()): + edit_dialog.get_node("Options").get_child(child).set_visible((child == id)) + + edit_dialog.rect_min_size = Vector2.ZERO + edit_dialog.rect_size = Vector2(250,100) + new_rows_line.set_text(str(0)) + new_columns_line.set_text(str(0)) + new_delimiter_line.set_text(csv_delimiter) + + for column in drop_columns.get_children(): + column.queue_free() + + for row in drop_rows.get_children(): + row.queue_free() + + + match id: + 0: + edit_dialog.window_title = ("Add Rows") + 1: + edit_dialog.window_title = ("Add Columns") + 2: + edit_dialog.window_title = ("Change Delimiter") + 3: + edit_dialog.window_title = ("Drop Rows") + for row in range(0, rows_count): + var check : CheckBox = CheckBox.new() + drop_rows.add_child(check) + check.set_text(str(row+1)) + 4: + edit_dialog.window_title = ("Drop Columns") + for column in range(0, columns_count): + var check : CheckBox = CheckBox.new() + drop_columns.add_child(check) + check.set_text(str(column+1)) + + edit_dialog.popup() # If Edit Option is confirmed func _on_edit_confirmed() -> void: - # Add new Columns - if edit_columns.is_visible(): - var ref_column : VBoxContainer = _zero_column.duplicate(8) - for row in ref_column.get_children(): - row.set_text("") - var new_columns : int = new_columns_line.get_text() as int - for new_column in range(0,new_columns): - var column : VBoxContainer = ref_column.duplicate(8) - column.get_child(0).set_text((columns_count+new_column+1) as String) - Columns.add_child(column) - columns_count+=new_columns - - # Add new Rows - if edit_rows.is_visible(): - var new_rows : int = new_rows_line.get_text() as int - for column in range(1, columns_count+1): - for row in range(0, new_rows): - Columns.get_child(column).add_child(LineEdit.new()) - for row in range(0, new_rows): - var lbl : Label = Label.new() - lbl.set_text(str(rows_count+row+1)) - _column_head.add_child(lbl) - rows_count+=new_rows - - # Change delimiter - if edit_delimiter.is_visible(): - assert(not new_delimiter_line.get_text() in ["", " "], "Delimiter not valid.") - open_csv_file(file_path, new_delimiter_line.get_text()) - load_file_properties() - - # Drop rows - if drop_rows.is_visible(): - var rows_to_drop : PoolIntArray = [] - for row in drop_rows.get_children(): - if row.is_pressed(): rows_to_drop.append(int(row.get_text())) - drop_rows(rows_to_drop) - - # Drop Columns - if drop_columns.is_visible(): - var columns_to_drop : PoolIntArray = [] - for column in drop_columns.get_children(): - if column.is_pressed(): columns_to_drop.append(int(column.get_text())) - drop_columns(columns_to_drop) + # Add new Columns + if edit_columns.is_visible(): + var ref_column : VBoxContainer = _zero_column.duplicate(8) + for row in ref_column.get_children(): + row.set_text("") + var new_columns : int = new_columns_line.get_text() as int + for new_column in range(0,new_columns): + var column : VBoxContainer = ref_column.duplicate(8) + column.get_child(0).set_text((columns_count+new_column+1) as String) + Columns.add_child(column) + columns_count+=new_columns + + # Add new Rows + if edit_rows.is_visible(): + var new_rows : int = new_rows_line.get_text() as int + for column in range(1, columns_count+1): + for row in range(0, new_rows): + Columns.get_child(column).add_child(LineEdit.new()) + for row in range(0, new_rows): + var lbl : Label = Label.new() + lbl.set_text(str(rows_count+row+1)) + _column_head.add_child(lbl) + rows_count+=new_rows + + # Change delimiter + if edit_delimiter.is_visible(): + assert(not new_delimiter_line.get_text() in ["", " "], "Delimiter not valid.") + open_csv_file(file_path, new_delimiter_line.get_text()) + load_file_properties() + + # Drop rows + if drop_rows.is_visible(): + var rows_to_drop : PoolIntArray = [] + for row in drop_rows.get_children(): + if row.is_pressed(): rows_to_drop.append(int(row.get_text())) + drop_rows(rows_to_drop) + + # Drop Columns + if drop_columns.is_visible(): + var columns_to_drop : PoolIntArray = [] + for column in drop_columns.get_children(): + if column.is_pressed(): columns_to_drop.append(int(column.get_text())) + drop_columns(columns_to_drop) func drop_columns(columns_to_drop : PoolIntArray) -> void: - for column in columns_to_drop: - Columns.get_child(column).queue_free() - columns_count-=1 - for column in range(1, columns_count+1): - Columns.get_child(column).get_child(0).set_text(str(column)) - - save_table() + for column in columns_to_drop: + Columns.get_child(column).queue_free() + columns_count-=1 + for column in range(1, columns_count+1): + Columns.get_child(column).get_child(0).set_text(str(column)) + + save_table() func drop_rows(rows_to_drop : PoolIntArray) -> void: - for column in range(0, columns_count+1): - for row in rows_to_drop: - Columns.get_child(column).get_child(row).queue_free() - rows_count-=rows_to_drop.size() - for row in range(1, rows_count+1): - _column_head.get_child(row).set_text(str(row)) - - save_table() + for column in range(0, columns_count+1): + for row in rows_to_drop: + Columns.get_child(column).get_child(row).queue_free() + rows_count-=rows_to_drop.size() + for row in range(1, rows_count+1): + _column_head.get_child(row).set_text(str(row)) + + save_table() var keys : Array = [] var langs : Array = [] #var source_lang : String = "" func load_translation_table() -> void: - keys.clear() - langs.clear() - for column in range(2, columns_count+1): - langs.append(Columns.get_child(column).get_child(1).get_text()) - for row in range(2, rows_count+1): - keys.append(Columns.get_child(1).get_child(row).get_text()) - - create_key_tree(keys) - load_source_lang(langs) - create_lang_tree(langs) + keys.clear() + langs.clear() + for column in range(2, columns_count+1): + langs.append(Columns.get_child(column).get_child(1).get_text()) + for row in range(2, rows_count+1): + keys.append(Columns.get_child(1).get_child(row).get_text()) + + create_key_tree(keys) + load_source_lang(langs) + create_lang_tree(langs) func load_source_lang(langs : Array) -> void: - source_lang_menu.clear() - var lang_popup : PopupMenu = source_lang_menu.get_popup() - for lang in langs: - lang_popup.add_item(lang) - source_lang_menu.set_text(langs[0]) + source_lang_menu.clear() + var lang_popup : PopupMenu = source_lang_menu.get_popup() + for lang in langs: + lang_popup.add_item(lang) + source_lang_menu.set_text(langs[0]) func create_key_tree(keys : Array) -> void: - keys_tree.clear() - keys_tree.set_column_titles_visible(true) - keys_tree.set_column_title(0, "Keys to translate") - var root : TreeItem = keys_tree.create_item() - root.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) - root.set_text(0, "Select/Deselect All") - root.set_editable(0, true) - for key in keys: - var child : TreeItem = keys_tree.create_item(root) - child.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) - child.set_editable(0, true) - child.set_text(0, key) + keys_tree.clear() + keys_tree.set_column_titles_visible(true) + keys_tree.set_column_title(0, "Keys to translate") + var root : TreeItem = keys_tree.create_item() + root.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + root.set_text(0, "Select/Deselect All") + root.set_editable(0, true) + for key in keys: + var child : TreeItem = keys_tree.create_item(root) + child.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + child.set_editable(0, true) + child.set_text(0, key) func create_lang_tree(target_langs : Array) -> void: - target_langs_tree.clear() - var root : TreeItem = target_langs_tree.create_item() - root.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) - root.set_text(0, "Select/Deselect All") - root.set_editable(0, true) - for lang in target_langs: - var child : TreeItem = target_langs_tree.create_item(root) - child.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) - child.set_editable(0, true) - child.set_text(0, lang) - - disable_source_lang(target_langs) + target_langs_tree.clear() + var root : TreeItem = target_langs_tree.create_item() + root.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + root.set_text(0, "Select/Deselect All") + root.set_editable(0, true) + for lang in target_langs: + var child : TreeItem = target_langs_tree.create_item(root) + child.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + child.set_editable(0, true) + child.set_text(0, lang) + + disable_source_lang(target_langs) func disable_source_lang(langs : Array) -> void: - var first_lang : TreeItem = target_langs_tree.get_root().get_children() - check_source_target_lang(first_lang) - for lang in range(0, langs.size()-1): - first_lang = check_source_target_lang(first_lang.get_next()) + var first_lang : TreeItem = target_langs_tree.get_root().get_children() + check_source_target_lang(first_lang) + for lang in range(0, langs.size()-1): + first_lang = check_source_target_lang(first_lang.get_next()) func check_source_target_lang(target : TreeItem) -> TreeItem : - if target.get_text(0) == source_lang_menu.get_text() : - target.set_checked(0, false) - target.set_editable(0, false) - target.set_selectable(0, false) - target.set_custom_bg_color(0, Color("64373737")) - else: - target.set_editable(0, true) - target.set_selectable(0, true) - target.set_custom_bg_color(0, Color.transparent) - return target + if target.get_text(0) == source_lang_menu.get_text() : + target.set_checked(0, false) + target.set_editable(0, false) + target.set_selectable(0, false) + target.set_custom_bg_color(0, Color("64373737")) + else: + target.set_editable(0, true) + target.set_selectable(0, true) + target.set_custom_bg_color(0, Color.transparent) + return target func _on_source_lang_selected(idx : int) -> void: - disable_source_lang(langs) + disable_source_lang(langs) func _on_settings_pressed(id : int) -> void: - match id: - 0: # Change CSV Editor Settings - editor_columns_length.set_text(str(Columns.get_child(1).get_child(1).get_size().x)) - editor_columns_spacing.set_text(str(Columns.get("custom_constants/separation"))) - editor_rows_spacing.set_text(str(Columns.get_child(1).get("custom_constants/separation"))) - editor_settings.popup() - 1: - load_translation_table() - translation_dialog.popup() + match id: + 0: # Change CSV Editor Settings + editor_columns_length.set_text(str(Columns.get_child(1).get_child(1).get_size().x)) + editor_columns_spacing.set_text(str(Columns.get("custom_constants/separation"))) + editor_rows_spacing.set_text(str(Columns.get_child(1).get("custom_constants/separation"))) + editor_settings.popup() + 1: + load_translation_table() + translation_dialog.popup() func _on_editor_settings_confirmed() -> void: - for column in range(0, columns_count+1): - Columns.get_child(column).set("custom_constants/separation", float(editor_rows_spacing.get_text())) - if column == 0: continue - Columns.get_child(column).get_child(1).set_custom_minimum_size(Vector2(float(editor_columns_length.get_text()), 0.0)) - Columns.set("custom_constants/separation", float(editor_columns_spacing.get_text())) + for column in range(0, columns_count+1): + Columns.get_child(column).set("custom_constants/separation", float(editor_rows_spacing.get_text())) + if column == 0: continue + Columns.get_child(column).get_child(1).set_custom_minimum_size(Vector2(float(editor_columns_length.get_text()), 0.0)) + Columns.set("custom_constants/separation", float(editor_columns_spacing.get_text())) func _on_less_pressed() -> void: - if edit_columns.is_visible(): - if int(new_columns_line.get_text()) > 0 : new_columns_line.set_text(str(int(new_columns_line.get_text())-1)) - if edit_rows.is_visible(): - if int(new_rows_line.get_text()) > 0 : new_rows_line.set_text(str(int(new_rows_line.get_text())-1)) + if edit_columns.is_visible(): + if int(new_columns_line.get_text()) > 0 : new_columns_line.set_text(str(int(new_columns_line.get_text())-1)) + if edit_rows.is_visible(): + if int(new_rows_line.get_text()) > 0 : new_rows_line.set_text(str(int(new_rows_line.get_text())-1)) func _on_more_pressed() -> void: - if edit_columns.is_visible(): - new_columns_line.set_text(str(int(new_columns_line.get_text())+1)) - if edit_rows.is_visible(): - new_rows_line.set_text(str(int(new_rows_line.get_text())+1)) + if edit_columns.is_visible(): + new_columns_line.set_text(str(int(new_columns_line.get_text())+1)) + if edit_rows.is_visible(): + new_rows_line.set_text(str(int(new_rows_line.get_text())+1)) # Set a LineEdit readonly property to TRUE or FALSE func _is_readonly(readonly : bool) -> void: - for column in range(1, columns_count+1): - for row in range(1, rows_count+1): - Columns.get_child(column).get_child(row).set_editable(not readonly) - edit_menu_options.set_item_disabled(0, readonly) - edit_menu_options.set_item_disabled(1, readonly) + for column in range(1, columns_count+1): + for row in range(1, rows_count+1): + Columns.get_child(column).get_child(row).set_editable(not readonly) + edit_menu_options.set_item_disabled(0, readonly) + edit_menu_options.set_item_disabled(1, readonly) # This is the loading function used to initially build this node. No need to use this anymore func _load(): - # Load Rows - for i in range(2,101): - # Load Row Headers - var lbl : Label = _row_label.duplicate() - _column_head.add_child(lbl) - lbl.set_text(str(i)) - lbl.set_owner(_column_head) - # Load First Column - var line : LineEdit = _row_line.duplicate() - _zero_column.add_child(line) - line.set_owner(_zero_column) - - # Load Columns - for i in range(1,26): - var column : VBoxContainer = _zero_column.duplicate() - var label : Label = column.get_node("A") - var _char : String = char(i+65) - label.set_text(_char) - label.set_name(_char) - Columns.add_child(column) - label.set_owner(Columns) + # Load Rows + for i in range(2,101): + # Load Row Headers + var lbl : Label = _row_label.duplicate() + _column_head.add_child(lbl) + lbl.set_text(str(i)) + lbl.set_owner(_column_head) + # Load First Column + var line : LineEdit = _row_line.duplicate() + _zero_column.add_child(line) + line.set_owner(_zero_column) + + # Load Columns + for i in range(1,26): + var column : VBoxContainer = _zero_column.duplicate() + var label : Label = column.get_node("A") + var _char : String = char(i+65) + label.set_text(_char) + label.set_name(_char) + Columns.add_child(column) + label.set_owner(Columns) diff --git a/addons/file-editor/scripts/FileEditor.gd b/addons/file-editor/scripts/FileEditor.gd index 5036f84..ffbdaaf 100644 --- a/addons/file-editor/scripts/FileEditor.gd +++ b/addons/file-editor/scripts/FileEditor.gd @@ -22,6 +22,8 @@ onready var SplitEditorContainer = $FileEditorContainer/SplitContainer/EditorCon onready var WrapBTN = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/wrap_button onready var MapBTN = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/map_button +onready var ConfirmationClose = $ConfirmationDialog + var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new() var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new() @@ -66,6 +68,8 @@ var current_ini_editor : Control var current_csv_editor : CSVEditor var current_font : DynamicFont +var editing_file : bool = false + func _ready(): if not Engine.is_editor_hint(): return @@ -162,12 +166,12 @@ func connect_signals(): SelectFontDialog.connect("file_selected",self,"_on_font_selected") func update_version(): - var plugin_version = "" - var config = ConfigFile.new() - var err = config.load("res://addons/file-editor/plugin.cfg") - if err == OK: - plugin_version = config.get_value("plugin","version") - Version.set_text("v"+plugin_version) + var plugin_version = "" + var config = ConfigFile.new() + var err = config.load("res://addons/file-editor/plugin.cfg") + if err == OK: + plugin_version = config.get_value("plugin","version") + Version.set_text("v"+plugin_version) func create_selected_file(): update_list() @@ -289,18 +293,17 @@ func _on_settingsbtn_pressed(index : int): func _on_font_selected(font_path : String): current_editor.set_font(font_path) LastOpenedFiles.store_editor_fonts(current_file_path.get_file(), font_path) -# Enable this part of code to apply the new font to all Vanilla Editors opened -# for file in [0,OpenFileList.get_child_count()]: -# OpenFileList.get_item_metadata(file)[0].set_font(dynamic_font) -# current_font = dynamic_font func _on_fileitem_pressed(index : int): current_file_index = index var selected_item_metadata = OpenFileList.get_item_metadata(current_file_index) var extension = selected_item_metadata[0].current_path.get_file().get_extension() - + if OpenFileList.get_item_text(current_file_index).begins_with("(*)"): + editing_file = true + else: + editing_file = false current_file_path = selected_item_metadata[0].current_path - if current_editor.visible: + if current_editor.visible or current_editor == null: current_editor.hide() current_editor = selected_item_metadata[0] current_editor.show() @@ -435,7 +438,7 @@ func open_in_inieditor(path : String) -> Control: func open_in_csveditor(path : String) -> Control: var extension = path.get_file().get_extension() - if extension == "csv": + if extension in ["csv", "txt"]: var csveditor = CsvEditor.instance() SplitEditorContainer.add_child(csveditor) csveditor.hide() @@ -450,51 +453,55 @@ func open_in_csveditor(path : String) -> Control: return null func close_file(index): - LastOpenedFiles.remove_opened_file(index,OpenFileList) - OpenFileList.remove_item(index) - OpenFileName.clear() - current_editor.queue_free() - - if index>0: - OpenFileList.select(OpenFileList.get_item_count()-1) - _on_fileitem_pressed(OpenFileList.get_item_count()-1) + if editing_file: + ConfirmationClose.popup() + else: + confirm_close(index) + +func confirm_close(index): + LastOpenedFiles.remove_opened_file(index,OpenFileList) + OpenFileList.remove_item(index) + OpenFileName.clear() + current_editor.queue_free() + if index > 0: + OpenFileList.select(index-1) + _on_fileitem_pressed(index-1) func _on_update_file(): -# current_editor.clean_editor() - var current_file : File = File.new() - current_file.open(current_file_path,File.READ) - - var current_content = current_file.get_as_text() - var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_file_path)) - - current_file.close() - - current_editor.new_file_open(current_content,last_modified,current_file_path) + var current_file : File = File.new() + current_file.open(current_file_path,File.READ) + + var current_content = current_file.get_as_text() + var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_file_path)) + + current_file.close() + + current_editor.new_file_open(current_content,last_modified,current_file_path) func delete_file(files_selected : PoolStringArray): - var dir = Directory.new() - for file in files_selected: - dir.remove(file) - - update_list() + var dir = Directory.new() + for file in files_selected: + dir.remove(file) + + update_list() func open_newfiledialogue(): - NewFileDialogue.popup() - NewFileDialogue.set_position(OS.get_screen_size()/2 - NewFileDialogue.get_size()/2) + NewFileDialogue.popup() + NewFileDialogue.set_position(OS.get_screen_size()/2 - NewFileDialogue.get_size()/2) func open_filelist(): - update_list() - FileList.popup() - FileList.set_position(OS.get_screen_size()/2 - FileList.get_size()/2) + update_list() + FileList.popup() + FileList.set_position(OS.get_screen_size()/2 - FileList.get_size()/2) func create_new_file(given_path : String): - var current_file = File.new() - current_file.open(given_path,File.WRITE) - if save_as : - current_file.store_line(current_editor.get_node("TextEditor").get_text()) - current_file.close() - - open_file(given_path) + var current_file = File.new() + current_file.open(given_path,File.WRITE) + if save_as : + current_file.store_line(current_editor.get_node("TextEditor").get_text()) + current_file.close() + + open_file(given_path) func save_file(current_path : String): print("Saving file: ",current_path) @@ -520,81 +527,83 @@ func save_file(current_path : String): if OpenFileList.get_item_text(current_file_index).begins_with("(*)"): OpenFileList.set_item_text(current_file_index,OpenFileList.get_item_text(current_file_index).lstrip("(*)")) - -# OpenFileList.set_item_metadata(current_file_index,[current_editor,open_in_inieditor(current_file_path),open_in_csveditor(current_file_path)]) + editing_file = false update_list() func clean_editor() -> void : - for inieditor in get_tree().get_nodes_in_group("ini_editor"): - inieditor.queue_free() - for vanillaeditor in get_tree().get_nodes_in_group("vanilla_editor"): - vanillaeditor.queue_free() - OpenFileName.clear() - OpenFileList.clear() + for inieditor in get_tree().get_nodes_in_group("ini_editor"): + inieditor.queue_free() + for vanillaeditor in get_tree().get_nodes_in_group("vanilla_editor"): + vanillaeditor.queue_free() + OpenFileName.clear() + OpenFileList.clear() func csv_preview(): - var preview = Preview.instance() - get_parent().get_parent().get_parent().add_child(preview) - preview.popup() - preview.window_title += " ("+current_file_path.get_file()+")" - var lines = current_editor.get_node("TextEditor").get_line_count() - var rows = [] - for i in range(0,lines-1): - rows.append(current_editor.get_node("TextEditor").get_line(i).rsplit(",",false)) - preview.print_csv(rows) + var preview = Preview.instance() + get_parent().get_parent().get_parent().add_child(preview) + preview.popup() + preview.window_title += " ("+current_file_path.get_file()+")" + var lines = current_editor.get_node("TextEditor").get_line_count() + var rows = [] + for i in range(0,lines-1): + rows.append(current_editor.get_node("TextEditor").get_line(i).rsplit(",",false)) + preview.print_csv(rows) func bbcode_preview(): - var preview = Preview.instance() - get_parent().get_parent().get_parent().add_child(preview) - preview.popup() - preview.window_title += " ("+current_file_path.get_file()+")" - preview.print_bb(current_editor.get_node("TextEditor").get_text()) + var preview = Preview.instance() + get_parent().get_parent().get_parent().add_child(preview) + preview.popup() + preview.window_title += " ("+current_file_path.get_file()+")" + preview.print_bb(current_editor.get_node("TextEditor").get_text()) func markdown_preview(): - var preview = Preview.instance() - get_parent().get_parent().get_parent().add_child(preview) - preview.popup() - preview.window_title += " ("+current_file_path.get_file()+")" - preview.print_markdown(current_editor.get_node("TextEditor").get_text()) + var preview = Preview.instance() + get_parent().get_parent().get_parent().add_child(preview) + preview.popup() + preview.window_title += " ("+current_file_path.get_file()+")" + preview.print_markdown(current_editor.get_node("TextEditor").get_text()) func html_preview(): - var preview = Preview.instance() - get_parent().get_parent().get_parent().add_child(preview) - preview.popup() - preview.window_title += " ("+current_file_path.get_file()+")" - preview.print_html(current_editor.get_node("TextEditor").get_text()) + var preview = Preview.instance() + get_parent().get_parent().get_parent().add_child(preview) + preview.popup() + preview.window_title += " ("+current_file_path.get_file()+")" + preview.print_html(current_editor.get_node("TextEditor").get_text()) func xml_preview(): - pass + pass func json_preview(): - pass - + pass func _on_vanillaeditor_text_changed(): if not OpenFileList.get_item_text(current_file_index).begins_with("(*)"): - OpenFileList.set_item_text(current_file_index,"(*)"+OpenFileList.get_item_text(current_file_index)) - + OpenFileList.set_item_text(current_file_index,"(*)"+OpenFileList.get_item_text(current_file_index)) + editing_file = true func update_list(): FileList.invalidate() func on_wrap_button(index:int): - match index: - 0: - current_editor.set_wrap_enabled(false) - 1: - current_editor.set_wrap_enabled(true) + match index: + 0: + current_editor.set_wrap_enabled(false) + 1: + current_editor.set_wrap_enabled(true) func on_minimap_button(index:int): - match index: - 0: - current_editor.draw_minimap(false) - 1: - current_editor.draw_minimap(true) + match index: + 0: + current_editor.draw_minimap(false) + 1: + current_editor.draw_minimap(true) func check_file_preview(file : String): - # check whether the opened file has a corresponding preview session for its extension - pass + # check whether the opened file has a corresponding preview session for its extension + pass + + +func _on_ConfirmationDialog_confirmed(): + confirm_close(current_file_index) diff --git a/addons/file-editor/scripts/FileScene.gd b/addons/file-editor/scripts/FileScene.gd deleted file mode 100644 index f3cbd1d..0000000 --- a/addons/file-editor/scripts/FileScene.gd +++ /dev/null @@ -1,200 +0,0 @@ -tool -extends VBoxContainer - -var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new() -var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new() - -onready var ReadOnly = $FileInfo/Readonly - -onready var TextEditor = $TextEditor - -onready var LastModified = $FileInfo/lastmodified - -var FileList - -var ClosingFile - -onready var LastModifiedIcon = $FileInfo/lastmodified_icon - -onready var SearchBox = $SearchBox -onready var ReplaceBox = $ReplaceBox - -onready var c_counter = $FileInfo/c_counter - -var current_path = "" -var current_filename = "" -var Preview = load("res://addons/file-editor/scenes/Preview.tscn") - - -var search_flag = 0 - -signal text_changed() - -func _ready(): - FileList = get_parent().get_parent().get_parent().get_node("FileList") - ClosingFile = get_parent().get_parent().get_parent().get_node("ConfirmationDialog") - ClosingFile.connect("confirmed",self,"queue_free") - - ReadOnly.connect("toggled",self,"_on_Readonly_toggled") - - ReadOnly.set("custom_icons/checked",IconLoader.load_icon_from_name("read")) - ReadOnly.set("custom_icons/unchecked",IconLoader.load_icon_from_name("edit")) - - add_to_group("vanilla_editor") - -func color_region(filextension : String): # -----------------------------> dal momento che voglio creare un editor per ogni file, renderĂ² questa funzione singola in base all'estensione del file - match(filextension): - "bbs": - TextEditor.add_color_region("[b]","[/b]",Color8(153,153,255,255),false) - TextEditor.add_color_region("[i]","[/i]",Color8(153,255,153,255),false) - TextEditor.add_color_region("[s]","[/s]",Color8(255,153,153,255),false) - TextEditor.add_color_region("[u]","[/u]",Color8(255,255,102,255),false) - TextEditor.add_color_region("[url","[/url]",Color8(153,204,255,255),false) - TextEditor.add_color_region("[code]","[/code]",Color8(192,192,192,255),false) - TextEditor.add_color_region("[img]","[/img]",Color8(255,204,153,255),false) - TextEditor.add_color_region("[center]","[/center]",Color8(175,238,238,255),false) - TextEditor.add_color_region("[right]","[/right]",Color8(135,206,235,255),false) - "html": - TextEditor.add_color_region("","",Color8(153,153,255,255),false) - TextEditor.add_color_region("","",Color8(153,255,153,255),false) - TextEditor.add_color_region("","",Color8(255,153,153,255),false) - TextEditor.add_color_region("","",Color8(255,255,102,255),false) - TextEditor.add_color_region("",Color8(153,204,255,255),false) - TextEditor.add_color_region("",Color8(255,204,153,255),true) - TextEditor.add_color_region("
","
",Color8(192,192,192,255),false) - TextEditor.add_color_region("
","
",Color8(175,238,238,255),false) - TextEditor.add_color_region("","",Color8(135,206,235,255),false) - "md": - TextEditor.add_color_region("**","**",Color8(153,153,255,255),false) - TextEditor.add_color_region("*","*",Color8(153,255,153,255),false) - TextEditor.add_color_region("+ ","",Color8(255,178,102,255),false) - TextEditor.add_color_region("- ","",Color8(255,178,102,255),false) - TextEditor.add_color_region("~~","~~",Color8(255,153,153,255),false) - TextEditor.add_color_region("__","__",Color8(255,255,102,255),false) - TextEditor.add_color_region("[",")",Color8(153,204,255,255),false) - TextEditor.add_color_region("`","`",Color8(192,192,192,255),false) - TextEditor.add_color_region('"*.','"',Color8(255,255,255,255),true) - TextEditor.add_color_region("# ","",Color8(105,105,105,255),true) - TextEditor.add_color_region("## ","",Color8(128,128,128,255),true) - TextEditor.add_color_region("### ","",Color8(169,169,169,255),true) - TextEditor.add_color_region("#### ","",Color8(192,192,192,255),true) - TextEditor.add_color_region("##### ","",Color8(211,211,211,255),true) - TextEditor.add_color_region("###### ","",Color8(255,255,255,255),true) - "cfg": - TextEditor.add_color_region("[","]",Color8(153,204,255,255),false) - TextEditor.add_color_region('"','"',Color8(255,255,102,255),false) - _: - pass - -func clean_editor(): - TextEditor.set_text("") - LastModifiedIcon.texture = IconLoader.load_icon_from_name("save") - LastModified.set_text("") - FileList.invalidate() - current_filename = "" - current_path = "" - -func new_file_open(file_content, last_modified , current_file_path): - current_path = current_file_path - current_filename = current_file_path.get_file() - color_region(current_filename.get_extension()) - TextEditor.set_text(file_content) - update_lastmodified(last_modified,"save") - FileList.invalidate() - count_characters() - -func update_lastmodified(last_modified : Dictionary, icon : String): - LastModified.set_text(str(last_modified.hour)+":"+str(last_modified.minute)+" "+str(last_modified.day)+"/"+str(last_modified.month)+"/"+str(last_modified.year)) - LastModifiedIcon.texture = IconLoader.load_icon_from_name(icon) - -func new_file_create(file_name): - TextEditor.set_text("") - - FileList.invalidate() - -func _on_Readonly_toggled(button_pressed): - if button_pressed: - ReadOnly.set_text("Read Only") - TextEditor.readonly = (true) - else: - ReadOnly.set_text("Can Edit") - TextEditor.readonly = (false) - -func _on_TextEditor_text_changed(): - LastModifiedIcon.texture = IconLoader.load_icon_from_name("saveas") - count_characters() - emit_signal("text_changed") - -func count_characters(): - var counted : int = 0 - for line in TextEditor.get_line_count(): - counted += TextEditor.get_line(line).length() - c_counter.set_text(str(counted)) - -func _on_LineEdit_text_changed(new_text): - var linecount = TextEditor.get_line_count() - if new_text != "": - var found - var find = false - for line in range(0,linecount): - for column in range(0,TextEditor.get_line(line).length()): - found = TextEditor.search( new_text, search_flag, line , column ) - if found.size(): - if found[1] == line: -# if not find: - TextEditor.select(line,found[0],found[1],found[0]+new_text.length()) -# find = true - else: - TextEditor.select(0,0,0,0) - else: - TextEditor.select(0,0,0,0) - -func _on_matchcase_toggled(button_pressed): - if button_pressed: - search_flag = 1 - else: - if $SearchBox/wholewords.is_pressed(): - search_flag = 2 - else: - search_flag = 0 - _on_LineEdit_text_changed($SearchBox/LineEdit.get_text()) - -func _on_wholewords_toggled(button_pressed): - if button_pressed: - search_flag = 2 - else: - if $SearchBox/matchcase.is_pressed(): - search_flag = 1 - else: - search_flag = 0 - _on_LineEdit_text_changed($SearchBox/LineEdit.get_text()) - -func _on_close_pressed(): - SearchBox.hide() - -func open_searchbox(): - if SearchBox.visible: - SearchBox.hide() - else: - SearchBox.show() - SearchBox.get_node("LineEdit").grab_focus() - -func _on_Button_pressed(): - var linecount = TextEditor.get_line_count()-1 - var old_text = $ReplaceBox/replace.get_text() - var new_text = $ReplaceBox/with.get_text() - var text = TextEditor.get_text() - TextEditor.set_text(text.replace(old_text,new_text)) - -func open_replacebox(): - if ReplaceBox.visible: - ReplaceBox.hide() - else: - ReplaceBox.show() - ReplaceBox.get_node("replace").grab_focus() - -func _on_close2_pressed(): - ReplaceBox.hide() - -func _on_LineEdit_focus_entered(): - _on_LineEdit_text_changed($SearchBox/LineEdit.get_text()) diff --git a/addons/file-editor/scripts/VanillaEditor.gd b/addons/file-editor/scripts/VanillaEditor.gd index 22a6d2c..f9355bd 100644 --- a/addons/file-editor/scripts/VanillaEditor.gd +++ b/addons/file-editor/scripts/VanillaEditor.gd @@ -31,8 +31,6 @@ signal text_changed() func _ready(): FileList = get_parent().get_parent().get_parent().get_parent().get_node("FileList") - ClosingFile = get_parent().get_parent().get_parent().get_parent().get_node("ConfirmationDialog") - ClosingFile.connect("confirmed",self,"queue_free") ReadOnly.connect("toggled",self,"_on_Readonly_toggled")