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")