first steps
BIN
Graphics/Circle.png
Normal file
|
After Width: | Height: | Size: 240 B |
34
Graphics/Circle.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Circle.png-001a04ebd80888925eeba41c73af0dd1.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Graphics/Circle.png"
|
||||
dest_files=[ "res://.import/Circle.png-001a04ebd80888925eeba41c73af0dd1.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
||||
41
Scenes/PersonBase.tscn
Normal file
@ -0,0 +1,41 @@
|
||||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://Graphics/Placeholder.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Graphics/Circle.png" type="Texture" id=2]
|
||||
[ext_resource path="res://Scripts/PersonBody.gd" type="Script" id=3]
|
||||
[ext_resource path="res://Scripts/PersonRoot.gd" type="Script" id=4]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=2]
|
||||
extents = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="SpriteFrames" id=1]
|
||||
animations = [ {
|
||||
"frames": [ ],
|
||||
"loop": true,
|
||||
"name": "default",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [ ExtResource( 1 ), ExtResource( 2 ) ],
|
||||
"loop": true,
|
||||
"name": "New Anim",
|
||||
"speed": 2.0
|
||||
} ]
|
||||
|
||||
[node name="PersonRoot" type="Node2D" groups=[
|
||||
"pickable",
|
||||
]]
|
||||
position = Vector2( 0, -32 )
|
||||
scale = Vector2( 1, 2 )
|
||||
script = ExtResource( 4 )
|
||||
|
||||
[node name="PersonBody" type="KinematicBody2D" parent="."]
|
||||
input_pickable = true
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="PersonShape" type="CollisionShape2D" parent="PersonBody"]
|
||||
visible = false
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="PersonSprite" type="AnimatedSprite" parent="PersonBody"]
|
||||
frames = SubResource( 1 )
|
||||
animation = "New Anim"
|
||||
27
Scenes/Spot.tscn
Normal file
@ -0,0 +1,27 @@
|
||||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://Graphics/Circle.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Scripts/Spot.gd" type="Script" id=2]
|
||||
[ext_resource path="res://Scripts/SpotArea.gd" type="Script" id=3]
|
||||
|
||||
[sub_resource type="CircleShape2D" id=1]
|
||||
radius = 16.0
|
||||
|
||||
[node name="Spot" type="Node2D" groups=[
|
||||
"spot",
|
||||
]]
|
||||
scale = Vector2( 2, 2 )
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="Circle" type="Sprite" parent="."]
|
||||
modulate = Color( 0.109804, 1, 0.333333, 0.0823529 )
|
||||
texture = ExtResource( 1 )
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="Circle"]
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Circle/Area2D"]
|
||||
visible = false
|
||||
shape = SubResource( 1 )
|
||||
[connection signal="body_entered" from="Circle/Area2D" to="Circle/Area2D" method="onBodyEnter"]
|
||||
[connection signal="body_exited" from="Circle/Area2D" to="Circle/Area2D" method="onBodyLeft"]
|
||||
@ -1,31 +1,54 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://Scripts/rotaa.gd" type="Script" id=1]
|
||||
[ext_resource path="res://Graphics/Placeholder.png" type="Texture" id=2]
|
||||
[ext_resource path="res://Scenes/PersonBase.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://Scenes/Spot.tscn" type="PackedScene" id=4]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
[node name="Scene" type="Node2D"]
|
||||
|
||||
[node name="Placeholder" type="Sprite" parent="."]
|
||||
[node name="ExportTestPlaceholders" type="Node2D" parent="."]
|
||||
visible = false
|
||||
|
||||
[node name="Placeholder" type="Sprite" parent="ExportTestPlaceholders"]
|
||||
position = Vector2( 512, 296 )
|
||||
texture = ExtResource( 2 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Placeholder2" type="Sprite" parent="."]
|
||||
[node name="Placeholder2" type="Sprite" parent="ExportTestPlaceholders"]
|
||||
position = Vector2( 18.3143, 583.069 )
|
||||
texture = ExtResource( 2 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Placeholder3" type="Sprite" parent="."]
|
||||
[node name="Placeholder3" type="Sprite" parent="ExportTestPlaceholders"]
|
||||
position = Vector2( 1006.32, 582.178 )
|
||||
texture = ExtResource( 2 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Placeholder4" type="Sprite" parent="."]
|
||||
[node name="Placeholder4" type="Sprite" parent="ExportTestPlaceholders"]
|
||||
position = Vector2( 1006.49, 16.5036 )
|
||||
texture = ExtResource( 2 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Placeholder5" type="Sprite" parent="."]
|
||||
[node name="Placeholder5" type="Sprite" parent="ExportTestPlaceholders"]
|
||||
position = Vector2( 16.2689, 17.0209 )
|
||||
texture = ExtResource( 2 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Spot" parent="." instance=ExtResource( 4 )]
|
||||
position = Vector2( 192, 256 )
|
||||
|
||||
[node name="Spot2" parent="." instance=ExtResource( 4 )]
|
||||
position = Vector2( 192, 64 )
|
||||
|
||||
[node name="Spot3" parent="." instance=ExtResource( 4 )]
|
||||
position = Vector2( 832, 192 )
|
||||
|
||||
[node name="PersonRoot" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 304, 408 )
|
||||
|
||||
[node name="PersonRoot2" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 456, 448 )
|
||||
|
||||
[node name="PersonRoot3" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 616, 272 )
|
||||
|
||||
31
Scripts/PersonBody.gd
Normal file
@ -0,0 +1,31 @@
|
||||
extends KinematicBody2D
|
||||
|
||||
class_name PersonBody
|
||||
|
||||
onready var person : PersonRoot = get_parent()
|
||||
|
||||
var held = false
|
||||
var in_spot = false
|
||||
|
||||
func pickup():
|
||||
held = true
|
||||
#change cursor to clenched hand
|
||||
|
||||
func drop():
|
||||
held = false
|
||||
move_and_slide(Vector2(randi() % 2 - 1, randi() %2 - 1), Vector2.UP)
|
||||
person.global_position += position
|
||||
position = Vector2.ZERO
|
||||
#change cursor to idle hand
|
||||
|
||||
func _input_event(viewport: Object, event: InputEvent, shape_idx: int):
|
||||
if event is InputEventMouseButton:
|
||||
if event.button_index == BUTTON_LEFT and event.pressed:
|
||||
pickup()
|
||||
elif held and event.button_index == BUTTON_LEFT and !event.pressed:
|
||||
drop()
|
||||
|
||||
func _physics_process(_delta):
|
||||
if held:
|
||||
person.global_transform.origin = get_global_mouse_position()
|
||||
|
||||
19
Scripts/PersonRoot.gd
Normal file
@ -0,0 +1,19 @@
|
||||
extends Node2D
|
||||
|
||||
class_name PersonRoot
|
||||
|
||||
#onready var body : PersonBody = $PersonBody
|
||||
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# pass
|
||||
52
Scripts/Spot.gd
Normal file
@ -0,0 +1,52 @@
|
||||
extends Node2D
|
||||
|
||||
class_name Spot
|
||||
|
||||
class SpotLink:
|
||||
var link_from: Node2D #Spot
|
||||
var link_to: Node2D #Spot
|
||||
var line: Line2D
|
||||
|
||||
func _init(from, to):
|
||||
line = Line2D.new()
|
||||
link_from = from
|
||||
link_to = to
|
||||
line.add_point(from.global_position)
|
||||
line.add_point(to.global_position)
|
||||
from.get_tree().root.call_deferred("add_child", line)
|
||||
return self
|
||||
|
||||
var spot1 : SpotLink
|
||||
var spot2 : SpotLink
|
||||
var person: PersonRoot
|
||||
|
||||
onready var sprite: Sprite = $Circle
|
||||
|
||||
class MyCustomSorter:
|
||||
static func sort_ascending(a, b):
|
||||
if a[0] < b[0]:
|
||||
return true
|
||||
return false
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
var distances : Array = []
|
||||
for spot in get_tree().get_nodes_in_group("spot"):
|
||||
if spot != self:
|
||||
distances.append([self.global_position.distance_squared_to(spot.global_position), spot])
|
||||
distances.sort_custom(MyCustomSorter, "sort_ascending")
|
||||
spot1 = SpotLink.new(self, distances[0][1])
|
||||
spot2 = SpotLink.new(self, distances[1][1])
|
||||
|
||||
func _process(_delta):
|
||||
sprite.self_modulate = Color.green if person != null else Color.red
|
||||
|
||||
|
||||
# processSignalSpotHasPerson(Person)
|
||||
# check the Person on the other spots
|
||||
# change the color of the line2D that are and that lead to the other spots
|
||||
# change this spot and other spots color appropriately
|
||||
|
||||
|
||||
# processSignalSpotPersonLeft()
|
||||
# reser that Spot and the other nearby
|
||||
27
Scripts/SpotArea.gd
Normal file
@ -0,0 +1,27 @@
|
||||
extends Area2D
|
||||
|
||||
onready var spot : Spot = get_node("../..")
|
||||
|
||||
var current_bod: PersonBody = null
|
||||
var bod_in = false
|
||||
|
||||
func onBodyEnter(body: Node):
|
||||
print_debug("bod enters")
|
||||
current_bod = body
|
||||
|
||||
func onBodyLeft(body: Node):
|
||||
print_debug("bod leaves.")
|
||||
current_bod = null
|
||||
|
||||
func _process(_delta):
|
||||
if bod_in == false and current_bod != null and !current_bod.held:
|
||||
center_bod()
|
||||
bod_in = !current_bod.held if current_bod != null else false
|
||||
if current_bod:
|
||||
current_bod.in_spot = bod_in
|
||||
spot.person = current_bod.get_parent() if bod_in else null
|
||||
|
||||
func center_bod():
|
||||
var root : PersonRoot = current_bod.get_parent()
|
||||
print_debug("root position = ", root.global_position)
|
||||
root.position = spot.position
|
||||
1
Scripts/SpotLink.gd
Normal file
@ -0,0 +1 @@
|
||||
extends Node
|
||||
12
Scripts/SpotManager.gd
Normal file
@ -0,0 +1,12 @@
|
||||
extends Node
|
||||
|
||||
var spots : Array
|
||||
|
||||
func _ready():
|
||||
spots = get_tree().get_nodes_in_group("spot")
|
||||
|
||||
func _process(delta):
|
||||
for spot in spots:
|
||||
if spot.person == null:
|
||||
return
|
||||
get_tree().quit()
|
||||
0
Text/how.txt
Normal file
18
Text/todo.txt
Normal file
@ -0,0 +1,18 @@
|
||||
- Make people draggable
|
||||
- Make it so people can be put and snapped into Spots
|
||||
- Make it so Spots link themselves automatically when in a scene
|
||||
- Make Spots react to people being in
|
||||
Make SpotManager win when all spots are filled
|
||||
~ break ~
|
||||
Make people have characteristics
|
||||
Display characteristics on mouseover
|
||||
Make some characteristics hate other characteristics, rendering spots invalid
|
||||
Make SpotManager win when all spots are valid
|
||||
Create lotsa characteristics for fun
|
||||
Create a people randomizer
|
||||
Create a level solver
|
||||
Create some levels, ramping up the nmbr of people and spots, adding unnecessary ppl, etc
|
||||
Polish:
|
||||
Make people move around idly
|
||||
Make some art for people
|
||||
make some art for levels
|
||||
25
Text/what.txt
Normal file
@ -0,0 +1,25 @@
|
||||
Idea :
|
||||
A puzzle game where you drag people together until they somewhat willingly form a chain loop.
|
||||
PILLARS:
|
||||
- Toy, tactile
|
||||
- Process by elimination
|
||||
People:
|
||||
- Have types (Middle-aged dude, Grandma, baby, cat, etc)
|
||||
- Visible through sprite, explicited through mouseover
|
||||
- Have personal Traits (Likes cooking, want to be taught golf, uncontrollable eater, hates dogs, etc)
|
||||
- Can be seen in a mouseover portrait
|
||||
- Are dragged & drop by LClick mouseover
|
||||
- Can be separated by RClick: will break the closed link
|
||||
|
||||
Graphics:
|
||||
- People holding hands: hard to do a full circle in 2D
|
||||
- Might have to do a line
|
||||
- Might just see portraits from above : meh for tactile, grabbing little characters is funny
|
||||
- 3D fixed cam might be the solution
|
||||
- Not joining hands directly but just being in SLOTS that are made obvious
|
||||
LD :
|
||||
Pre-set combination of people with defined characteristics
|
||||
Might need a solver to facilitate creating interesting levels
|
||||
Avoiding mistakes:
|
||||
- how to avoid auto-gen insensitive stuff like "black ppl like watermelon & chimken ?"
|
||||
- small scale, so whatever i'll vet stuff by myself
|
||||
63
addons/file-editor/README.md
Normal file
@ -0,0 +1,63 @@
|
||||
Check my **[Discord](https://discord.gg/KnJGY9S)** to stay updated on this repository.
|
||||
*(Recommended since the AssetLibrary is not automatically updated)*
|
||||
|
||||
This plugin is now supported in [Godot Extended Library Discord](https://discord.gg/JNrcucg), check out the [Godot Extended Library Project](https://github.com/godot-extended-libraries)!
|
||||
|
||||
# Godot Text Editor
|
||||
A little plugin to easy-way manage your text files inside your project folder.
|
||||
|
||||
Author: *"Nicolo (fenix) Santilio"*
|
||||
Version: *1.7.1*
|
||||
Godot Version: *3.2.1*
|
||||
|
||||
**This repository was pushed directly from Godot Engine Editor thanks to [GitHub Integration](https://github.com/fenix-hub/godot-engine.github-integration)!**
|
||||
|
||||
## What is this?
|
||||
This is a little plugin I've made to easily edit text files in your project folder.
|
||||
|
||||
## How does it work?
|
||||
You can open an existing file, create a new file and delete a file.
|
||||
When opening / creating a file, the editor will open and you will be able to edit it and save it.
|
||||
You can just *Save* the file, or *Save file As* a new file (if it is a new file but also to make some copies).
|
||||
You will also be able to see some informations about the file you are editing (time and date of last edit) and you can set your editor to *Read Only* if you don't want to make changes but still read the content of the file.
|
||||
Multiple files can be opened in different tabs.
|
||||
  
|
||||
|
||||
## How do I install it?
|
||||
**Manual**
|
||||
Just download this whole repository and put it in your `res://addons` folder inside the project you want to work on.
|
||||
Then, go to `Project > Plugins > "File Editor" > Status > Activate`.
|
||||
|
||||
**Automatic**
|
||||
You can find this plugin in the AssetLib of Godot Engine Editor. Just download it from there and everything should be fine!
|
||||
(Remember to activate this plugin)
|
||||
|
||||
## Supported formats
|
||||
+ "*.txt ; Plain Text File",
|
||||
+ "*.rtf ; Rich Text Format File",
|
||||
+ "*.log ; Log File",
|
||||
+ "*.md ; MD File",
|
||||
+ "*.doc ; WordPad Document",
|
||||
+ "*.doc ; Microsoft Word Document",
|
||||
+ "*.docm ; Word Open XML Macro-Enabled Document",
|
||||
+ "*.docx ; Microsoft Word Open XML Document",
|
||||
+ "*.bbs ; Bulletin Board System Text",
|
||||
+ "*.dat ; Data File",
|
||||
+ "*.xml ; XML File",
|
||||
+ "*.sql ; SQL database file",
|
||||
+ "*.json ; JavaScript Object Notation File",
|
||||
+ "*.html ; HyperText Markup Language"
|
||||
+ "*.cfg ; Configuration File"
|
||||
+ "*.ini ; Initialization File (same as .cfg Configuration File)"
|
||||
+ "*.csv ; Comma-separated values File"
|
||||
|
||||
#### Current version
|
||||
To check all the features included in the current version, please read the [VERSION file](./VERSION.md)
|
||||
|
||||
#### Upcoming features
|
||||
To check all the features I'm currently working on, please read the [TODO file](./TODO.md)
|
||||
|
||||
# Disclaimer
|
||||
This addon was built for a **personal use** intention. It was released as an open source plugin in the hope that it could be useful to the Godot Engine Community.
|
||||
As a "work in progress" project, there is *no warranty* for any eventual issue and bug that may broke your project.
|
||||
I don't assume any responsibility for possible corruptions of your project files. It is always advisable to keep a copy of your files and check any changes.
|
||||
3
addons/file-editor/TODO.md
Normal file
@ -0,0 +1,3 @@
|
||||
### to do (v-0.x.x)
|
||||
- Popup dialog when closing a tab if there is new content
|
||||
- Module for markdown support/conversion
|
||||
114
addons/file-editor/VERSION.md
Normal file
@ -0,0 +1,114 @@
|
||||
**version 0.0.1**
|
||||
*added*
|
||||
- Plugin Created
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.1.1**
|
||||
*added*
|
||||
- "Create new File" option
|
||||
- "Open File" option
|
||||
- "Delete File" option
|
||||
- "Save File" option
|
||||
- "Save File As.." option
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.1.2**
|
||||
*fixed*
|
||||
- Repository Installation, folder order
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.2.5**
|
||||
*removed*
|
||||
- Old layout
|
||||
|
||||
*added*
|
||||
- New Layout
|
||||
- Last modified time and date
|
||||
- Tabs
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.3.1**
|
||||
*added*
|
||||
- Version check
|
||||
- Preview support
|
||||
- Context menu in editor
|
||||
- BBCode converter
|
||||
- Light Mardkwon converter (DEMO)
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.2.1**
|
||||
*removed*
|
||||
- Old layout, the plugin won't appear in docs
|
||||
- Icons file extensions, plugin size reduced
|
||||
- Old Mardkwon preview method
|
||||
|
||||
*added*
|
||||
- More supported files
|
||||
1. "*.dat ; Data File",
|
||||
2. "*.xml ; XML File",
|
||||
3. "*.sql ; SQL database file",
|
||||
4. "*.json ; JavaScript Object Notation File",
|
||||
5. "*.html ; HyperText Markup Language",
|
||||
- New Markdown preview method ( Markdown -> BBCode converter)
|
||||
- New HTML preview method ( HTML -> BBCode converter)
|
||||
- New Plugin Layout: a new ButtonTool "File" in you TopBar will appear
|
||||
- Error check
|
||||
- Message popups for closing unsaved files
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.4.3**
|
||||
*removed*
|
||||
- Old layout
|
||||
|
||||
*added*
|
||||
- More supported files:
|
||||
1. "*.cfg ; Configuration File",
|
||||
2. "*.ini ; Initialization File (same as .cfg Configuration File)",
|
||||
- Added some sample files
|
||||
- Memorize system of last opened files
|
||||
- Added *Editor* button , you can now choose which editor to use:
|
||||
1. Vanilla Editor (simple text editor)
|
||||
2. Cfg/Ini Editor (table editor for Cfg/Ini files)
|
||||
Editors are automatically updated, so if you update a cfg/ini file in the Vanilla Editor it will be updated in the Cfg/Ini Editor, and viceversa
|
||||
- Added editor shorcuts:
|
||||
1. *Ctrl + N* (new file)
|
||||
2. *Ctrl + O* (open file)
|
||||
3. *Ctrl + Alt + C* (close file)
|
||||
4. *Ctrl + S* (save file)
|
||||
5. *Ctrl + Alt + S* (save file as...)
|
||||
6. *Ctrl + D* (delete file)
|
||||
7. *Ctrl + 1* (Vanilla Editor)
|
||||
8. *Ctrl + 3* (Cfg/Ini Editor)
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.6.0**
|
||||
*fixed*
|
||||
- Each opened file now has own editor: unsaved changes are no longer erased if a new file is opened without saving the previous opened file
|
||||
|
||||
*added*
|
||||
- Custom Syntax Highlighting for each file type (.md, .cfg/.ini, .html, .bbs)
|
||||
- Characters counter in VanillaEditor
|
||||
- String searcher in VanillaEditor (with custom shortcut *Ctrl + F*)
|
||||
- String replacer in VanillaEditor (with custom shortcut *Ctrl + R*)
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.6.4**
|
||||
*added*
|
||||
- CSV VisualEditor (shortcut *Ctrl+2*):
|
||||
- you can now read and edit CSV files which importing them as simple CSV files (and not translate file)
|
||||
- MiniMap drawer in VanillaEditor
|
||||
- SoftWrap / NoWrap in VanillaEditor
|
||||
- **Version 3.2alpha2 supported**
|
||||
|
||||
---------------------
|
||||
|
||||
**version 1.7.1**
|
||||
- several bug fixes
|
||||
23
addons/file-editor/file.samples/sample.bbs
Normal file
@ -0,0 +1,23 @@
|
||||
[b]bolded text[/b]
|
||||
[i]italicized text[/i]
|
||||
[u]underlined text[/u]
|
||||
[s]strikethrough text[/s]
|
||||
[url]https://en.wikipedia.org[/url]
|
||||
[url=https://en.wikipedia.org]English Wikipedia[/url]
|
||||
[img]res://addons/file-editor/icon.png[/img]
|
||||
[code]monospaced text[/code]
|
||||
left [center]center[/center] [right]right[/right]
|
||||
|
||||
[center][wave amp=50 freq=10]oooooondaaaaaaaaa[/wave][/center]
|
||||
|
||||
[center][tornado amp=50 freq=10 radius=5]tornaaaaaadoooooo[/tornado][/center]
|
||||
|
||||
[center][shake rate=15 level=10]scossa[/shake][/center]
|
||||
|
||||
[center][fade start=4 length=14]Effetto fantasmaaaaaa[/fade][/center]
|
||||
|
||||
[center][rainbow freq=4 sat=10 val=100]Arcobaleno![/rainbow][/center]
|
||||
|
||||
[center][pulse freq=6.0 height=5.0][pulse color=#00FFAA freq=2.0]Questo è un codice custom![/pulse][/pulse][/center]
|
||||
|
||||
*Some md text in bb file*
|
||||
33
addons/file-editor/file.samples/sample.cfg
Normal file
@ -0,0 +1,33 @@
|
||||
[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"
|
||||
|
||||
19
addons/file-editor/file.samples/sample.csv
Normal file
@ -0,0 +1,19 @@
|
||||
COLUMN 1; ;COLUMN2;COLUMN3;COLUMN5;COLUMN6;;;;;;;;;
|
||||
this is a; ;csv file with empty spaces; ;-;NEW COLUMN;;;;;;;;;
|
||||
anyway,;they are stored in; ;the file;-;F;;;;;;;;;
|
||||
this;is a ;new;line;-;F;;;;;;;;;
|
||||
line 5;and column 5;where created;with the editor;-;F;;;;;;;;;
|
||||
-;-;-;-;-;F;;;;;;;;;
|
||||
res;res;res;;F;e;;;;;;;;;
|
||||
awew;aweawe;ewaewa;wwwwwwwwiiiiiiiii ;F;F;;;;;;;;;
|
||||
ciao;ciao;;;F;F;;;;;;;;;
|
||||
ciao;ciao;ciao;ciao;ciao;F;;;;;;;;;
|
||||
NON;NE;VOGLIO;SAPERE;NIENTE;;;;;;;;;;
|
||||
UFFA;UFFA;UFFA;NUFFA;;REFFA;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;YES
|
||||
|
10
addons/file-editor/file.samples/sample.csv.import
Normal file
@ -0,0 +1,10 @@
|
||||
[remap]
|
||||
|
||||
importer="csv"
|
||||
type="TextFile"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/file-editor/file.samples/sample.csv"
|
||||
[params]
|
||||
|
||||
9
addons/file-editor/file.samples/sample.html
Normal file
@ -0,0 +1,9 @@
|
||||
<b>bolded text</b>
|
||||
<i>italicized text</i>
|
||||
<ins>insnderlined text</ins>
|
||||
<del>deltrikethroinsgh text</del>
|
||||
<a>httpdel://en.wikipedia.org</a>
|
||||
<img src="res://addondel/file-editor/icon.png"/>
|
||||
<a href=https://en.wikipedia.org>Englidelh Wikipedia</a>
|
||||
<pre>monodelpaced text</pre>
|
||||
left <center>center</center> <right>right</right>
|
||||
10
addons/file-editor/file.samples/sample.ini
Normal file
@ -0,0 +1,10 @@
|
||||
; 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"
|
||||
16
addons/file-editor/file.samples/sample.md
Normal file
@ -0,0 +1,16 @@
|
||||
**bolded text**
|
||||
*italicized text*
|
||||
***bolded and italicized***
|
||||
~~strikethrough~~
|
||||
__underline__
|
||||
> This is a quote
|
||||
`this is some code`
|
||||
[link](http://example.com)
|
||||

|
||||
|
||||
# header 1
|
||||
## header 2
|
||||
### header 3
|
||||
#### header 5
|
||||
##### header 6
|
||||
###### header7
|
||||
2
addons/file-editor/file.samples/sample.txt
Normal file
@ -0,0 +1,2 @@
|
||||
This is a simple text file.
|
||||
|
||||
120
addons/file-editor/file.samples/sample.xml
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0"?>
|
||||
<catalog>
|
||||
<book id="bk101">
|
||||
<author>Gambardella, Matthew</author>
|
||||
<title>XML Developer's Guide</title>
|
||||
<genre>Computer</genre>
|
||||
<price>44.95</price>
|
||||
<publish_date>2000-10-01</publish_date>
|
||||
<description>An in-depth look at creating applications
|
||||
with XML.</description>
|
||||
</book>
|
||||
<book id="bk102">
|
||||
<author>Ralls, Kim</author>
|
||||
<title>Midnight Rain</title>
|
||||
<genre>Fantasy</genre>
|
||||
<price>5.95</price>
|
||||
<publish_date>2000-12-16</publish_date>
|
||||
<description>A former architect battles corporate zombies,
|
||||
an evil sorceress, and her own childhood to become queen
|
||||
of the world.</description>
|
||||
</book>
|
||||
<book id="bk103">
|
||||
<author>Corets, Eva</author>
|
||||
<title>Maeve Ascendant</title>
|
||||
<genre>Fantasy</genre>
|
||||
<price>5.95</price>
|
||||
<publish_date>2000-11-17</publish_date>
|
||||
<description>After the collapse of a nanotechnology
|
||||
society in England, the young survivors lay the
|
||||
foundation for a new society.</description>
|
||||
</book>
|
||||
<book id="bk104">
|
||||
<author>Corets, Eva</author>
|
||||
<title>Oberon's Legacy</title>
|
||||
<genre>Fantasy</genre>
|
||||
<price>5.95</price>
|
||||
<publish_date>2001-03-10</publish_date>
|
||||
<description>In post-apocalypse England, the mysterious
|
||||
agent known only as Oberon helps to create a new life
|
||||
for the inhabitants of London. Sequel to Maeve
|
||||
Ascendant.</description>
|
||||
</book>
|
||||
<book id="bk105">
|
||||
<author>Corets, Eva</author>
|
||||
<title>The Sundered Grail</title>
|
||||
<genre>Fantasy</genre>
|
||||
<price>5.95</price>
|
||||
<publish_date>2001-09-10</publish_date>
|
||||
<description>The two daughters of Maeve, half-sisters,
|
||||
battle one another for control of England. Sequel to
|
||||
Oberon's Legacy.</description>
|
||||
</book>
|
||||
<book id="bk106">
|
||||
<author>Randall, Cynthia</author>
|
||||
<title>Lover Birds</title>
|
||||
<genre>Romance</genre>
|
||||
<price>4.95</price>
|
||||
<publish_date>2000-09-02</publish_date>
|
||||
<description>When Carla meets Paul at an ornithology
|
||||
conference, tempers fly as feathers get ruffled.</description>
|
||||
</book>
|
||||
<book id="bk107">
|
||||
<author>Thurman, Paula</author>
|
||||
<title>Splish Splash</title>
|
||||
<genre>Romance</genre>
|
||||
<price>4.95</price>
|
||||
<publish_date>2000-11-02</publish_date>
|
||||
<description>A deep sea diver finds true love twenty
|
||||
thousand leagues beneath the sea.</description>
|
||||
</book>
|
||||
<book id="bk108">
|
||||
<author>Knorr, Stefan</author>
|
||||
<title>Creepy Crawlies</title>
|
||||
<genre>Horror</genre>
|
||||
<price>4.95</price>
|
||||
<publish_date>2000-12-06</publish_date>
|
||||
<description>An anthology of horror stories about roaches,
|
||||
centipedes, scorpions and other insects.</description>
|
||||
</book>
|
||||
<book id="bk109">
|
||||
<author>Kress, Peter</author>
|
||||
<title>Paradox Lost</title>
|
||||
<genre>Science Fiction</genre>
|
||||
<price>6.95</price>
|
||||
<publish_date>2000-11-02</publish_date>
|
||||
<description>After an inadvertant trip through a Heisenberg
|
||||
Uncertainty Device, James Salway discovers the problems
|
||||
of being quantum.</description>
|
||||
</book>
|
||||
<book id="bk110">
|
||||
<author>O'Brien, Tim</author>
|
||||
<title>Microsoft .NET: The Programming Bible</title>
|
||||
<genre>Computer</genre>
|
||||
<price>36.95</price>
|
||||
<publish_date>2000-12-09</publish_date>
|
||||
<description>Microsoft's .NET initiative is explored in
|
||||
detail in this deep programmer's reference.</description>
|
||||
</book>
|
||||
<book id="bk111">
|
||||
<author>O'Brien, Tim</author>
|
||||
<title>MSXML3: A Comprehensive Guide</title>
|
||||
<genre>Computer</genre>
|
||||
<price>36.95</price>
|
||||
<publish_date>2000-12-01</publish_date>
|
||||
<description>The Microsoft MSXML3 parser is covered in
|
||||
detail, with attention to XML DOM interfaces, XSLT processing,
|
||||
SAX and more.</description>
|
||||
</book>
|
||||
<book id="bk112">
|
||||
<author>Galos, Mike</author>
|
||||
<title>Visual Studio 7: A Comprehensive Guide</title>
|
||||
<genre>Computer</genre>
|
||||
<price>49.95</price>
|
||||
<publish_date>2001-04-16</publish_date>
|
||||
<description>Microsoft Visual Studio 7 is explored in depth,
|
||||
looking at how Visual Basic, Visual C++, C#, and ASP+ are
|
||||
integrated into a comprehensive development
|
||||
environment.</description>
|
||||
</book>
|
||||
</catalog>
|
||||
BIN
addons/file-editor/fonts/COUR.TTF
Normal file
BIN
addons/file-editor/fonts/Carlito-Bold.ttf
Normal file
BIN
addons/file-editor/fonts/Carlito-BoldItalic.ttf
Normal file
BIN
addons/file-editor/fonts/Carlito-Italic.ttf
Normal file
BIN
addons/file-editor/fonts/Carlito-Regular.ttf
Normal file
BIN
addons/file-editor/fonts/Roboto-Black.ttf
Normal file
BIN
addons/file-editor/fonts/Roboto-Regular.ttf
Normal file
BIN
addons/file-editor/howto/api_token/LR7EGXjHCm.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
34
addons/file-editor/howto/api_token/LR7EGXjHCm.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/LR7EGXjHCm.png-1cc143c744f882fbc86edc7d2318e169.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/file-editor/howto/api_token/LR7EGXjHCm.png"
|
||||
dest_files=[ "res://.import/LR7EGXjHCm.png-1cc143c744f882fbc86edc7d2318e169.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
||||
BIN
addons/file-editor/howto/api_token/msedge_zmozPZZj3p.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/msedge_zmozPZZj3p.png-45b22e8e658d9e618635e91966d71bb1.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/file-editor/howto/api_token/msedge_zmozPZZj3p.png"
|
||||
dest_files=[ "res://.import/msedge_zmozPZZj3p.png-45b22e8e658d9e618635e91966d71bb1.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
||||
BIN
addons/file-editor/icon.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
34
addons/file-editor/icon.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/icon.png-622f0db5e19ff24d06caa70a7b56e7cc.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/file-editor/icon.png"
|
||||
dest_files=[ "res://.import/icon.png-622f0db5e19ff24d06caa70a7b56e7cc.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
||||
BIN
addons/file-editor/icon.psd
Normal file
BIN
addons/file-editor/icons.pngs/add.png.buttonicon
Normal file
|
After Width: | Height: | Size: 146 B |
BIN
addons/file-editor/icons.pngs/align.png.buttonicon
Normal file
|
After Width: | Height: | Size: 195 B |
BIN
addons/file-editor/icons.pngs/column.png.buttonicon
Normal file
|
After Width: | Height: | Size: 146 B |
BIN
addons/file-editor/icons.pngs/delete.png.buttonicon
Normal file
|
After Width: | Height: | Size: 183 B |
BIN
addons/file-editor/icons.pngs/delimiter.png.buttonicon
Normal file
|
After Width: | Height: | Size: 283 B |
BIN
addons/file-editor/icons.pngs/drop_column.png.buttonicon
Normal file
|
After Width: | Height: | Size: 146 B |
BIN
addons/file-editor/icons.pngs/drop_row.png.buttonicon
Normal file
|
After Width: | Height: | Size: 150 B |
BIN
addons/file-editor/icons.pngs/edit.png.buttonicon
Normal file
|
After Width: | Height: | Size: 244 B |
BIN
addons/file-editor/icons.pngs/edit_.png.buttonicon
Normal file
|
After Width: | Height: | Size: 186 B |
BIN
addons/file-editor/icons.pngs/file.png.buttonicon
Normal file
|
After Width: | Height: | Size: 160 B |
BIN
addons/file-editor/icons.pngs/keys.png.buttonicon
Normal file
|
After Width: | Height: | Size: 222 B |
BIN
addons/file-editor/icons.pngs/new.png.buttonicon
Normal file
|
After Width: | Height: | Size: 180 B |
BIN
addons/file-editor/icons.pngs/read.png.buttonicon
Normal file
|
After Width: | Height: | Size: 286 B |
BIN
addons/file-editor/icons.pngs/remove.png.buttonicon
Normal file
|
After Width: | Height: | Size: 226 B |
BIN
addons/file-editor/icons.pngs/row.png.buttonicon
Normal file
|
After Width: | Height: | Size: 150 B |
BIN
addons/file-editor/icons.pngs/save.png.buttonicon
Normal file
|
After Width: | Height: | Size: 236 B |
BIN
addons/file-editor/icons.pngs/saveas.png.buttonicon
Normal file
|
After Width: | Height: | Size: 250 B |
BIN
addons/file-editor/icons.pngs/section.png.buttonicon
Normal file
|
After Width: | Height: | Size: 178 B |
BIN
addons/file-editor/icons.pngs/sections.png.buttonicon
Normal file
|
After Width: | Height: | Size: 141 B |
BIN
addons/file-editor/icons.pngs/settings.png.buttonicon
Normal file
|
After Width: | Height: | Size: 524 B |
BIN
addons/file-editor/icons.pngs/text-center.png.buttonicon
Normal file
|
After Width: | Height: | Size: 156 B |
BIN
addons/file-editor/icons.pngs/text-fill.png.buttonicon
Normal file
|
After Width: | Height: | Size: 142 B |
BIN
addons/file-editor/icons.pngs/text-left.png.buttonicon
Normal file
|
After Width: | Height: | Size: 154 B |
BIN
addons/file-editor/icons.pngs/text-right.png.buttonicon
Normal file
|
After Width: | Height: | Size: 154 B |
BIN
addons/file-editor/icons.pngs/tools.png.buttonicon
Normal file
|
After Width: | Height: | Size: 439 B |
BIN
addons/file-editor/icons.pngs/translate.png.buttonicon
Normal file
|
After Width: | Height: | Size: 462 B |
5
addons/file-editor/lastopenedfiles.lastcfg
Normal file
@ -0,0 +1,5 @@
|
||||
[Opened]
|
||||
|
||||
what.txt="res://Text/what.txt"
|
||||
how.txt="res://Text/how.txt"
|
||||
todo.txt="res://Text/todo.txt"
|
||||
7
addons/file-editor/plugin.cfg
Normal file
@ -0,0 +1,7 @@
|
||||
[plugin]
|
||||
|
||||
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.4"
|
||||
script="scripts/file-editor.gd"
|
||||
904
addons/file-editor/scenes/CSVEditor.tscn
Normal file
@ -0,0 +1,904 @@
|
||||
[gd_scene load_steps=41 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scenes/Readonly.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://addons/file-editor/scripts/CSVEditor.gd" type="Script" id=2]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Bold.ttf" type="DynamicFontData" id=3]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Regular.ttf" type="DynamicFontData" id=5]
|
||||
[ext_resource path="res://addons/file-editor/fonts/COUR.TTF" type="DynamicFontData" id=7]
|
||||
|
||||
[sub_resource type="Image" id=138]
|
||||
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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 239, 255, 255, 255, 48, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 239, 255, 255, 255, 80, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 191, 255, 255, 255, 32, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=2]
|
||||
image = SubResource( 138 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=139]
|
||||
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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=4]
|
||||
image = SubResource( 139 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=140]
|
||||
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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=6]
|
||||
image = SubResource( 140 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=141]
|
||||
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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=8]
|
||||
image = SubResource( 141 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=142]
|
||||
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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=10]
|
||||
image = SubResource( 142 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=143]
|
||||
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=12]
|
||||
image = SubResource( 143 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=144]
|
||||
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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 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, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 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, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=14]
|
||||
image = SubResource( 144 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=145]
|
||||
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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=16]
|
||||
image = SubResource( 145 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=146]
|
||||
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, 255, 255, 255, 56, 255, 255, 255, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 152, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 11, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 2, 255, 255, 255, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 57, 255, 255, 255, 193, 255, 255, 255, 189, 255, 255, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 52, 255, 255, 255, 185, 255, 255, 255, 184, 255, 255, 255, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 2, 255, 255, 255, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 13, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 255, 255, 255, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 2, 255, 255, 255, 162, 255, 255, 255, 255, 255, 255, 255, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 12, 255, 255, 255, 230, 255, 255, 255, 250, 255, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 6, 255, 255, 255, 194, 255, 255, 255, 254, 255, 255, 255, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 21, 255, 255, 255, 227, 255, 255, 255, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 6, 255, 255, 255, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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=18]
|
||||
image = SubResource( 146 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=147]
|
||||
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, 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=20]
|
||||
image = SubResource( 147 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=148]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 223, 223, 223, 8, 224, 224, 224, 227, 225, 225, 225, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 85, 226, 226, 226, 61, 0, 0, 0, 0, 226, 226, 226, 61, 225, 225, 225, 84, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 110, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 68, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 87, 224, 224, 224, 254, 225, 225, 225, 85, 0, 0, 0, 0, 225, 225, 225, 85, 224, 224, 224, 254, 225, 225, 225, 85, 0, 0, 0, 0, 224, 224, 224, 174, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 132, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 211, 224, 224, 224, 255, 225, 225, 225, 85, 0, 0, 0, 0, 225, 225, 225, 85, 224, 224, 224, 255, 224, 224, 224, 209, 0, 0, 0, 0, 223, 223, 223, 55, 224, 224, 224, 255, 224, 224, 224, 244, 222, 222, 222, 23, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 245, 224, 224, 224, 255, 225, 225, 225, 94, 0, 0, 0, 0, 223, 223, 223, 95, 224, 224, 224, 255, 224, 224, 224, 244, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 191, 224, 224, 224, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 199, 224, 224, 224, 255, 224, 224, 224, 221, 224, 224, 224, 124, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 197, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 223, 223, 223, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 64, 224, 224, 224, 249, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 248, 222, 222, 222, 62, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 223, 223, 223, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 222, 222, 54, 224, 224, 224, 219, 224, 224, 224, 255, 223, 223, 223, 218, 226, 226, 226, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 223, 223, 223, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 223, 223, 223, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 221, 224, 224, 224, 221, 224, 224, 224, 244, 224, 224, 224, 238, 224, 224, 224, 221, 225, 225, 225, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 236, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 151, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 10, 224, 224, 224, 148, 224, 224, 224, 234, 224, 224, 224, 225, 224, 224, 224, 122, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 97, 224, 224, 224, 242, 223, 223, 223, 97, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 14
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=22]
|
||||
image = SubResource( 148 )
|
||||
size = Vector2( 14, 16 )
|
||||
|
||||
[sub_resource type="Image" id=149]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 224, 224, 224, 83, 224, 224, 224, 207, 224, 224, 224, 246, 224, 224, 224, 204, 224, 224, 224, 236, 225, 225, 225, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 83, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 223, 223, 223, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 207, 224, 224, 224, 255, 224, 224, 224, 192, 225, 225, 225, 85, 224, 224, 224, 214, 224, 224, 224, 255, 223, 223, 223, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 242, 224, 224, 224, 255, 225, 225, 225, 86, 0, 0, 0, 0, 224, 224, 224, 124, 224, 224, 224, 255, 223, 223, 223, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 196, 224, 224, 224, 255, 224, 224, 224, 214, 224, 224, 224, 124, 224, 224, 224, 231, 224, 224, 224, 255, 223, 223, 223, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 60, 224, 224, 224, 250, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 50, 225, 225, 225, 168, 224, 224, 224, 209, 224, 224, 224, 167, 224, 224, 224, 198, 223, 223, 223, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 72, 225, 225, 225, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 133, 224, 224, 224, 255, 224, 224, 224, 222, 204, 204, 204, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 221, 221, 37, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 221, 221, 221, 37, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 230, 230, 230, 10, 223, 223, 223, 89, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 114, 225, 225, 225, 68, 224, 224, 224, 195, 224, 224, 224, 255, 224, 224, 224, 195, 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, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 164, 222, 222, 222, 31, 224, 224, 224, 244, 224, 224, 224, 255, 225, 225, 225, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 99, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 230, 219, 219, 219, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 32, 223, 223, 223, 87, 223, 223, 223, 121, 224, 224, 224, 249, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 198, 224, 224, 224, 100, 223, 223, 223, 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, 224, 224, 224, 108, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 105, 224, 224, 224, 231, 224, 224, 224, 207, 223, 223, 223, 161, 226, 226, 226, 78, 221, 221, 221, 37, 224, 224, 224, 115, 224, 224, 224, 189, 224, 224, 224, 216, 224, 224, 224, 241 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=24]
|
||||
image = SubResource( 149 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=25]
|
||||
content_margin_left = 5.0
|
||||
content_margin_right = 2.0
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=26]
|
||||
content_margin_left = 2.0
|
||||
content_margin_right = 5.0
|
||||
|
||||
[sub_resource type="Image" id=150]
|
||||
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=28]
|
||||
image = SubResource( 150 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=151]
|
||||
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 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, 37, 44, 59, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 174, 37, 44, 59, 254, 37, 44, 59, 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, 37, 44, 59, 64, 37, 44, 59, 254, 37, 44, 59, 174, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 126, 37, 44, 59, 254, 37, 44, 59, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 190, 37, 44, 59, 254, 37, 44, 59, 126, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 16, 37, 44, 59, 222, 37, 44, 59, 254, 37, 44, 59, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 16, 37, 44, 59, 158, 37, 44, 59, 254, 37, 44, 59, 238, 37, 44, 59, 16, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 16, 37, 44, 59, 190, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 206, 37, 44, 59, 96, 0, 0, 0, 0, 37, 44, 59, 16, 37, 44, 59, 64, 37, 44, 59, 206, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 222, 37, 44, 59, 16, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 16, 37, 44, 59, 206, 37, 44, 59, 206, 37, 44, 59, 222, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 238, 37, 44, 59, 222, 37, 44, 59, 206, 37, 44, 59, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 44, 59, 16, 37, 44, 59, 32, 0, 0, 0, 0, 37, 44, 59, 112, 37, 44, 59, 206, 37, 44, 59, 254, 37, 44, 59, 254, 37, 44, 59, 206, 37, 44, 59, 112, 37, 44, 59, 16, 37, 44, 59, 16, 37, 44, 59, 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, 37, 44, 59, 254, 37, 44, 59, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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=30]
|
||||
image = SubResource( 151 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=45]
|
||||
content_margin_left = 7.0
|
||||
content_margin_right = 7.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_bottom = 2.0
|
||||
draw_center = false
|
||||
border_width_left = 1
|
||||
border_width_top = 1
|
||||
border_width_right = 1
|
||||
border_width_bottom = 1
|
||||
border_color = Color( 0, 1, 0.333333, 1 )
|
||||
corner_radius_top_left = 2
|
||||
corner_radius_top_right = 2
|
||||
corner_radius_bottom_right = 2
|
||||
corner_radius_bottom_left = 2
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=107]
|
||||
content_margin_left = 5.0
|
||||
content_margin_right = 5.0
|
||||
content_margin_top = 5.0
|
||||
content_margin_bottom = 5.0
|
||||
bg_color = Color( 0.12549, 0.141176, 0.192157, 1 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=137]
|
||||
size = 17
|
||||
font_data = ExtResource( 7 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=61]
|
||||
size = 17
|
||||
use_mipmaps = true
|
||||
font_data = ExtResource( 3 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=62]
|
||||
size = 17
|
||||
use_mipmaps = true
|
||||
font_data = ExtResource( 5 )
|
||||
|
||||
[node name="CSVEditor" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
rect_clip_content = true
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Menu" type="HBoxContainer" parent="Container"]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 22.0
|
||||
|
||||
[node name="AlignMenu" type="MenuButton" parent="Container/Menu"]
|
||||
margin_right = 63.0
|
||||
margin_bottom = 22.0
|
||||
text = "Align"
|
||||
icon = SubResource( 2 )
|
||||
items = [ "Left", SubResource( 4 ), 0, false, false, 0, 0, null, "", false, "Center", SubResource( 6 ), 0, false, false, 1, 0, null, "", false, "Right", SubResource( 8 ), 0, false, false, 2, 0, null, "", false, "Fill", SubResource( 10 ), 0, false, false, 3, 0, null, "", false ]
|
||||
|
||||
[node name="EditMenu" type="MenuButton" parent="Container/Menu"]
|
||||
margin_left = 67.0
|
||||
margin_right = 122.0
|
||||
margin_bottom = 22.0
|
||||
text = "Edit"
|
||||
icon = SubResource( 12 )
|
||||
items = [ "Add Rows", SubResource( 14 ), 0, false, false, 0, 67108946, null, "", false, "Add Columns", SubResource( 16 ), 0, false, false, 1, 67108931, null, "", false, "Change Delimiter", SubResource( 18 ), 0, false, false, 2, 67108932, null, "", false, "Drop Rows", null, 0, false, false, 3, 0, null, "", false, "Drop Columns", null, 0, false, false, 4, 0, null, "", false ]
|
||||
|
||||
[node name="SettingsMenu" type="MenuButton" parent="Container/Menu"]
|
||||
margin_left = 126.0
|
||||
margin_right = 208.0
|
||||
margin_bottom = 22.0
|
||||
text = "Settings"
|
||||
icon = SubResource( 20 )
|
||||
items = [ "Change Editor Settings", SubResource( 22 ), 0, false, false, 0, 0, null, "", false, "Translate this file", SubResource( 24 ), 0, false, false, 1, 0, null, "", false ]
|
||||
|
||||
[node name="Scroll" type="ScrollContainer" parent="Container"]
|
||||
margin_top = 26.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 577.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Columns" type="HBoxContainer" parent="Container/Scroll"]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 551.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
custom_constants/separation = 1
|
||||
|
||||
[node name="_COLUMN_HEAD" type="VBoxContainer" parent="Container/Scroll/Columns"]
|
||||
margin_right = 12.0
|
||||
margin_bottom = 551.0
|
||||
size_flags_vertical = 3
|
||||
custom_constants/separation = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Label" type="Label" parent="Container/Scroll/Columns/_COLUMN_HEAD"]
|
||||
margin_right = 12.0
|
||||
margin_bottom = 25.0
|
||||
rect_min_size = Vector2( 0, 25 )
|
||||
text = "@"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="1" type="Label" parent="Container/Scroll/Columns/_COLUMN_HEAD"]
|
||||
margin_top = 26.0
|
||||
margin_right = 12.0
|
||||
margin_bottom = 51.0
|
||||
rect_min_size = Vector2( 0, 25 )
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 1
|
||||
text = "1"
|
||||
align = 2
|
||||
|
||||
[node name="0" type="VBoxContainer" parent="Container/Scroll/Columns"]
|
||||
margin_left = 13.0
|
||||
margin_right = 113.0
|
||||
margin_bottom = 551.0
|
||||
size_flags_vertical = 3
|
||||
custom_constants/separation = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="0" type="Label" parent="Container/Scroll/Columns/0"]
|
||||
margin_right = 100.0
|
||||
margin_bottom = 25.0
|
||||
rect_min_size = Vector2( 0, 25 )
|
||||
text = "1"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="1" type="LineEdit" parent="Container/Scroll/Columns/0"]
|
||||
margin_top = 26.0
|
||||
margin_right = 100.0
|
||||
margin_bottom = 51.0
|
||||
rect_min_size = Vector2( 100, 25 )
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="FileProperties" type="HBoxContainer" parent="Container"]
|
||||
margin_top = 581.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Dimensions" type="HBoxContainer" parent="Container/FileProperties"]
|
||||
margin_right = 338.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 3
|
||||
custom_constants/separation = 0
|
||||
|
||||
[node name="Label" type="Label" parent="Container/FileProperties/Dimensions"]
|
||||
margin_top = 2.0
|
||||
margin_right = 81.0
|
||||
margin_bottom = 16.0
|
||||
text = "Dimensions:"
|
||||
|
||||
[node name="Label2" type="Label" parent="Container/FileProperties/Dimensions"]
|
||||
margin_left = 81.0
|
||||
margin_top = 2.0
|
||||
margin_right = 126.0
|
||||
margin_bottom = 16.0
|
||||
custom_styles/normal = SubResource( 25 )
|
||||
custom_colors/font_color = Color( 0.454902, 0.454902, 0.454902, 1 )
|
||||
text = "(rows)"
|
||||
align = 2
|
||||
|
||||
[node name="RowsLbl" type="Label" parent="Container/FileProperties/Dimensions"]
|
||||
margin_left = 126.0
|
||||
margin_top = 2.0
|
||||
margin_right = 134.0
|
||||
margin_bottom = 16.0
|
||||
custom_colors/font_color = Color( 0, 1, 0.321569, 1 )
|
||||
text = "0"
|
||||
|
||||
[node name="Label3" type="Label" parent="Container/FileProperties/Dimensions"]
|
||||
margin_left = 134.0
|
||||
margin_top = 2.0
|
||||
margin_right = 141.0
|
||||
margin_bottom = 16.0
|
||||
text = "x"
|
||||
|
||||
[node name="ColumnsLbl" type="Label" parent="Container/FileProperties/Dimensions"]
|
||||
margin_left = 141.0
|
||||
margin_top = 2.0
|
||||
margin_right = 149.0
|
||||
margin_bottom = 16.0
|
||||
custom_colors/font_color = Color( 0, 1, 0.321569, 1 )
|
||||
text = "0"
|
||||
|
||||
[node name="Label4" type="Label" parent="Container/FileProperties/Dimensions"]
|
||||
margin_left = 149.0
|
||||
margin_top = 2.0
|
||||
margin_right = 219.0
|
||||
margin_bottom = 16.0
|
||||
custom_styles/normal = SubResource( 26 )
|
||||
custom_colors/font_color = Color( 0.454902, 0.454902, 0.454902, 1 )
|
||||
text = "(columns)"
|
||||
|
||||
[node name="Delimiter" type="HBoxContainer" parent="Container/FileProperties"]
|
||||
margin_left = 342.0
|
||||
margin_right = 681.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 3
|
||||
custom_constants/separation = 0
|
||||
|
||||
[node name="Label" type="Label" parent="Container/FileProperties/Delimiter"]
|
||||
margin_top = 2.0
|
||||
margin_right = 65.0
|
||||
margin_bottom = 16.0
|
||||
text = "Delimiter:"
|
||||
|
||||
[node name="DelimiterLbl" type="Label" parent="Container/FileProperties/Delimiter"]
|
||||
margin_left = 65.0
|
||||
margin_top = 2.0
|
||||
margin_right = 72.0
|
||||
margin_bottom = 16.0
|
||||
custom_colors/font_color = Color( 0, 1, 0.156863, 1 )
|
||||
text = "|"
|
||||
|
||||
[node name="Readonly" parent="Container/FileProperties" instance=ExtResource( 1 )]
|
||||
custom_icons/checked = SubResource( 28 )
|
||||
custom_icons/unchecked = SubResource( 30 )
|
||||
|
||||
[node name="EditDialog" type="AcceptDialog" parent="."]
|
||||
visible = true
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -118.0
|
||||
margin_top = -36.0002
|
||||
margin_right = 118.0
|
||||
margin_bottom = 36.0002
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
window_title = "SOME TEXT"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Options" type="VBoxContainer" parent="EditDialog"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.555556
|
||||
margin_left = 8.0
|
||||
margin_top = 8.0
|
||||
margin_right = -8.0
|
||||
margin_bottom = -3.99987
|
||||
alignment = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": true
|
||||
}
|
||||
|
||||
[node name="Rows" type="HBoxContainer" parent="EditDialog/Options"]
|
||||
visible = false
|
||||
margin_top = 2.0
|
||||
margin_right = 219.0
|
||||
margin_bottom = 26.0
|
||||
alignment = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": true
|
||||
}
|
||||
|
||||
[node name="Label" type="Label" parent="EditDialog/Options/Rows"]
|
||||
margin_left = 23.0
|
||||
margin_top = 5.0
|
||||
margin_right = 89.0
|
||||
margin_bottom = 19.0
|
||||
text = "Add Rows:"
|
||||
|
||||
[node name="LessBtn" type="Button" parent="EditDialog/Options/Rows"]
|
||||
margin_left = 93.0
|
||||
margin_right = 110.0
|
||||
margin_bottom = 24.0
|
||||
text = "-"
|
||||
|
||||
[node name="NewRows" type="LineEdit" parent="EditDialog/Options/Rows"]
|
||||
margin_left = 114.0
|
||||
margin_right = 172.0
|
||||
margin_bottom = 24.0
|
||||
align = 1
|
||||
placeholder_text = "0"
|
||||
|
||||
[node name="MoreBtn" type="Button" parent="EditDialog/Options/Rows"]
|
||||
margin_left = 176.0
|
||||
margin_right = 196.0
|
||||
margin_bottom = 24.0
|
||||
text = "+"
|
||||
|
||||
[node name="Columns" type="HBoxContainer" parent="EditDialog/Options"]
|
||||
visible = false
|
||||
margin_top = 34.0
|
||||
margin_right = 278.0
|
||||
margin_bottom = 58.0
|
||||
alignment = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": true
|
||||
}
|
||||
|
||||
[node name="Label" type="Label" parent="EditDialog/Options/Columns"]
|
||||
margin_left = 63.0
|
||||
margin_top = 5.0
|
||||
margin_right = 152.0
|
||||
margin_bottom = 19.0
|
||||
text = "Add Columns:"
|
||||
|
||||
[node name="LessBtn" type="Button" parent="EditDialog/Options/Columns"]
|
||||
margin_left = 120.0
|
||||
margin_top = -26.0
|
||||
margin_right = 137.0
|
||||
margin_bottom = -2.0
|
||||
text = "-"
|
||||
|
||||
[node name="NewColumns" type="LineEdit" parent="EditDialog/Options/Columns"]
|
||||
margin_left = 156.0
|
||||
margin_right = 214.0
|
||||
margin_bottom = 24.0
|
||||
align = 1
|
||||
placeholder_text = "0"
|
||||
|
||||
[node name="MoreBtn" type="Button" parent="EditDialog/Options/Columns"]
|
||||
margin_left = 205.0
|
||||
margin_top = -26.0
|
||||
margin_right = 225.0
|
||||
margin_bottom = -2.0
|
||||
text = "+"
|
||||
|
||||
[node name="Delimiter" type="HBoxContainer" parent="EditDialog/Options"]
|
||||
visible = false
|
||||
margin_top = 2.0
|
||||
margin_right = 219.0
|
||||
margin_bottom = 26.0
|
||||
alignment = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": true
|
||||
}
|
||||
|
||||
[node name="Label" type="Label" parent="EditDialog/Options/Delimiter"]
|
||||
margin_left = 26.0
|
||||
margin_top = 5.0
|
||||
margin_right = 131.0
|
||||
margin_bottom = 19.0
|
||||
text = "Using Delimiter:"
|
||||
|
||||
[node name="DelimiterLine" type="LineEdit" parent="EditDialog/Options/Delimiter"]
|
||||
margin_left = 135.0
|
||||
margin_right = 193.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="DropRows" type="VBoxContainer" parent="EditDialog/Options"]
|
||||
margin_top = 12.0
|
||||
margin_right = 219.0
|
||||
margin_bottom = 12.0
|
||||
size_flags_horizontal = 3
|
||||
alignment = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": true
|
||||
}
|
||||
|
||||
[node name="DropColumns" type="HBoxContainer" parent="EditDialog/Options"]
|
||||
margin_top = 16.0
|
||||
margin_right = 219.0
|
||||
margin_bottom = 16.0
|
||||
alignment = 1
|
||||
|
||||
[node name="EditorSettingsDialog" type="AcceptDialog" parent="."]
|
||||
anchor_left = 0.359
|
||||
anchor_top = 0.43
|
||||
anchor_right = 0.641
|
||||
anchor_bottom = 0.64
|
||||
margin_left = 0.383972
|
||||
margin_top = -2.0
|
||||
margin_right = -0.384033
|
||||
margin_bottom = -3.05176e-05
|
||||
grow_horizontal = 2
|
||||
window_title = "Change Editor Settings"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="EditorSettings" type="VBoxContainer" parent="EditorSettingsDialog"]
|
||||
anchor_top = 0.064
|
||||
anchor_right = 0.979
|
||||
anchor_bottom = 0.617
|
||||
margin_left = 8.0
|
||||
margin_top = -0.191998
|
||||
margin_right = -1.952
|
||||
margin_bottom = 13.024
|
||||
alignment = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": true
|
||||
}
|
||||
|
||||
[node name="ColumnsLength" type="HBoxContainer" parent="EditorSettingsDialog/EditorSettings"]
|
||||
margin_top = 1.0
|
||||
margin_right = 271.0
|
||||
margin_bottom = 25.0
|
||||
|
||||
[node name="Label" type="Label" parent="EditorSettingsDialog/EditorSettings/ColumnsLength"]
|
||||
margin_top = 5.0
|
||||
margin_right = 120.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 120, 0 )
|
||||
text = "Columns length:"
|
||||
|
||||
[node name="ColumnsLengthLine" type="LineEdit" parent="EditorSettingsDialog/EditorSettings/ColumnsLength"]
|
||||
margin_left = 124.0
|
||||
margin_right = 182.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label2" type="Label" parent="EditorSettingsDialog/EditorSettings/ColumnsLength"]
|
||||
margin_left = 186.0
|
||||
margin_top = 5.0
|
||||
margin_right = 201.0
|
||||
margin_bottom = 19.0
|
||||
text = "px"
|
||||
|
||||
[node name="ColumnsSpacing" type="HBoxContainer" parent="EditorSettingsDialog/EditorSettings"]
|
||||
margin_top = 29.0
|
||||
margin_right = 271.0
|
||||
margin_bottom = 53.0
|
||||
|
||||
[node name="Label" type="Label" parent="EditorSettingsDialog/EditorSettings/ColumnsSpacing"]
|
||||
margin_top = 5.0
|
||||
margin_right = 120.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 120, 0 )
|
||||
text = "Columns spacing:"
|
||||
|
||||
[node name="ColumnsSpacingLine" type="LineEdit" parent="EditorSettingsDialog/EditorSettings/ColumnsSpacing"]
|
||||
margin_left = 124.0
|
||||
margin_right = 182.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label2" type="Label" parent="EditorSettingsDialog/EditorSettings/ColumnsSpacing"]
|
||||
margin_left = 186.0
|
||||
margin_top = 5.0
|
||||
margin_right = 201.0
|
||||
margin_bottom = 19.0
|
||||
text = "px"
|
||||
|
||||
[node name="RowsSpacing" type="HBoxContainer" parent="EditorSettingsDialog/EditorSettings"]
|
||||
margin_top = 57.0
|
||||
margin_right = 271.0
|
||||
margin_bottom = 81.0
|
||||
|
||||
[node name="Label" type="Label" parent="EditorSettingsDialog/EditorSettings/RowsSpacing"]
|
||||
margin_top = 5.0
|
||||
margin_right = 120.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 120, 0 )
|
||||
text = "Rows spacing:"
|
||||
|
||||
[node name="RowsSpacingLine" type="LineEdit" parent="EditorSettingsDialog/EditorSettings/RowsSpacing"]
|
||||
margin_left = 124.0
|
||||
margin_right = 182.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label2" type="Label" parent="EditorSettingsDialog/EditorSettings/RowsSpacing"]
|
||||
margin_left = 186.0
|
||||
margin_top = 5.0
|
||||
margin_right = 201.0
|
||||
margin_bottom = 19.0
|
||||
text = "px"
|
||||
|
||||
[node name="TranslationDialog" type="WindowDialog" parent="."]
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -250.0
|
||||
margin_top = -223.0
|
||||
margin_right = 251.0
|
||||
margin_bottom = 223.0
|
||||
window_title = "Translate this File"
|
||||
resizable = true
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="TranslationContainer" type="VBoxContainer" parent="TranslationDialog"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 20.0
|
||||
margin_top = 16.0
|
||||
margin_right = -20.0
|
||||
margin_bottom = -16.0
|
||||
custom_constants/separation = 10
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="AuthToken" type="HBoxContainer" parent="TranslationDialog/TranslationContainer"]
|
||||
margin_right = 461.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label" type="Label" parent="TranslationDialog/TranslationContainer/AuthToken"]
|
||||
margin_top = 5.0
|
||||
margin_right = 76.0
|
||||
margin_bottom = 19.0
|
||||
custom_colors/font_color = Color( 1, 1, 1, 1 )
|
||||
text = "Auth Token:"
|
||||
|
||||
[node name="TokenLine" type="LineEdit" parent="TranslationDialog/TranslationContainer/AuthToken"]
|
||||
margin_left = 80.0
|
||||
margin_right = 389.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="SecretCheck" type="CheckBox" parent="TranslationDialog/TranslationContainer/AuthToken"]
|
||||
margin_left = 393.0
|
||||
margin_right = 461.0
|
||||
margin_bottom = 24.0
|
||||
text = "secret"
|
||||
|
||||
[node name="Keys" type="VBoxContainer" parent="TranslationDialog/TranslationContainer"]
|
||||
margin_top = 34.0
|
||||
margin_right = 461.0
|
||||
margin_bottom = 192.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Label" type="Label" parent="TranslationDialog/TranslationContainer/Keys"]
|
||||
visible = false
|
||||
margin_right = 360.0
|
||||
margin_bottom = 14.0
|
||||
text = "Keys to translate:"
|
||||
align = 1
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="TranslationDialog/TranslationContainer/Keys"]
|
||||
margin_right = 461.0
|
||||
margin_bottom = 158.0
|
||||
mouse_filter = 1
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="KeysTree" type="Tree" parent="TranslationDialog/TranslationContainer/Keys/ScrollContainer"]
|
||||
margin_right = 461.0
|
||||
margin_bottom = 158.0
|
||||
rect_clip_content = false
|
||||
mouse_filter = 1
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
allow_reselect = true
|
||||
hide_root = true
|
||||
|
||||
[node name="Languages" type="HBoxContainer" parent="TranslationDialog/TranslationContainer"]
|
||||
margin_top = 202.0
|
||||
margin_right = 461.0
|
||||
margin_bottom = 360.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Label" type="Label" parent="TranslationDialog/TranslationContainer/Languages"]
|
||||
margin_top = 72.0
|
||||
margin_right = 58.0
|
||||
margin_bottom = 86.0
|
||||
text = "Translate"
|
||||
|
||||
[node name="SourceLangMenu" type="OptionButton" parent="TranslationDialog/TranslationContainer/Languages"]
|
||||
margin_left = 62.0
|
||||
margin_top = 69.0
|
||||
margin_right = 134.0
|
||||
margin_bottom = 89.0
|
||||
rect_min_size = Vector2( 70, 0 )
|
||||
size_flags_vertical = 4
|
||||
text = "source"
|
||||
align = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="TranslationDialog/TranslationContainer/Languages"]
|
||||
margin_left = 138.0
|
||||
margin_top = 72.0
|
||||
margin_right = 151.0
|
||||
margin_bottom = 86.0
|
||||
text = "to"
|
||||
|
||||
[node name="TargetLangs" type="ScrollContainer" parent="TranslationDialog/TranslationContainer/Languages"]
|
||||
margin_left = 155.0
|
||||
margin_right = 461.0
|
||||
margin_bottom = 158.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="TargetLangsTree" type="Tree" parent="TranslationDialog/TranslationContainer/Languages/TargetLangs"]
|
||||
margin_right = 306.0
|
||||
margin_bottom = 158.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
allow_reselect = true
|
||||
hide_root = true
|
||||
|
||||
[node name="ErrorLbl" type="Label" parent="TranslationDialog/TranslationContainer"]
|
||||
margin_top = 370.0
|
||||
margin_right = 461.0
|
||||
margin_bottom = 384.0
|
||||
custom_colors/font_color = Color( 1, 0, 0.258824, 1 )
|
||||
text = "ERROR"
|
||||
autowrap = true
|
||||
|
||||
[node name="Buttons" type="HBoxContainer" parent="TranslationDialog/TranslationContainer"]
|
||||
margin_top = 394.0
|
||||
margin_right = 461.0
|
||||
margin_bottom = 414.0
|
||||
|
||||
[node name="GetTokenBtn" type="Button" parent="TranslationDialog/TranslationContainer/Buttons"]
|
||||
margin_right = 79.0
|
||||
margin_bottom = 20.0
|
||||
custom_styles/normal = SubResource( 45 )
|
||||
custom_colors/font_color = Color( 0, 1, 0.368627, 1 )
|
||||
text = "Get Token"
|
||||
|
||||
[node name="AcceptBtn" type="Button" parent="TranslationDialog/TranslationContainer/Buttons"]
|
||||
margin_left = 391.0
|
||||
margin_right = 461.0
|
||||
margin_bottom = 20.0
|
||||
size_flags_horizontal = 10
|
||||
text = "Translate"
|
||||
|
||||
[node name="HowTo" type="WindowDialog" parent="."]
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -430.0
|
||||
margin_top = -252.0
|
||||
margin_right = 430.0
|
||||
margin_bottom = 252.0
|
||||
window_title = "How to get an OAuth 2 Token for Google API"
|
||||
resizable = true
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="HowTo"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
custom_styles/normal = SubResource( 107 )
|
||||
custom_fonts/mono_font = SubResource( 137 )
|
||||
custom_fonts/bold_font = SubResource( 61 )
|
||||
custom_fonts/normal_font = SubResource( 62 )
|
||||
bbcode_enabled = true
|
||||
bbcode_text = "In order to use Google Translate APIs, an Auth Token is always required.
|
||||
Currently, to have a Google Token, it is required to have billings activated to your own Google account.
|
||||
Anyway there's a little workaround which will let you have free auth tokens from Google itself, without linking any bank account or information to your own account.
|
||||
Just follow these little steps and you will be able to use Google Translate APIs inside and outside of this plugin.
|
||||
|
||||
[b]1. Access to Google OAuth 2 Playground[/b]
|
||||
Follow [url=https://developers.google.com/oauthplayground/]this link[/url] to access Google OAuth 2 Playground.
|
||||
This is a developers tool which allows users to have free oauth tokens to make any kind of request to REST APIs (just like Translate ones).
|
||||
Look for [code]Cloud Translation[/code].
|
||||
[center][img]res://addons/file-editor/howto/api_token/msedge_zmozPZZj3p.png[/img][/center]
|
||||
|
||||
[b]2. Give access to Playground[/b]
|
||||
Click on [code]Cloud Translation API v3[/code] to explode it, then select [code]https://www.googleapis.com/auth/cloud-translation[/code] and press on [code]Authorize APIs[/code].
|
||||
Google will ask to give access to Google OAuth 2 Playground. Allow it and proceed.
|
||||
|
||||
[b]3. Create a Token[/b]
|
||||
Once you have given permission to Google, you will be able to create your own token for free.
|
||||
1. Explode \"Step 2\" if not opened
|
||||
2. Check [code]Auto-refresh the token before it expires[/code]
|
||||
3. Press [code]Exchange authorization code[/code] button
|
||||
4. Copy the whole \"Access Token\" input field and paste it inside the Translation dialog box
|
||||
[center][img]res://addons/file-editor/howto/api_token/LR7EGXjHCm.png[/img][/center]
|
||||
|
||||
[b]Note[/b]
|
||||
The token will always expires after ~3000 seconds, so always make sure to copy and paste it again (if you have already checked the Auto-refresh option, otherwise refresh it manually with the button inside the form)"
|
||||
text = "In order to use Google Translate APIs, an Auth Token is always required.
|
||||
Currently, to have a Google Token, it is required to have billings activated to your own Google account.
|
||||
Anyway there's a little workaround which will let you have free auth tokens from Google itself, without linking any bank account or information to your own account.
|
||||
Just follow these little steps and you will be able to use Google Translate APIs inside and outside of this plugin.
|
||||
|
||||
1. Access to Google OAuth 2 Playground
|
||||
Follow this link to access Google OAuth 2 Playground.
|
||||
This is a developers tool which allows users to have free oauth tokens to make any kind of request to REST APIs (just like Translate ones).
|
||||
Look for Cloud Translation.
|
||||
|
||||
|
||||
2. Give access to Playground
|
||||
Click on Cloud Translation API v3 to explode it, then select https://www.googleapis.com/auth/cloud-translation and press on Authorize APIs.
|
||||
Google will ask to give access to Google OAuth 2 Playground. Allow it and proceed.
|
||||
|
||||
3. Create a Token
|
||||
Once you have given permission to Google, you will be able to create your own token for free.
|
||||
1. Explode \"Step 2\" if not opened
|
||||
2. Check Auto-refresh the token before it expires
|
||||
3. Press Exchange authorization code button
|
||||
4. Copy the whole \"Access Token\" input field and paste it inside the Translation dialog box
|
||||
|
||||
|
||||
Note
|
||||
The token will always expires after ~3000 seconds, so always make sure to copy and paste it again (if you have already checked the Auto-refresh option, otherwise refresh it manually with the button inside the form)"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
364
addons/file-editor/scenes/FileEditor.tscn
Normal file
@ -0,0 +1,364 @@
|
||||
[gd_scene load_steps=27 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=11]
|
||||
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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=13]
|
||||
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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=15]
|
||||
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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=17]
|
||||
image = SubResource( 32 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=19]
|
||||
image = SubResource( 33 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=34]
|
||||
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( 34 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=35]
|
||||
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( 35 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=24]
|
||||
|
||||
[node name="FileEditor" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 7.0
|
||||
margin_right = -6.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="FileEditorContainer" type="VBoxContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 6.0
|
||||
margin_right = -5.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="TobBar" type="HBoxContainer" parent="FileEditorContainer"]
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 22.0
|
||||
|
||||
[node name="file_btn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_right = 54.0
|
||||
margin_bottom = 22.0
|
||||
text = "File"
|
||||
icon = SubResource( 2 )
|
||||
items = [ "New File", null, 0, false, false, 0, 268435534, null, "", false, "Open File", null, 0, false, false, 1, 268435535, null, "", false, "Close File", null, 0, false, false, 2, 335544387, null, "", false, "", null, 0, false, false, -1, 0, null, "", true, "Save File", null, 0, false, false, 3, 268435539, null, "", false, "Save File as...", null, 0, false, false, 4, 335544403, null, "", false, "Delete File", null, 0, false, false, 5, 268435524, null, "", false, "", null, 0, false, false, -1, 0, null, "", true, "Search in file...", null, 0, false, false, 6, 268435526, null, "", false, "Replace occurencies", null, 0, false, false, 7, 268435538, null, "", false ]
|
||||
|
||||
[node name="editor_btn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 58.0
|
||||
margin_right = 126.0
|
||||
margin_bottom = 22.0
|
||||
text = "Editor"
|
||||
icon = SubResource( 4 )
|
||||
items = [ "Vanilla Editor", null, 0, false, false, 0, 268435505, null, "", false, "CSV Editor", null, 0, false, false, 1, 268435506, null, "", false, "CFG/INI Editor", null, 0, false, false, 2, 268435507, null, "", false ]
|
||||
|
||||
[node name="preview_btn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 130.0
|
||||
margin_right = 211.0
|
||||
margin_bottom = 22.0
|
||||
text = "Preview"
|
||||
icon = SubResource( 6 )
|
||||
items = [ "BBCode Preview", null, 0, false, false, 0, 0, null, "", false, "Markdown Preview", null, 0, false, false, 1, 0, null, "", false, "HTML Preview", null, 0, false, false, 2, 0, null, "", false, "CSV Preview [coming soon]", null, 0, false, true, 3, 0, null, "", false, "XML Preview [coming soon]", null, 0, false, true, 4, 0, null, "", false, "JSON Preview [coming soon]", null, 0, false, true, 5, 0, null, "", false ]
|
||||
|
||||
[node name="SettingsBtn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 215.0
|
||||
margin_right = 297.0
|
||||
margin_bottom = 22.0
|
||||
text = "Settings"
|
||||
icon = SubResource( 6 )
|
||||
items = [ "Change Font", null, 0, false, false, 0, 0, null, "", false ]
|
||||
|
||||
[node name="version" type="Label" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 961.0
|
||||
margin_top = 2.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 10
|
||||
custom_fonts/font = SubResource( 7 )
|
||||
custom_colors/font_color = Color( 0.121569, 0.145098, 0.192157, 1 )
|
||||
text = "v1.7.4"
|
||||
align = 1
|
||||
|
||||
[node name="SplitContainer" type="HSplitContainer" parent="FileEditorContainer"]
|
||||
margin_top = 26.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 600.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
split_offset = 150
|
||||
|
||||
[node name="FileContainer" type="VBoxContainer" parent="FileEditorContainer/SplitContainer"]
|
||||
margin_right = 153.0
|
||||
margin_bottom = 574.0
|
||||
|
||||
[node name="OpenFileList" type="ItemList" parent="FileEditorContainer/SplitContainer/FileContainer"]
|
||||
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 ]
|
||||
allow_reselect = true
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="FileEditorContainer/SplitContainer/FileContainer"]
|
||||
margin_top = 574.0
|
||||
margin_right = 153.0
|
||||
margin_bottom = 574.0
|
||||
rect_min_size = Vector2( 2, 0 )
|
||||
custom_styles/separator = SubResource( 24 )
|
||||
custom_constants/separation = 0
|
||||
|
||||
[node name="EditorContainer" type="VBoxContainer" parent="FileEditorContainer/SplitContainer"]
|
||||
margin_left = 165.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 574.0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="FileEditorContainer/SplitContainer/EditorContainer"]
|
||||
margin_right = 835.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label" type="Label" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_top = 5.0
|
||||
margin_right = 71.0
|
||||
margin_bottom = 19.0
|
||||
text = "Editing file:"
|
||||
|
||||
[node name="OpenFileName" type="LineEdit" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_left = 75.0
|
||||
margin_right = 653.0
|
||||
margin_bottom = 24.0
|
||||
mouse_filter = 1
|
||||
size_flags_horizontal = 3
|
||||
text = "res://test.csv"
|
||||
editable = false
|
||||
|
||||
[node name="wrap_button" type="OptionButton" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_left = 657.0
|
||||
margin_right = 741.0
|
||||
margin_bottom = 24.0
|
||||
text = "No Wrap"
|
||||
items = [ "No Wrap", null, false, 0, null, "Soft Wrap", null, false, 1, null ]
|
||||
selected = 0
|
||||
|
||||
[node name="map_button" type="OptionButton" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_left = 745.0
|
||||
margin_right = 835.0
|
||||
margin_bottom = 24.0
|
||||
text = "Hide Map"
|
||||
items = [ "Hide Map", null, false, 0, null, "Show Map", null, false, 1, null ]
|
||||
selected = 0
|
||||
|
||||
[node name="FileList" type="FileDialog" parent="."]
|
||||
margin_top = 24.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
size_flags_vertical = 3
|
||||
popup_exclusive = true
|
||||
window_title = "Salva un file"
|
||||
dialog_hide_on_ok = true
|
||||
filters = PoolStringArray( "*.txt ; Plain Text File", "*.rtf ; Rich Text Format File", "*.log ; Log File", "*.md ; MD File", "*.doc ; WordPad Document", "*.doc ; Microsoft Word Document", "*.docm ; Word Open XML Macro-Enabled Document", "*.docx ; Microsoft Word Open XML Document", "*.bbs ; Bulletin Board System Text", "*.dat ; Data File", "*.xml ; XML File", "*.sql ; SQL database file", "*.json ; JavaScript Object Notation File", "*.html ; HyperText Markup Language", "*.csv ; Comma-separated values", "*.cfg ; Configuration File", "*.ini ; Initialization File (same as .cfg Configuration File)", "*.csv ; Comma-separated values File", "*.res ; Resource File" )
|
||||
show_hidden_files = true
|
||||
|
||||
[node name="NewFileDialogue" type="AcceptDialog" parent="."]
|
||||
margin_left = 348.254
|
||||
margin_top = 232.623
|
||||
margin_right = 644.254
|
||||
margin_bottom = 321.623
|
||||
window_title = "Create new File"
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="NewFileDialogue"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 8.0
|
||||
margin_top = 8.0
|
||||
margin_right = -8.0
|
||||
margin_bottom = -36.0
|
||||
|
||||
[node name="Label" type="Label" parent="NewFileDialogue/VBoxContainer"]
|
||||
margin_right = 280.0
|
||||
margin_bottom = 16.0
|
||||
size_flags_vertical = 3
|
||||
text = "Insert file name (no extension needed)"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="new_filename" type="LineEdit" parent="NewFileDialogue/VBoxContainer"]
|
||||
margin_left = 40.0
|
||||
margin_top = 20.0
|
||||
margin_right = 240.0
|
||||
margin_bottom = 44.0
|
||||
rect_min_size = Vector2( 200, 0 )
|
||||
size_flags_horizontal = 6
|
||||
size_flags_vertical = 3
|
||||
clear_button_enabled = true
|
||||
placeholder_text = "example"
|
||||
|
||||
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."]
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -323.5
|
||||
margin_top = -37.5
|
||||
margin_right = 323.5
|
||||
margin_bottom = 37.5
|
||||
window_title = "Unsaved changes"
|
||||
dialog_text = "There are some unsaved changes.
|
||||
Press \"OK\" if you want to close this tab anyway, or \"cancel\" if you want to keep on editing your file."
|
||||
|
||||
[node name="SelectFontDialog" type="FileDialog" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 222.0
|
||||
margin_top = 132.0
|
||||
margin_right = -221.0
|
||||
margin_bottom = -131.0
|
||||
window_title = "Select a Font"
|
||||
resizable = true
|
||||
mode = 0
|
||||
access = 2
|
||||
filters = PoolStringArray( "*.TTF", "*.ttf" )
|
||||
current_dir = "/COMPUTER/GodotEngine/GDScript/[Plugin]FileEditor"
|
||||
current_path = "/COMPUTER/GodotEngine/GDScript/[Plugin]FileEditor/"
|
||||
144
addons/file-editor/scenes/FileScene.tscn
Normal file
@ -0,0 +1,144 @@
|
||||
[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"]
|
||||
392
addons/file-editor/scenes/IniEditor.tscn
Normal file
@ -0,0 +1,392 @@
|
||||
[gd_scene load_steps=17 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/IniVisualEditor.gd" type="Script" id=1]
|
||||
|
||||
[sub_resource type="Image" id=1]
|
||||
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, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 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( 1 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=3]
|
||||
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, 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, 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, 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, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 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, 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, 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, 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, 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, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=4]
|
||||
image = SubResource( 3 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=5]
|
||||
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, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 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, 254, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 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, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 64, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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( 5 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=7]
|
||||
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 142, 224, 224, 224, 238, 224, 224, 224, 238, 224, 224, 224, 174, 224, 224, 224, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 224, 224, 224, 238, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 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, 158, 224, 224, 224, 254, 224, 224, 224, 190, 224, 224, 224, 48, 224, 224, 224, 32, 224, 224, 224, 190, 224, 224, 224, 254, 224, 224, 224, 158, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 224, 224, 224, 254, 224, 224, 224, 32, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 32, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 158, 224, 224, 224, 254, 224, 224, 224, 190, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 158, 224, 224, 224, 254, 224, 224, 224, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 32, 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, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 158, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 190, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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=8]
|
||||
image = SubResource( 7 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=9]
|
||||
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, 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, 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, 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, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 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, 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, 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, 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, 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, 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, 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 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=10]
|
||||
image = SubResource( 9 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=11]
|
||||
|
||||
[sub_resource type="Image" id=12]
|
||||
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=13]
|
||||
image = SubResource( 12 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=14]
|
||||
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, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 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, 254, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 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, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 64, 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, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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]
|
||||
image = SubResource( 14 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[node name="IniEditor" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
|
||||
[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 595.0
|
||||
size_flags_vertical = 3
|
||||
split_offset = 100
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HSplitContainer"]
|
||||
margin_right = 174.0
|
||||
margin_bottom = 595.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
margin_right = 174.0
|
||||
margin_bottom = 16.0
|
||||
|
||||
[node name="sections_icon" type="TextureRect" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer"]
|
||||
margin_right = 16.0
|
||||
margin_bottom = 16.0
|
||||
texture = SubResource( 2 )
|
||||
stretch_mode = 6
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer"]
|
||||
margin_left = 20.0
|
||||
margin_top = 1.0
|
||||
margin_right = 174.0
|
||||
margin_bottom = 15.0
|
||||
size_flags_horizontal = 7
|
||||
text = "Sections"
|
||||
|
||||
[node name="sections2" type="ItemList" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
margin_top = 20.0
|
||||
margin_right = 174.0
|
||||
margin_bottom = 567.0
|
||||
size_flags_vertical = 3
|
||||
allow_reselect = true
|
||||
auto_height = true
|
||||
same_column_width = true
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
margin_top = 571.0
|
||||
margin_right = 174.0
|
||||
margin_bottom = 595.0
|
||||
alignment = 1
|
||||
|
||||
[node name="btn_add_section" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2"]
|
||||
margin_left = 57.0
|
||||
margin_right = 85.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Add a new Section"
|
||||
disabled = true
|
||||
icon = SubResource( 4 )
|
||||
|
||||
[node name="btn_remove_section" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2"]
|
||||
margin_left = 89.0
|
||||
margin_right = 117.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Remove selected Section"
|
||||
disabled = true
|
||||
icon = SubResource( 6 )
|
||||
|
||||
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/HSplitContainer"]
|
||||
margin_left = 186.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 595.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer2"]
|
||||
margin_right = 838.0
|
||||
margin_bottom = 16.0
|
||||
|
||||
[node name="keys_icon" type="TextureRect" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer2"]
|
||||
margin_right = 16.0
|
||||
margin_bottom = 16.0
|
||||
texture = SubResource( 8 )
|
||||
stretch_mode = 6
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer2"]
|
||||
margin_left = 20.0
|
||||
margin_top = 1.0
|
||||
margin_right = 838.0
|
||||
margin_bottom = 15.0
|
||||
size_flags_horizontal = 7
|
||||
text = "Keys"
|
||||
|
||||
[node name="keys" type="Tree" parent="VBoxContainer/HSplitContainer/VBoxContainer2"]
|
||||
margin_top = 20.0
|
||||
margin_right = 838.0
|
||||
margin_bottom = 567.0
|
||||
size_flags_vertical = 3
|
||||
columns = 2
|
||||
allow_reselect = true
|
||||
hide_folding = true
|
||||
hide_root = true
|
||||
select_mode = 1
|
||||
|
||||
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer2"]
|
||||
margin_top = 571.0
|
||||
margin_right = 838.0
|
||||
margin_bottom = 595.0
|
||||
alignment = 1
|
||||
|
||||
[node name="btn_add_key" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 275.0
|
||||
margin_right = 357.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Add a new Key"
|
||||
disabled = true
|
||||
text = "Add key"
|
||||
icon = SubResource( 10 )
|
||||
|
||||
[node name="VSeparator2" type="VSeparator" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 361.0
|
||||
margin_right = 365.0
|
||||
margin_bottom = 24.0
|
||||
custom_styles/separator = SubResource( 11 )
|
||||
|
||||
[node name="btn_edit_key" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 369.0
|
||||
margin_right = 451.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Edit selected Key"
|
||||
disabled = true
|
||||
text = "Edit Key"
|
||||
icon = SubResource( 13 )
|
||||
|
||||
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 455.0
|
||||
margin_right = 459.0
|
||||
margin_bottom = 24.0
|
||||
custom_styles/separator = SubResource( 11 )
|
||||
|
||||
[node name="btn_remove_key" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 463.0
|
||||
margin_right = 563.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Remove selected Key"
|
||||
disabled = true
|
||||
text = "Delete key"
|
||||
icon = SubResource( 15 )
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
|
||||
margin_top = 599.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
rect_min_size = Vector2( 0, 1 )
|
||||
custom_constants/separation = 0
|
||||
|
||||
[node name="Section" type="AcceptDialog" parent="."]
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -153.0
|
||||
margin_top = -29.0
|
||||
margin_right = 155.0
|
||||
margin_bottom = 98.0
|
||||
window_title = ""
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="Section"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 8.0
|
||||
margin_top = 8.0
|
||||
margin_right = -8.0
|
||||
margin_bottom = -36.0
|
||||
|
||||
[node name="section" type="HBoxContainer" parent="Section/Container"]
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label" type="Label" parent="Section/Container/section"]
|
||||
margin_top = 5.0
|
||||
margin_right = 91.0
|
||||
margin_bottom = 19.0
|
||||
text = "Section name:"
|
||||
|
||||
[node name="_name" type="LineEdit" parent="Section/Container/section"]
|
||||
margin_left = 95.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
context_menu_enabled = false
|
||||
|
||||
[node name="key" type="HBoxContainer" parent="Section/Container"]
|
||||
margin_top = 28.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 52.0
|
||||
|
||||
[node name="Label" type="Label" parent="Section/Container/key"]
|
||||
margin_top = 5.0
|
||||
margin_right = 91.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 91, 0 )
|
||||
text = "Key name:"
|
||||
align = 1
|
||||
|
||||
[node name="_name" type="LineEdit" parent="Section/Container/key"]
|
||||
margin_left = 95.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
context_menu_enabled = false
|
||||
|
||||
[node name="value" type="HBoxContainer" parent="Section/Container"]
|
||||
margin_top = 56.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 80.0
|
||||
|
||||
[node name="Label" type="Label" parent="Section/Container/value"]
|
||||
margin_top = 5.0
|
||||
margin_right = 91.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 91, 0 )
|
||||
text = "Key value:"
|
||||
align = 1
|
||||
|
||||
[node name="_value" type="LineEdit" parent="Section/Container/value"]
|
||||
margin_left = 95.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
context_menu_enabled = false
|
||||
|
||||
[node name="Key" type="ConfirmationDialog" parent="."]
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -150.0
|
||||
margin_top = -46.0
|
||||
margin_right = 151.0
|
||||
margin_bottom = 64.0
|
||||
window_title = "Add a new Key"
|
||||
|
||||
[node name="data" type="VBoxContainer" parent="Key"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 8.0
|
||||
margin_top = 8.0
|
||||
margin_right = -8.0
|
||||
margin_bottom = -36.0
|
||||
alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Key/data"]
|
||||
margin_top = 7.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 31.0
|
||||
|
||||
[node name="Label" type="Label" parent="Key/data/HBoxContainer"]
|
||||
margin_top = 5.0
|
||||
margin_right = 140.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Key name:"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="name" type="LineEdit" parent="Key/data/HBoxContainer"]
|
||||
margin_left = 144.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="Key/data"]
|
||||
margin_top = 35.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 59.0
|
||||
|
||||
[node name="Label" type="Label" parent="Key/data/HBoxContainer2"]
|
||||
margin_top = 5.0
|
||||
margin_right = 140.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Key value:"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="value" type="LineEdit" parent="Key/data/HBoxContainer2"]
|
||||
margin_left = 144.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
64
addons/file-editor/scenes/Preview.tscn
Normal file
@ -0,0 +1,64 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/Preview.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/file-editor/fonts/COUR.TTF" type="DynamicFontData" id=2]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-BoldItalic.ttf" type="DynamicFontData" id=3]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Italic.ttf" type="DynamicFontData" id=4]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Bold.ttf" type="DynamicFontData" id=5]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Regular.ttf" type="DynamicFontData" id=6]
|
||||
|
||||
|
||||
|
||||
[sub_resource type="DynamicFont" id=1]
|
||||
use_mipmaps = true
|
||||
use_filter = true
|
||||
font_data = ExtResource( 2 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=2]
|
||||
font_data = ExtResource( 3 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=3]
|
||||
font_data = ExtResource( 4 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=4]
|
||||
font_data = ExtResource( 5 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=5]
|
||||
font_data = ExtResource( 6 )
|
||||
|
||||
[node name="Preview" type="WindowDialog"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 81.0
|
||||
margin_top = 47.0
|
||||
margin_right = -80.0
|
||||
margin_bottom = -48.0
|
||||
window_title = "File preview"
|
||||
resizable = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
|
||||
[node name="TextPreview" type="RichTextLabel" parent="Container"]
|
||||
visible = false
|
||||
margin_right = 863.0
|
||||
margin_bottom = 505.0
|
||||
size_flags_vertical = 3
|
||||
custom_fonts/mono_font = SubResource( 1 )
|
||||
custom_fonts/bold_italics_font = SubResource( 2 )
|
||||
custom_fonts/italics_font = SubResource( 3 )
|
||||
custom_fonts/bold_font = SubResource( 4 )
|
||||
custom_fonts/normal_font = SubResource( 5 )
|
||||
bbcode_enabled = true
|
||||
scroll_following = true
|
||||
|
||||
[node name="TablePreview" type="GridContainer" parent="Container"]
|
||||
visible = false
|
||||
margin_right = 863.0
|
||||
margin_bottom = 505.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
columns = 3
|
||||
[connection signal="popup_hide" from="." to="." method="_on_Preview_popup_hide"]
|
||||
35
addons/file-editor/scenes/Readonly.tscn
Normal file
@ -0,0 +1,35 @@
|
||||
[gd_scene load_steps=9 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=1]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=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="DynamicFont" id=7]
|
||||
font_data = ExtResource( 1 )
|
||||
|
||||
[node name="Readonly" type="CheckBox"]
|
||||
margin_left = 945.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 10
|
||||
custom_styles/hover = SubResource( 1 )
|
||||
custom_styles/pressed = SubResource( 2 )
|
||||
custom_styles/focus = SubResource( 3 )
|
||||
custom_styles/disabled = SubResource( 4 )
|
||||
custom_styles/hover_pressed = SubResource( 5 )
|
||||
custom_styles/normal = SubResource( 6 )
|
||||
custom_fonts/font = SubResource( 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
|
||||
215
addons/file-editor/scenes/VanillaEditor.tscn
Normal file
@ -0,0 +1,215 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/VanillaEditor.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=2]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=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="DynamicFont" id=7]
|
||||
font_data = ExtResource( 2 )
|
||||
|
||||
[node name="VanillaEditor" type="VBoxContainer"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="TextEditor" type="TextEdit" parent="."]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 577.0
|
||||
size_flags_vertical = 3
|
||||
custom_colors/member_variable_color = Color( 0.737255, 0.882353, 1, 1 )
|
||||
custom_colors/code_folding_color = Color( 1, 1, 1, 0.701961 )
|
||||
custom_colors/function_color = Color( 0.341176, 0.701961, 1, 1 )
|
||||
custom_colors/safe_line_number_color = Color( 0.8, 0.968627, 0.827451, 0.74902 )
|
||||
custom_colors/symbol_color = Color( 0.670588, 0.788235, 1, 1 )
|
||||
custom_colors/caret_background_color = Color( 0, 0, 0, 1 )
|
||||
custom_colors/selection_color = Color( 0.411765, 0.611765, 0.909804, 0.34902 )
|
||||
custom_colors/caret_color = Color( 1, 1, 1, 1 )
|
||||
custom_colors/breakpoint_color = Color( 1, 0.470588, 0.419608, 1 )
|
||||
custom_colors/font_color_selected = Color( 0, 0, 0, 1 )
|
||||
custom_colors/font_color = Color( 1, 1, 1, 1 )
|
||||
custom_colors/completion_font_color = Color( 1, 1, 1, 0.392157 )
|
||||
custom_colors/completion_scroll_color = Color( 1, 1, 1, 0.0705882 )
|
||||
custom_colors/background_color = Color( 0.121569, 0.145098, 0.192157, 1 )
|
||||
custom_colors/number_color = Color( 0.631373, 1, 0.882353, 1 )
|
||||
custom_colors/completion_background_color = Color( 0.196078, 0.231373, 0.309804, 1 )
|
||||
custom_colors/brace_mismatch_color = Color( 1, 0.470588, 0.419608, 1 )
|
||||
custom_colors/current_line_color = Color( 1, 1, 1, 0.0705882 )
|
||||
custom_colors/completion_selected_color = Color( 1, 1, 1, 0.0705882 )
|
||||
custom_colors/mark_color = Color( 1, 0.470588, 0.419608, 0.301961 )
|
||||
custom_colors/word_highlighted_color = Color( 1, 1, 1, 0.392157 )
|
||||
custom_colors/completion_existing_color = Color( 1, 1, 1, 0.392157 )
|
||||
custom_constants/completion_lines = 20
|
||||
custom_constants/completion_max_width = 20
|
||||
custom_constants/completion_scroll_width = 20
|
||||
highlight_current_line = true
|
||||
syntax_highlighting = true
|
||||
show_line_numbers = true
|
||||
breakpoint_gutter = true
|
||||
highlight_all_occurrences = true
|
||||
override_selected_font_color = true
|
||||
smooth_scrolling = true
|
||||
hiding_enabled = true
|
||||
caret_blink = true
|
||||
caret_blink_speed = 1.0
|
||||
caret_moving_by_right_click = false
|
||||
|
||||
[node name="SearchBox" type="HBoxContainer" parent="."]
|
||||
visible = false
|
||||
margin_top = 553.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 577.0
|
||||
|
||||
[node name="Label" type="Label" parent="SearchBox"]
|
||||
margin_top = 5.0
|
||||
margin_right = 46.0
|
||||
margin_bottom = 19.0
|
||||
text = "Search:"
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="SearchBox"]
|
||||
margin_left = 50.0
|
||||
margin_right = 778.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="matchcase" type="CheckBox" parent="SearchBox"]
|
||||
margin_left = 782.0
|
||||
margin_right = 883.0
|
||||
margin_bottom = 24.0
|
||||
text = "Match Case"
|
||||
|
||||
[node name="wholewords" type="CheckBox" parent="SearchBox"]
|
||||
margin_left = 887.0
|
||||
margin_right = 1001.0
|
||||
margin_bottom = 24.0
|
||||
text = "Whole Words"
|
||||
|
||||
[node name="close" type="Button" parent="SearchBox"]
|
||||
margin_left = 1005.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 24.0
|
||||
text = "x"
|
||||
flat = true
|
||||
|
||||
[node name="ReplaceBox" type="HBoxContainer" parent="."]
|
||||
visible = false
|
||||
margin_top = 553.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 577.0
|
||||
|
||||
[node name="Label" type="Label" parent="ReplaceBox"]
|
||||
margin_top = 5.0
|
||||
margin_right = 54.0
|
||||
margin_bottom = 19.0
|
||||
text = "Replace:"
|
||||
|
||||
[node name="replace" type="LineEdit" parent="ReplaceBox"]
|
||||
margin_left = 58.0
|
||||
margin_right = 475.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Label2" type="Label" parent="ReplaceBox"]
|
||||
margin_left = 479.0
|
||||
margin_top = 5.0
|
||||
margin_right = 513.0
|
||||
margin_bottom = 19.0
|
||||
text = "With:"
|
||||
|
||||
[node name="with" type="LineEdit" parent="ReplaceBox"]
|
||||
margin_left = 517.0
|
||||
margin_right = 934.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Button" type="Button" parent="ReplaceBox"]
|
||||
margin_left = 938.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 24.0
|
||||
text = "Replace"
|
||||
|
||||
[node name="close2" type="Button" parent="ReplaceBox"]
|
||||
margin_left = 1004.0
|
||||
margin_right = 1023.0
|
||||
margin_bottom = 24.0
|
||||
text = "x"
|
||||
flat = true
|
||||
|
||||
[node name="FileInfo" type="HBoxContainer" parent="."]
|
||||
margin_top = 581.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
custom_constants/separation = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="lastmodified_icon" type="TextureRect" parent="FileInfo"]
|
||||
margin_bottom = 19.0
|
||||
stretch_mode = 4
|
||||
|
||||
[node name="Label" type="Label" parent="FileInfo"]
|
||||
margin_left = 2.0
|
||||
margin_top = 2.0
|
||||
margin_right = 127.0
|
||||
margin_bottom = 16.0
|
||||
text = "Last modified time:"
|
||||
|
||||
[node name="lastmodified" type="Label" parent="FileInfo"]
|
||||
margin_left = 129.0
|
||||
margin_top = 2.0
|
||||
margin_right = 129.0
|
||||
margin_bottom = 16.0
|
||||
|
||||
[node name="Label2" type="Label" parent="FileInfo"]
|
||||
margin_left = 131.0
|
||||
margin_top = 2.0
|
||||
margin_right = 427.0
|
||||
margin_bottom = 16.0
|
||||
size_flags_horizontal = 15
|
||||
text = "Characters counter:"
|
||||
align = 2
|
||||
|
||||
[node name="c_counter" type="Label" parent="FileInfo"]
|
||||
margin_left = 429.0
|
||||
margin_top = 2.0
|
||||
margin_right = 429.0
|
||||
margin_bottom = 16.0
|
||||
size_flags_horizontal = 2
|
||||
|
||||
[node name="Readonly" type="CheckBox" parent="FileInfo"]
|
||||
margin_left = 945.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 10
|
||||
custom_styles/hover = SubResource( 1 )
|
||||
custom_styles/pressed = SubResource( 2 )
|
||||
custom_styles/focus = SubResource( 3 )
|
||||
custom_styles/disabled = SubResource( 4 )
|
||||
custom_styles/hover_pressed = SubResource( 5 )
|
||||
custom_styles/normal = SubResource( 6 )
|
||||
custom_fonts/font = SubResource( 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"]
|
||||
[connection signal="toggled" from="SearchBox/matchcase" to="." method="_on_matchcase_toggled"]
|
||||
[connection signal="toggled" from="SearchBox/wholewords" to="." method="_on_wholewords_toggled"]
|
||||
[connection signal="pressed" from="SearchBox/close" to="." method="_on_close_pressed"]
|
||||
[connection signal="pressed" from="ReplaceBox/Button" to="." method="_on_Button_pressed"]
|
||||
[connection signal="pressed" from="ReplaceBox/close2" to="." method="_on_close2_pressed"]
|
||||
531
addons/file-editor/scripts/CSVEditor.gd
Normal file
@ -0,0 +1,531 @@
|
||||
tool
|
||||
extends Control
|
||||
class_name CSVEditor
|
||||
|
||||
onready var Columns : HBoxContainer = $Container/Scroll/Columns
|
||||
onready var _column_head : VBoxContainer = Columns.get_node("_COLUMN_HEAD")
|
||||
onready var _row_label : Label = _column_head.get_node("1")
|
||||
onready var _zero_column : VBoxContainer = Columns.get_node("0")
|
||||
onready var _row_line : LineEdit = _zero_column.get_node("1")
|
||||
|
||||
onready var columns_count_lbl : Label = $Container/FileProperties/Dimensions/ColumnsLbl
|
||||
onready var rows_count_lbl : Label = $Container/FileProperties/Dimensions/RowsLbl
|
||||
onready var csv_delimiter_lbl : Label = $Container/FileProperties/Delimiter/DelimiterLbl
|
||||
|
||||
onready var align_menu_opitons : PopupMenu = $Container/Menu/AlignMenu.get_popup()
|
||||
onready var edit_menu_options : PopupMenu = $Container/Menu/EditMenu.get_popup()
|
||||
onready var settings_menu_options : PopupMenu = $Container/Menu/SettingsMenu.get_popup()
|
||||
|
||||
onready var readonly_btn : CheckBox = $Container/FileProperties/Readonly
|
||||
|
||||
onready var edit_dialog : AcceptDialog = $EditDialog
|
||||
onready var edit_rows : HBoxContainer = edit_dialog.get_node("Options/Rows")
|
||||
onready var edit_columns : HBoxContainer = edit_dialog.get_node("Options/Columns")
|
||||
onready var edit_delimiter : HBoxContainer = edit_dialog.get_node("Options/Delimiter")
|
||||
onready var drop_rows : VBoxContainer = edit_dialog.get_node("Options/DropRows")
|
||||
onready var drop_columns : HBoxContainer = edit_dialog.get_node("Options/DropColumns")
|
||||
onready var new_rows_line : LineEdit = edit_rows.get_node("NewRows")
|
||||
onready var new_columns_line : LineEdit = edit_columns.get_node("NewColumns")
|
||||
onready var new_delimiter_line : LineEdit = edit_delimiter.get_node("DelimiterLine")
|
||||
|
||||
onready var editor_settings : AcceptDialog = $EditorSettingsDialog
|
||||
onready var editor_columns_length : LineEdit = editor_settings.get_node("EditorSettings/ColumnsLength/ColumnsLengthLine")
|
||||
onready var editor_columns_spacing : LineEdit = editor_settings.get_node("EditorSettings/ColumnsSpacing/ColumnsSpacingLine")
|
||||
onready var editor_rows_spacing : LineEdit = editor_settings.get_node("EditorSettings/RowsSpacing/RowsSpacingLine")
|
||||
|
||||
onready var translation_dialog : WindowDialog = $TranslationDialog
|
||||
onready var token_line : LineEdit = $TranslationDialog/TranslationContainer/AuthToken/TokenLine
|
||||
onready var keys_tree : Tree = $TranslationDialog/TranslationContainer/Keys/ScrollContainer/KeysTree
|
||||
onready var source_lang_menu : OptionButton = $TranslationDialog/TranslationContainer/Languages/SourceLangMenu
|
||||
onready var target_langs_tree : Tree = $TranslationDialog/TranslationContainer/Languages/TargetLangs/TargetLangsTree
|
||||
|
||||
onready var error_lbl : Label = $TranslationDialog/TranslationContainer/ErrorLbl
|
||||
|
||||
onready var how_to : WindowDialog = $HowTo
|
||||
|
||||
var current_file_path : String
|
||||
|
||||
var file_path : String
|
||||
var csv_delimiter : String = ","
|
||||
var columns_count : int = 1
|
||||
var rows_count : int = 1
|
||||
|
||||
signal update_file()
|
||||
signal editing_file()
|
||||
|
||||
var GoogleTranslate : GoogleTranslateAPI = 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)
|
||||
|
||||
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())
|
||||
|
||||
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")
|
||||
|
||||
# GoogleTranslate.connect("translation_received", self, "_on_translation_received")
|
||||
|
||||
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"))
|
||||
|
||||
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()
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
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)])
|
||||
|
||||
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])
|
||||
|
||||
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")
|
||||
|
||||
func _on_editing_cell(new_text : String, cell_position : Vector2) -> void:
|
||||
emit_signal("editing_file")
|
||||
|
||||
func _on_secret_check(toggled : bool) -> void:
|
||||
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()
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
# 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()
|
||||
|
||||
# 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)
|
||||
|
||||
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()
|
||||
|
||||
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()
|
||||
|
||||
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)
|
||||
|
||||
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])
|
||||
|
||||
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()
|
||||
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.set_column_titles_visible(true)
|
||||
# target_langs_tree.set_column_title(0, "Keys to translate")
|
||||
target_langs_tree.clear()
|
||||
var root : TreeItem = target_langs_tree.create_item()
|
||||
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())
|
||||
|
||||
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
|
||||
|
||||
func _on_source_lang_selected(idx : int) -> void:
|
||||
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()
|
||||
|
||||
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()))
|
||||
|
||||
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))
|
||||
|
||||
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))
|
||||
|
||||
# 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)
|
||||
|
||||
# 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)
|
||||
|
||||
600
addons/file-editor/scripts/FileEditor.gd
Normal file
@ -0,0 +1,600 @@
|
||||
tool
|
||||
extends Control
|
||||
|
||||
onready var FileList = $FileList
|
||||
|
||||
onready var NewFileDialogue = $NewFileDialogue
|
||||
onready var NewFileDialogue_name = $NewFileDialogue/VBoxContainer/new_filename
|
||||
|
||||
onready var FileBTN = $FileEditorContainer/TobBar/file_btn.get_popup()
|
||||
onready var PreviewBTN = $FileEditorContainer/TobBar/preview_btn.get_popup()
|
||||
onready var EditorBTN = $FileEditorContainer/TobBar/editor_btn.get_popup()
|
||||
onready var SettingsBTN : PopupMenu = $FileEditorContainer/TobBar/SettingsBtn.get_popup()
|
||||
|
||||
onready var Version = $FileEditorContainer/TobBar/version
|
||||
|
||||
onready var SelectFontDialog : FileDialog = $SelectFontDialog
|
||||
|
||||
onready var FileContainer = $FileEditorContainer/SplitContainer/FileContainer
|
||||
onready var OpenFileList = $FileEditorContainer/SplitContainer/FileContainer/OpenFileList
|
||||
onready var OpenFileName = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/OpenFileName
|
||||
onready var SplitEditorContainer = $FileEditorContainer/SplitContainer/EditorContainer
|
||||
onready var WrapBTN = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/wrap_button
|
||||
onready var MapBTN = $FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer/map_button
|
||||
|
||||
var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new()
|
||||
var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new()
|
||||
|
||||
var Preview = preload("res://addons/file-editor/scenes/Preview.tscn")
|
||||
var IniEditor = preload("res://addons/file-editor/scenes/IniEditor.tscn")
|
||||
var VanillaEditor = preload("res://addons/file-editor/scenes/VanillaEditor.tscn")
|
||||
var CsvEditor = preload("res://addons/file-editor/scenes/CSVEditor.tscn")
|
||||
|
||||
onready var EditorContainer = $FileEditorContainer/SplitContainer
|
||||
|
||||
var DIRECTORY : String = "res://"
|
||||
var EXCEPTIONS : String = "addons"
|
||||
var EXTENSIONS : PoolStringArray = [
|
||||
"*.txt ; Plain Text File",
|
||||
"*.rtf ; Rich Text Format File",
|
||||
"*.log ; Log File",
|
||||
"*.md ; MD File",
|
||||
"*.doc ; WordPad Document",
|
||||
"*.doc ; Microsoft Word Document",
|
||||
"*.docm ; Word Open XML Macro-Enabled Document",
|
||||
"*.docx ; Microsoft Word Open XML Document",
|
||||
"*.bbs ; Bulletin Board System Text",
|
||||
"*.dat ; Data File",
|
||||
"*.xml ; XML File",
|
||||
"*.sql ; SQL database file",
|
||||
"*.json ; JavaScript Object Notation File",
|
||||
"*.html ; HyperText Markup Language",
|
||||
"*.csv ; Comma-separated values",
|
||||
"*.cfg ; Configuration File",
|
||||
"*.ini ; Initialization File (same as .cfg Configuration File)",
|
||||
"*.csv ; Comma-separated values File",
|
||||
"*.res ; Resource File",
|
||||
]
|
||||
|
||||
var directories = []
|
||||
var files = []
|
||||
var current_file_index = -1
|
||||
var current_file_path = ""
|
||||
var save_as = false
|
||||
var current_editor : Control
|
||||
var current_ini_editor : Control
|
||||
var current_csv_editor : CSVEditor
|
||||
var current_font : DynamicFont
|
||||
|
||||
func _ready():
|
||||
if not Engine.is_editor_hint():
|
||||
return
|
||||
clean_editor()
|
||||
update_version()
|
||||
connect_signals()
|
||||
create_shortcuts()
|
||||
load_icons()
|
||||
|
||||
var opened_files : Array = LastOpenedFiles.load_opened_files()
|
||||
for opened_file in opened_files:
|
||||
open_file(opened_file[1], opened_file[2])
|
||||
FileList.set_filters(EXTENSIONS)
|
||||
|
||||
func create_shortcuts():
|
||||
var hotkey
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_S
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(4,hotkey.get_scancode_with_modifiers()) # save file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_N
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) # new file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_O
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(1,hotkey.get_scancode_with_modifiers()) # open file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_D
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(6,hotkey.get_scancode_with_modifiers()) # delete file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_S
|
||||
hotkey.control = true
|
||||
hotkey.alt = true
|
||||
FileBTN.set_item_accelerator(5,hotkey.get_scancode_with_modifiers()) #save file as
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_C
|
||||
hotkey.control = true
|
||||
hotkey.alt = true
|
||||
FileBTN.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) # close file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_F
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(8,hotkey.get_scancode_with_modifiers()) # search
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_R
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(9,hotkey.get_scancode_with_modifiers()) # replace
|
||||
|
||||
# vanilla editor -----------------------
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_1
|
||||
hotkey.control = true
|
||||
EditorBTN.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) # vanilla editor
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_2
|
||||
hotkey.control = true
|
||||
EditorBTN.set_item_accelerator(1,hotkey.get_scancode_with_modifiers()) # csv editor
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_3
|
||||
hotkey.control = true
|
||||
EditorBTN.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) # inieditor editor
|
||||
|
||||
func load_icons():
|
||||
$FileEditorContainer/TobBar/file_btn.icon = IconLoader.load_icon_from_name("file")
|
||||
$FileEditorContainer/TobBar/preview_btn.icon = IconLoader.load_icon_from_name("read")
|
||||
$FileEditorContainer/TobBar/editor_btn.icon = IconLoader.load_icon_from_name("edit_")
|
||||
$FileEditorContainer/TobBar/SettingsBtn.icon = IconLoader.load_icon_from_name("settings")
|
||||
|
||||
func connect_signals():
|
||||
FileList.connect("confirmed",self,"update_list")
|
||||
FileBTN.connect("id_pressed",self,"_on_filebtn_pressed")
|
||||
PreviewBTN.connect("id_pressed",self,"_on_previewbtn_pressed")
|
||||
EditorBTN.connect("id_pressed",self,"_on_editorbtn_pressed")
|
||||
SettingsBTN.connect("id_pressed",self,"_on_settingsbtn_pressed")
|
||||
|
||||
OpenFileList.connect("item_selected",self,"_on_fileitem_pressed")
|
||||
WrapBTN.connect("item_selected",self,"on_wrap_button")
|
||||
MapBTN.connect("item_selected",self,"on_minimap_button")
|
||||
|
||||
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)
|
||||
|
||||
func create_selected_file():
|
||||
update_list()
|
||||
FileList.mode = FileDialog.MODE_SAVE_FILE
|
||||
FileList.set_title("Create a new File")
|
||||
if FileList.is_connected("file_selected",self,"delete_file"):
|
||||
FileList.disconnect("file_selected",self,"delete_file")
|
||||
if FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.disconnect("file_selected",self,"open_file")
|
||||
if not FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.connect("file_selected",self,"create_new_file")
|
||||
open_filelist()
|
||||
|
||||
func open_selected_file():
|
||||
update_list()
|
||||
FileList.mode = FileDialog.MODE_OPEN_FILE
|
||||
FileList.set_title("Select a File you want to edit")
|
||||
if FileList.is_connected("file_selected",self,"delete_file"):
|
||||
FileList.disconnect("file_selected",self,"delete_file")
|
||||
if FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.disconnect("file_selected",self,"create_new_file")
|
||||
if not FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.connect("file_selected",self,"open_file")
|
||||
open_filelist()
|
||||
|
||||
func delete_selected_file():
|
||||
update_list()
|
||||
FileList.mode = FileDialog.MODE_OPEN_FILES
|
||||
FileList.set_title("Select one or more Files you want to delete")
|
||||
if FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.disconnect("file_selected",self,"open_file")
|
||||
if FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.disconnect("file_selected",self,"create_new_file")
|
||||
if not FileList.is_connected("files_selected",self,"delete_file"):
|
||||
FileList.connect("files_selected",self,"delete_file")
|
||||
open_filelist()
|
||||
|
||||
func save_current_file_as():
|
||||
update_list()
|
||||
FileList.mode = FileDialog.MODE_SAVE_FILE
|
||||
FileList.set_title("Save this File as...")
|
||||
if FileList.is_connected("file_selected",self,"delete_file"):
|
||||
FileList.disconnect("file_selected",self,"delete_file")
|
||||
if FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.disconnect("file_selected",self,"open_file")
|
||||
if not FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.connect("file_selected",self,"create_new_file")
|
||||
open_filelist()
|
||||
|
||||
func _on_filebtn_pressed(index : int):
|
||||
match index:
|
||||
0:
|
||||
create_selected_file()
|
||||
1:
|
||||
open_selected_file()
|
||||
2:
|
||||
if current_file_index!=-1 and current_file_path != "":
|
||||
close_file(current_file_index)
|
||||
|
||||
3:
|
||||
if current_file_index!=-1 and current_file_path != "":
|
||||
save_as = false
|
||||
if current_csv_editor and current_csv_editor.visible:
|
||||
current_csv_editor.save_table()
|
||||
save_file(current_file_path)
|
||||
4:
|
||||
if current_file_index!=-1 and current_file_path != "":
|
||||
save_as = true
|
||||
save_file(current_file_path)
|
||||
save_current_file_as()
|
||||
5:
|
||||
delete_selected_file()
|
||||
6:
|
||||
current_editor.open_searchbox()
|
||||
7:
|
||||
current_editor.open_replacebox()
|
||||
|
||||
func _on_previewbtn_pressed(id : int):
|
||||
if id == 0:
|
||||
bbcode_preview()
|
||||
elif id == 1:
|
||||
markdown_preview()
|
||||
elif id == 2:
|
||||
html_preview()
|
||||
elif id == 3:
|
||||
csv_preview()
|
||||
elif id == 4:
|
||||
xml_preview()
|
||||
elif id == 5:
|
||||
json_preview()
|
||||
|
||||
func _on_editorbtn_pressed(index : int):
|
||||
match index:
|
||||
0:
|
||||
if not current_editor.visible:
|
||||
current_editor.show()
|
||||
if current_csv_editor:
|
||||
current_csv_editor.hide()
|
||||
if current_ini_editor:
|
||||
current_ini_editor.hide()
|
||||
1:
|
||||
if current_csv_editor and not current_csv_editor.visible:
|
||||
if current_ini_editor:
|
||||
current_ini_editor.hide()
|
||||
current_editor.hide()
|
||||
current_csv_editor.show()
|
||||
2:
|
||||
if current_ini_editor and not current_ini_editor.visible:
|
||||
current_editor.hide()
|
||||
if current_csv_editor:
|
||||
current_csv_editor.hide()
|
||||
current_ini_editor.show()
|
||||
|
||||
func _on_settingsbtn_pressed(index : int):
|
||||
match index:
|
||||
0:
|
||||
SelectFontDialog.popup()
|
||||
|
||||
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()
|
||||
|
||||
current_file_path = selected_item_metadata[0].current_path
|
||||
if current_editor.visible:
|
||||
current_editor.hide()
|
||||
current_editor = selected_item_metadata[0]
|
||||
current_editor.show()
|
||||
OpenFileName.set_text(current_editor.current_path)
|
||||
current_csv_editor = selected_item_metadata[2]
|
||||
current_ini_editor = selected_item_metadata[1]
|
||||
if WrapBTN.get_selected_id() == 1:
|
||||
current_editor.set_wrap_enabled(true)
|
||||
else:
|
||||
current_editor.set_wrap_enabled(false)
|
||||
if MapBTN.get_selected_id() == 1:
|
||||
current_editor.draw_minimap(true)
|
||||
else:
|
||||
current_editor.draw_minimap(false)
|
||||
elif current_csv_editor and current_csv_editor.visible:
|
||||
if extension == "csv":
|
||||
current_csv_editor.hide()
|
||||
current_csv_editor = selected_item_metadata[2]
|
||||
current_csv_editor.show()
|
||||
OpenFileName.set_text(current_csv_editor.current_file_path)
|
||||
current_editor = selected_item_metadata[0]
|
||||
current_ini_editor = selected_item_metadata[1]
|
||||
else:
|
||||
if current_csv_editor:
|
||||
current_csv_editor.hide()
|
||||
current_csv_editor = selected_item_metadata[2]
|
||||
if current_ini_editor:
|
||||
current_ini_editor.hide()
|
||||
current_ini_editor = selected_item_metadata[1]
|
||||
current_editor.hide()
|
||||
current_editor = selected_item_metadata[0]
|
||||
current_editor.show()
|
||||
OpenFileName.set_text(current_editor.current_path)
|
||||
elif current_ini_editor and current_ini_editor.visible:
|
||||
if extension == "cfg" or extension == "ini":
|
||||
current_ini_editor.hide()
|
||||
current_ini_editor = selected_item_metadata[1]
|
||||
current_ini_editor.show()
|
||||
OpenFileName.set_text(current_ini_editor.current_file_path)
|
||||
else:
|
||||
if current_ini_editor:
|
||||
current_ini_editor.hide()
|
||||
current_ini_editor = selected_item_metadata[1]
|
||||
if current_csv_editor:
|
||||
current_csv_editor.hide()
|
||||
current_csv_editor = selected_item_metadata[2]
|
||||
current_editor.hide()
|
||||
current_editor = selected_item_metadata[0]
|
||||
current_editor.show()
|
||||
OpenFileName.set_text(current_editor.current_path)
|
||||
|
||||
func open_file(path : String, font : String = "null"):
|
||||
if current_file_path != path:
|
||||
current_file_path = path
|
||||
|
||||
var vanilla_editor = open_in_vanillaeditor(path)
|
||||
if font != "null" and vanilla_editor.get("custom_fonts/font")!=null:
|
||||
vanilla_editor.set_font(font)
|
||||
var ini_editor = open_in_inieditor(path)
|
||||
var csv_editor = open_in_csveditor(path)
|
||||
|
||||
generate_file_item(path,vanilla_editor,ini_editor,csv_editor)
|
||||
|
||||
LastOpenedFiles.store_opened_files(OpenFileList)
|
||||
current_editor.show()
|
||||
|
||||
func generate_file_item(path : String , veditor : Control , inieditor : Control, csveditor : Control):
|
||||
OpenFileName.set_text(path)
|
||||
OpenFileList.add_item(path.get_file(),IconLoader.load_icon_from_name("file"),true)
|
||||
current_file_index = OpenFileList.get_item_count()-1
|
||||
OpenFileList.set_item_metadata(current_file_index,[veditor,inieditor,csveditor])
|
||||
OpenFileList.select(OpenFileList.get_item_count()-1)
|
||||
|
||||
func open_in_vanillaeditor(path : String) -> Control:
|
||||
var editor = VanillaEditor.instance()
|
||||
SplitEditorContainer.add_child(editor,true)
|
||||
|
||||
if current_editor and current_editor!=editor:
|
||||
editor.show()
|
||||
current_editor.hide()
|
||||
if current_csv_editor and current_csv_editor.visible:
|
||||
current_csv_editor.hide()
|
||||
if current_ini_editor and current_ini_editor.visible:
|
||||
current_ini_editor.hide()
|
||||
|
||||
current_editor = editor
|
||||
editor.connect("text_changed",self,"_on_vanillaeditor_text_changed")
|
||||
|
||||
var current_file : File = File.new()
|
||||
current_file.open(path,File.READ)
|
||||
var current_content = ""
|
||||
current_content = current_file.get_as_text()
|
||||
|
||||
var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(path))
|
||||
|
||||
current_file.close()
|
||||
editor.new_file_open(current_content,last_modified,current_file_path)
|
||||
update_list()
|
||||
|
||||
if WrapBTN.get_selected_id() == 1:
|
||||
current_editor.set_wrap_enabled(true)
|
||||
|
||||
return editor
|
||||
|
||||
func open_in_inieditor(path : String) -> Control:
|
||||
var extension = path.get_file().get_extension()
|
||||
if extension == "ini" or extension == "cfg":
|
||||
var inieditor = IniEditor.instance()
|
||||
SplitEditorContainer.add_child(inieditor)
|
||||
inieditor.hide()
|
||||
inieditor.connect("update_file",self,"_on_update_file")
|
||||
current_ini_editor = inieditor
|
||||
inieditor.current_file_path = path
|
||||
var current_file : ConfigFile = ConfigFile.new()
|
||||
var err = current_file.load(path)
|
||||
if err == OK:
|
||||
var sections = current_file.get_sections()
|
||||
var filemap = []
|
||||
for section in sections:
|
||||
var keys = []
|
||||
var section_keys = current_file.get_section_keys(section)
|
||||
for key in section_keys:
|
||||
keys.append([key,current_file.get_value(section,key)])
|
||||
|
||||
filemap.append([section,keys])
|
||||
|
||||
inieditor.open_file(filemap)
|
||||
return inieditor
|
||||
else:
|
||||
current_ini_editor = null
|
||||
return null
|
||||
|
||||
func open_in_csveditor(path : String) -> Control:
|
||||
var extension = path.get_file().get_extension()
|
||||
if extension == "csv":
|
||||
var csveditor = CsvEditor.instance()
|
||||
SplitEditorContainer.add_child(csveditor)
|
||||
csveditor.hide()
|
||||
csveditor.connect("update_file",self,"_on_update_file")
|
||||
csveditor.connect("editing_file",self,"_on_vanillaeditor_text_changed")
|
||||
current_csv_editor = csveditor
|
||||
csveditor.current_file_path = path
|
||||
csveditor.open_csv_file(path)
|
||||
return csveditor
|
||||
else:
|
||||
current_csv_editor = null
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
func delete_file(files_selected : PoolStringArray):
|
||||
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)
|
||||
|
||||
func open_filelist():
|
||||
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)
|
||||
|
||||
func save_file(current_path : String):
|
||||
print("Saving file: ",current_path)
|
||||
var current_file = File.new()
|
||||
current_file.open(current_path,File.WRITE)
|
||||
var current_content = ""
|
||||
var lines = current_editor.get_node("TextEditor").get_line_count()
|
||||
for line in range(0,lines):
|
||||
if current_editor.get_node("TextEditor").get_line(line) == "":
|
||||
continue
|
||||
current_content = current_editor.get_node("TextEditor").get_text()
|
||||
current_file.store_line(current_editor.get_node("TextEditor").get_line(line))
|
||||
current_file.close()
|
||||
|
||||
current_file_path = current_path
|
||||
|
||||
var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_file_path))
|
||||
|
||||
current_editor.update_lastmodified(last_modified,"save")
|
||||
if current_csv_editor != null and not current_csv_editor.is_visible():
|
||||
current_csv_editor.open_csv_file(current_path)
|
||||
OpenFileList.set_item_metadata(current_file_index,[current_editor,current_ini_editor,current_csv_editor])
|
||||
|
||||
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)])
|
||||
|
||||
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()
|
||||
|
||||
|
||||
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)
|
||||
|
||||
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())
|
||||
|
||||
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())
|
||||
|
||||
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())
|
||||
|
||||
func xml_preview():
|
||||
pass
|
||||
|
||||
func json_preview():
|
||||
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))
|
||||
|
||||
|
||||
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)
|
||||
|
||||
func on_minimap_button(index:int):
|
||||
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
|
||||
19
addons/file-editor/scripts/FileEditorButton.gd
Normal file
@ -0,0 +1,19 @@
|
||||
tool
|
||||
extends ToolButton
|
||||
|
||||
var fileditor_workspace
|
||||
var fileditor
|
||||
|
||||
func _ready():
|
||||
connect("pressed",self,"show_fileditor")
|
||||
|
||||
func show_fileditor():
|
||||
fileditor_workspace.get_children()[0].hide()
|
||||
fileditor_workspace.get_children()[1].hide()
|
||||
fileditor_workspace.get_children()[2].hide()
|
||||
fileditor_workspace.add_child(fileditor)
|
||||
fileditor.show()
|
||||
|
||||
func load_values(fi, fe):
|
||||
fileditor_workspace = fi
|
||||
fileditor = fe
|
||||
200
addons/file-editor/scripts/FileScene.gd
Normal file
@ -0,0 +1,200 @@
|
||||
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("<b>","</b>",Color8(153,153,255,255),false)
|
||||
TextEditor.add_color_region("<i>","</i>",Color8(153,255,153,255),false)
|
||||
TextEditor.add_color_region("<del>","</del>",Color8(255,153,153,255),false)
|
||||
TextEditor.add_color_region("<ins>","</ins>",Color8(255,255,102,255),false)
|
||||
TextEditor.add_color_region("<a","</a>",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region("<img","/>",Color8(255,204,153,255),true)
|
||||
TextEditor.add_color_region("<pre>","</pre>",Color8(192,192,192,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)
|
||||
"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())
|
||||
33
addons/file-editor/scripts/GoogleTranslatorAPI.gd
Normal file
@ -0,0 +1,33 @@
|
||||
extends HTTPRequest
|
||||
class_name GoogleTranslateAPI
|
||||
|
||||
var endpoint : String = "https://translation.googleapis.com/language/translate/v2"
|
||||
var headers : PoolStringArray = ["Authorization: Bearer [token]", "Content-Type: application/json; charset=utf-8"]
|
||||
var token : String = ""
|
||||
|
||||
signal translation_received(translations)
|
||||
|
||||
func _ready() -> void:
|
||||
connect("request_completed", self, "_on_translation_received")
|
||||
# endpoint.replace("[project-number-or-id]", project_number)
|
||||
# headers = ["Authentication: Bearer %s" % auth_token, "Content-Type: application/json; charset=utf-8"]
|
||||
|
||||
func set_token(t : String) -> void:
|
||||
token = t
|
||||
|
||||
func get_token() -> String:
|
||||
return token
|
||||
|
||||
func request_translation(source_language : String, target_language : String, contents : PoolStringArray) -> void:
|
||||
var temp_headers : PoolStringArray = headers
|
||||
temp_headers[0] = temp_headers[0].replace("[token]", token)
|
||||
request(endpoint, temp_headers, true, HTTPClient.METHOD_POST, JSON.print({"source":source_language, "target":target_language, "q":contents}))
|
||||
|
||||
func request_dummy() -> void:
|
||||
var dummy : Dictionary = { "source":"en", "target": "ru", "q": ["Dr. Watson, come here!", "Bring me some coffee!"] }
|
||||
request_translation(dummy.source, dummy.target, dummy.q)
|
||||
|
||||
func _on_translation_received(result: int, response_code: int, headers: PoolStringArray, body: PoolByteArray) -> void:
|
||||
# print("Request Result ", result, " with response code ", response_code)
|
||||
if response_code != 200 : print(JSON.parse(body.get_string_from_utf8()).result)
|
||||
emit_signal("translation_received", [response_code,JSON.parse(body.get_string_from_utf8()).result])
|
||||
20
addons/file-editor/scripts/IconLoader.gd
Normal file
@ -0,0 +1,20 @@
|
||||
tool
|
||||
extends Node
|
||||
|
||||
var imgBuffer
|
||||
|
||||
func _ready():
|
||||
pass
|
||||
|
||||
func load_icon_from_name(icon_name : String) -> ImageTexture:
|
||||
var file = File.new()
|
||||
var image = Image.new()
|
||||
var texture = ImageTexture.new()
|
||||
|
||||
file.open("res://addons/file-editor/icons.pngs/"+icon_name+".png.buttonicon", File.READ)
|
||||
var buffer = file.get_buffer(file.get_len())
|
||||
file.close()
|
||||
|
||||
image.load_png_from_buffer(buffer)
|
||||
texture.create_from_image(image)
|
||||
return texture
|
||||
284
addons/file-editor/scripts/IniVisualEditor.gd
Normal file
@ -0,0 +1,284 @@
|
||||
tool
|
||||
extends Control
|
||||
|
||||
var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new()
|
||||
var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new()
|
||||
|
||||
onready var Keys = $VBoxContainer/HSplitContainer/VBoxContainer2/keys
|
||||
onready var Sections = $VBoxContainer/HSplitContainer/VBoxContainer/sections2
|
||||
|
||||
onready var BtnAddSection = $VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2/btn_add_section
|
||||
onready var BtnRemoveSection = $VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2/btn_remove_section
|
||||
|
||||
onready var BtnAddKey = $VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3/btn_add_key
|
||||
onready var BtnEditKey = $VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3/btn_edit_key
|
||||
onready var BtnRemoveKey = $VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3/btn_remove_key
|
||||
|
||||
onready var Section = $Section
|
||||
onready var Key = $Key
|
||||
|
||||
var selected_key
|
||||
var selected_section : int = -1
|
||||
var root : TreeItem
|
||||
|
||||
var current_file_path : String = ""
|
||||
|
||||
signal update_file()
|
||||
|
||||
func _ready():
|
||||
create_table_names()
|
||||
connect_signals()
|
||||
load_icons()
|
||||
clean_editor()
|
||||
|
||||
add_to_group("ini_editor")
|
||||
|
||||
# var metadata = [["name","Godot Engine"],["version","1.0.0"],["color","Light Blue"]]
|
||||
# load_section("Engine", metadata)
|
||||
|
||||
func connect_signals():
|
||||
Sections.connect("item_selected",self,"_on_section_selected")
|
||||
Sections.connect("nothing_selected",self,"_on_nosection_selected")
|
||||
|
||||
BtnAddSection.connect("pressed",self,"_on_addsection_pressed")
|
||||
BtnRemoveSection.connect("pressed",self,"_on_removesection_pressed")
|
||||
|
||||
Keys.connect("item_selected",self,"_on_key_selected")
|
||||
Keys.connect("nothing_selected",self,"_on_nokey_selected")
|
||||
|
||||
BtnAddKey.connect("pressed",self,"_on_addkey_pressed")
|
||||
BtnRemoveKey.connect("pressed",self,"_on_removekey_pressed")
|
||||
BtnEditKey.connect("pressed",self,"_on_editkey_pressed")
|
||||
|
||||
connect("visibility_changed",self,"_on_visibility_changed")
|
||||
|
||||
func create_table_names():
|
||||
create_root()
|
||||
Keys.hide_root = true
|
||||
|
||||
Keys.set_column_titles_visible(true)
|
||||
Keys.set_column_title(0,"Name")
|
||||
Keys.set_column_title(1,"Value")
|
||||
|
||||
func load_icons():
|
||||
$VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer/sections_icon.texture = IconLoader.load_icon_from_name("sections")
|
||||
$VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer2/keys_icon.texture = IconLoader.load_icon_from_name("keys")
|
||||
BtnAddSection.icon = IconLoader.load_icon_from_name("add")
|
||||
BtnAddSection.hint_tooltip = "Add a new Section"
|
||||
BtnRemoveSection.icon = IconLoader.load_icon_from_name("delete")
|
||||
BtnRemoveSection.hint_tooltip = "Remove selected Section"
|
||||
|
||||
BtnAddKey.icon = IconLoader.load_icon_from_name("add")
|
||||
BtnAddKey.hint_tooltip = "Add a new Key"
|
||||
BtnRemoveKey.icon = IconLoader.load_icon_from_name("delete")
|
||||
BtnRemoveKey.hint_tooltip = "Remove selected Key"
|
||||
BtnEditKey.icon = IconLoader.load_icon_from_name("edit_")
|
||||
BtnEditKey.hint_tooltip = "Edit selected Key"
|
||||
|
||||
func _on_addsection_pressed():
|
||||
Section.get_node("Container/section/_name").show()
|
||||
Section.window_title = "Add a new Section"
|
||||
if not Section.is_connected("confirmed",self,"new_section"):
|
||||
Section.connect("confirmed",self,"new_section")
|
||||
if Section.is_connected("confirmed",self,"remove_section"):
|
||||
Section.disconnect("confirmed",self,"remove_section")
|
||||
Section.popup()
|
||||
|
||||
func _on_removesection_pressed():
|
||||
Section.get_node("Container").hide()
|
||||
Section.window_title = "Remove selected Section"
|
||||
Section.dialog_text = "Are you sure you want to remove this Section?"
|
||||
if not Section.is_connected("confirmed",self,"remove_section"):
|
||||
Section.connect("confirmed",self,"remove_section")
|
||||
if Section.is_connected("confirmed",self,"new_section"):
|
||||
Section.disconnect("confirmed",self,"new_section")
|
||||
Section.popup()
|
||||
|
||||
func _on_addkey_pressed():
|
||||
Key.get_node("data").show()
|
||||
Key.get_node("data/HBoxContainer/name").editable = true
|
||||
Key.get_node("data/HBoxContainer/name").set_text("")
|
||||
Key.window_title = "Add a new Key"
|
||||
Key.dialog_text = ""
|
||||
if not Key.is_connected("confirmed",self,"new_key"):
|
||||
Key.connect("confirmed",self,"new_key")
|
||||
if Key.is_connected("confirmed",self,"edit_key"):
|
||||
Key.disconnect("confirmed",self,"edit_key")
|
||||
if Key.is_connected("confirmed",self,"remove_key"):
|
||||
Key.disconnect("confirmed",self,"remove_key")
|
||||
Key.popup()
|
||||
|
||||
func _on_removekey_pressed():
|
||||
Key.get_node("data").hide()
|
||||
Key.window_title = "Delete selected Key"
|
||||
Key.dialog_text = "Are you sure you want to remove the selected Key?"
|
||||
if not Key.is_connected("confirmed",self,"remove_key"):
|
||||
Key.connect("confirmed",self,"remove_key")
|
||||
if Key.is_connected("confirmed",self,"edit_key"):
|
||||
Key.disconnect("confirmed",self,"edit_key")
|
||||
if Key.is_connected("confirmed",self,"new_key"):
|
||||
Key.disconnect("confirmed",self,"new_key")
|
||||
Key.popup()
|
||||
|
||||
func _on_editkey_pressed():
|
||||
Key.get_node("data").show()
|
||||
Key.get_node("data/HBoxContainer/name").editable = false
|
||||
Key.get_node("data/HBoxContainer/name").set_text(str(selected_key.get_text(0)))
|
||||
Key.get_node("data/HBoxContainer2/value").set_text(str(selected_key.get_text(1)))
|
||||
Key.window_title = "Edit selected Key"
|
||||
Key.dialog_text = ""
|
||||
if not Key.is_connected("confirmed",self,"edit_key"):
|
||||
Key.connect("confirmed",self,"edit_key")
|
||||
if Key.is_connected("confirmed",self,"remove_key"):
|
||||
Key.disconnect("confirmed",self,"remove_key")
|
||||
if Key.is_connected("confirmed",self,"new_key"):
|
||||
Key.disconnect("confirmed",self,"new_key")
|
||||
Key.popup()
|
||||
|
||||
func clean_editor():
|
||||
Keys.clear()
|
||||
Sections.clear()
|
||||
selected_section = -1
|
||||
BtnAddKey.disabled = true
|
||||
if current_file_path == "":
|
||||
BtnAddSection.disabled = true
|
||||
else:
|
||||
BtnAddSection.disabled = false
|
||||
BtnEditKey.disabled = true
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnRemoveSection.disabled = true
|
||||
|
||||
create_root()
|
||||
|
||||
func open_file(filemap : Array):
|
||||
clean_editor()
|
||||
for section in filemap:
|
||||
load_sections(section[0],section[1])
|
||||
|
||||
func new_section():
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
|
||||
var section_name = str(Section.get_node("Container/section/_name").get_text())
|
||||
var key_name = str(Section.get_node("Container/key/_name").get_text())
|
||||
var key_value = Section.get_node("Container/value/_value").get_text()
|
||||
|
||||
if section_name and key_name and key_value:
|
||||
file.set_value(section_name,key_name,key_value)
|
||||
file.save(current_file_path)
|
||||
|
||||
load_sections(section_name,[[key_name,key_value]])
|
||||
|
||||
emit_signal("update_file")
|
||||
else:
|
||||
print("Section <",section_name,"> with Key name: <",key_name,"> and Key value: <",key_value,"> not valid.")
|
||||
|
||||
func remove_section():
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
var current_section = Sections.get_item_text(selected_section)
|
||||
file.erase_section(current_section)
|
||||
Sections.remove_item(selected_section)
|
||||
file.save(current_file_path)
|
||||
|
||||
emit_signal("update_file")
|
||||
|
||||
func new_key():
|
||||
var key_name = str(Key.get_node("data/HBoxContainer/name").get_text())
|
||||
var key_value = Key.get_node("data/HBoxContainer2/value").get_text()
|
||||
if key_name and key_value:
|
||||
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
|
||||
var current_section = Sections.get_item_text(selected_section)
|
||||
|
||||
file.set_value(current_section,key_name,key_value)
|
||||
file.save(current_file_path)
|
||||
|
||||
load_keys_selected_section([[key_name,key_value]])
|
||||
|
||||
file.save(current_file_path)
|
||||
|
||||
emit_signal("update_file")
|
||||
else:
|
||||
print("Key name: <",key_name,"> with Key value: <",key_value,"> not valid.")
|
||||
|
||||
func remove_key():
|
||||
var section = Sections.get_item_text(selected_section)
|
||||
var sectionmetadata = Sections.get_item_metadata(selected_section)
|
||||
|
||||
for meta in sectionmetadata:
|
||||
if meta.has(selected_key.get_text(0)):
|
||||
sectionmetadata.erase(meta)
|
||||
|
||||
Sections.set_item_metadata(selected_section,sectionmetadata)
|
||||
|
||||
if Sections.get_item_metadata(selected_section) == []:
|
||||
Sections.remove_item(selected_section)
|
||||
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
file.set_value(section,selected_key.get_text(0),null)
|
||||
file.save(current_file_path)
|
||||
|
||||
Keys.clear()
|
||||
create_root()
|
||||
load_keys_selected_section(sectionmetadata)
|
||||
|
||||
emit_signal("update_file")
|
||||
|
||||
func edit_key():
|
||||
remove_key()
|
||||
new_key()
|
||||
|
||||
# load a section with custom fields @section_name = name of section ; @section_metadata = keys of this section with keys' properties
|
||||
func load_sections(section_name : String, section_metadata : Array):
|
||||
Sections.add_item(section_name,IconLoader.load_icon_from_name("section"),true)
|
||||
Sections.set_item_metadata(Sections.get_item_count()-1,section_metadata)
|
||||
|
||||
# load a key of a selected section to fill the "keys" list
|
||||
func load_keys_selected_section(metadata : Array):
|
||||
for key in metadata:
|
||||
var key_item = Keys.create_item(root)
|
||||
key_item.set_text(0,key[0])
|
||||
key_item.set_text(1,key[1])
|
||||
|
||||
func _on_section_selected(index : int):
|
||||
Keys.clear()
|
||||
create_root()
|
||||
BtnRemoveSection.disabled = false
|
||||
BtnAddSection.disabled = false
|
||||
BtnAddKey.disabled = false
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnEditKey.disabled = true
|
||||
|
||||
selected_section = index
|
||||
if Sections.get_item_metadata(index):
|
||||
load_keys_selected_section(Sections.get_item_metadata(index))
|
||||
|
||||
func _on_key_selected():
|
||||
selected_key = Keys.get_selected()
|
||||
BtnRemoveKey.disabled = false
|
||||
BtnEditKey.disabled = false
|
||||
|
||||
func _on_nosection_selected():
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnAddKey.disabled = true
|
||||
BtnEditKey.disabled = true
|
||||
BtnRemoveSection.disabled = true
|
||||
Keys.clear()
|
||||
selected_section = -1
|
||||
|
||||
func _on_nokey_selected():
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnEditKey.disabled = true
|
||||
|
||||
func create_root():
|
||||
root = Keys.create_item()
|
||||
root.set_text(0,"KEY_NAME")
|
||||
root.set_text(1,"KEY_VALUE")
|
||||
|
||||
func _on_visibility_changed():
|
||||
if visible:
|
||||
pass
|
||||
47
addons/file-editor/scripts/LastOpenedFiles.gd
Normal file
@ -0,0 +1,47 @@
|
||||
tool
|
||||
extends Node
|
||||
|
||||
const lastopenedfile_path : String = "res://addons/file-editor/lastopenedfiles.lastcfg"
|
||||
|
||||
|
||||
func _ready():
|
||||
pass
|
||||
|
||||
func store_opened_files(filecontainer : Control):
|
||||
var file = ConfigFile.new()
|
||||
file.load(lastopenedfile_path)
|
||||
for child in range(0,filecontainer.get_item_count()):
|
||||
var filepath = filecontainer.get_item_metadata(child)[0].current_path
|
||||
file.set_value("Opened",filepath.get_file(),filepath)
|
||||
|
||||
file.save(lastopenedfile_path)
|
||||
|
||||
func remove_opened_file(index : int , filecontainer : Control):
|
||||
var file = ConfigFile.new()
|
||||
file.load(lastopenedfile_path)
|
||||
var filepath = filecontainer.get_item_metadata(index)[0].current_path
|
||||
file.set_value("Opened",filepath.get_file(),null)
|
||||
file.save(lastopenedfile_path)
|
||||
|
||||
func load_opened_files() -> Array:
|
||||
var file = ConfigFile.new()
|
||||
file.load(lastopenedfile_path)
|
||||
var keys = []
|
||||
# Load opened files
|
||||
if file.has_section("Opened"):
|
||||
var openedfiles = file.get_section_keys("Opened")
|
||||
for openedfile in openedfiles:
|
||||
# Load each single file which was opened
|
||||
# creating and returning an Array with this format [1:file name, 2:file path, 3:file font]
|
||||
keys.append([openedfile, file.get_value("Opened",openedfile), file.get_value("Fonts",openedfile) if file.has_section_key("Fonts",openedfile) else "null"])
|
||||
return keys
|
||||
|
||||
func store_editor_fonts(file_name : String, font_path : String):
|
||||
var file = ConfigFile.new()
|
||||
file.load(lastopenedfile_path)
|
||||
file.set_value("Fonts",file_name,font_path)
|
||||
file.save(lastopenedfile_path)
|
||||
|
||||
func get_editor_font():
|
||||
var editor_plugin : EditorPlugin = EditorPlugin.new()
|
||||
return editor_plugin.get_editor_interface().get_editor_settings().get_setting("interface/editor/code_font")
|
||||
160
addons/file-editor/scripts/Preview.gd
Normal file
@ -0,0 +1,160 @@
|
||||
tool
|
||||
extends WindowDialog
|
||||
|
||||
var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new()
|
||||
var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new()
|
||||
|
||||
onready var TextPreview = $Container/TextPreview
|
||||
onready var TablePreview = $Container/TablePreview
|
||||
|
||||
signal image_downloaded()
|
||||
signal image_loaded()
|
||||
|
||||
var imgBuffer : Image
|
||||
|
||||
func _ready():
|
||||
TextPreview.hide()
|
||||
TablePreview.hide()
|
||||
|
||||
func print_preview(content : String):
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
func print_bb(content : String):
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
func print_markdown(content : String):
|
||||
var result = ""
|
||||
var bolded = []
|
||||
var italics = []
|
||||
var striked = []
|
||||
var coded = []
|
||||
var linknames = []
|
||||
var images = []
|
||||
var links = []
|
||||
var lists = []
|
||||
var underlined = []
|
||||
|
||||
var regex = RegEx.new()
|
||||
regex.compile('\\*\\*(?<boldtext>.*)\\*\\*')
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
bolded.append(res.get_string("boldtext"))
|
||||
|
||||
regex.compile('\\_\\_(?<underlinetext>.*)\\_\\_')
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
underlined.append(res.get_string("underlinetext"))
|
||||
|
||||
regex.compile("\\*(?<italictext>.*)\\*")
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
italics.append(res.get_string("italictext"))
|
||||
|
||||
regex.compile("~~(?<strikedtext>.*)~~")
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
striked.append(res.get_string("strikedtext"))
|
||||
|
||||
regex.compile("`(?<coded>.*)`")
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
coded.append(res.get_string("coded"))
|
||||
|
||||
regex.compile("[+-*](?<element>\\s.*)")
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
lists.append(res.get_string("element"))
|
||||
|
||||
regex.compile("(?<img>!\\[.*?\\))")
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
images.append(res.get_string("img"))
|
||||
|
||||
regex.compile("\\[(?<linkname>.*?)\\]|\\((?<link>[h\\.]\\S*?)\\)")
|
||||
result = regex.search_all(content)
|
||||
if result:
|
||||
for res in result:
|
||||
if res.get_string("link")!="":
|
||||
links.append(res.get_string("link"))
|
||||
if res.get_string("linkname")!="":
|
||||
linknames.append(res.get_string("linkname"))
|
||||
|
||||
for bold in bolded:
|
||||
content = content.replace("**"+bold+"**","[b]"+bold+"[/b]")
|
||||
for italic in italics:
|
||||
content = content.replace("*"+italic+"*","[i]"+italic+"[/i]")
|
||||
for strik in striked:
|
||||
content = content.replace("~~"+strik+"~~","[s]"+strik+"[/s]")
|
||||
for underline in underlined:
|
||||
content = content.replace("__"+underline+"__","[u]"+underline+"[/u]")
|
||||
for code in coded:
|
||||
content = content.replace("`"+code+"`","[code]"+code+"[/code]")
|
||||
for image in images:
|
||||
var substr = image.split("(")
|
||||
var imglink = substr[1].rstrip(")")
|
||||
content = content.replace(image,"[img]"+imglink+"[/img]")
|
||||
for i in links.size():
|
||||
content = content.replace("["+linknames[i]+"]("+links[i]+")","[url="+links[i]+"]"+linknames[i]+"[/url]")
|
||||
for element in lists:
|
||||
if content.find("- "+element):
|
||||
content = content.replace("-"+element,"[indent]-"+element+"[/indent]")
|
||||
if content.find("+ "+element):
|
||||
content = content.replace("+"+element,"[indent]-"+element+"[/indent]")
|
||||
if content.find("* "+element):
|
||||
content = content.replace("+"+element,"[indent]-"+element+"[/indent]")
|
||||
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
func print_html(content : String):
|
||||
content = content.replace("<i>","[i]")
|
||||
content = content.replace("</i>","[/i]")
|
||||
content = content.replace("<b>","[b]")
|
||||
content = content.replace("</b>","[/b]")
|
||||
content = content.replace("<u>","[u]")
|
||||
content = content.replace("</u>","[/u]")
|
||||
content = content.replace("<ins>","[u]")
|
||||
content = content.replace("</ins>","[/u]")
|
||||
content = content.replace("<del>","[s]")
|
||||
content = content.replace("</del>","[/s]")
|
||||
content = content.replace('<a href="',"[url=")
|
||||
content = content.replace('">',"]")
|
||||
content = content.replace("</a>","[/url]")
|
||||
content = content.replace('<img src="',"[img]")
|
||||
content = content.replace('" />',"[/img]")
|
||||
content = content.replace('"/>',"[/img]")
|
||||
content = content.replace("<pre>","[code]")
|
||||
content = content.replace("</pre>","[/code]")
|
||||
content = content.replace("<center>","[center]")
|
||||
content = content.replace("</center>","[/center]")
|
||||
content = content.replace("<right>","[right]")
|
||||
content = content.replace("</right>","[/right]")
|
||||
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
func print_csv(rows : Array):
|
||||
TablePreview.columns = rows[0].size()
|
||||
for item in rows:
|
||||
for string in item:
|
||||
var label = Label.new()
|
||||
label.text = str(string)
|
||||
label.set_h_size_flags(SIZE_EXPAND)
|
||||
label.set_align(1)
|
||||
label.set_valign(1)
|
||||
TablePreview.add_child(label)
|
||||
|
||||
|
||||
TablePreview.show()
|
||||
|
||||
func _on_Preview_popup_hide():
|
||||
queue_free()
|
||||
227
addons/file-editor/scripts/VanillaEditor.gd
Normal file
@ -0,0 +1,227 @@
|
||||
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_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")
|
||||
|
||||
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")
|
||||
load_default_font()
|
||||
|
||||
func set_font(font_path : String) -> void:
|
||||
var dynamic_font : DynamicFont = DynamicFont.new()
|
||||
var dynamic_font_data : DynamicFontData = DynamicFontData.new()
|
||||
dynamic_font_data.set_font_path(font_path)
|
||||
dynamic_font.set_font_data(dynamic_font_data)
|
||||
TextEditor.set("custom_fonts/font",dynamic_font)
|
||||
|
||||
func load_default_font() -> void:
|
||||
var default_font = LastOpenedFiles.get_editor_font()
|
||||
if default_font:
|
||||
set_font(default_font)
|
||||
|
||||
func set_wrap_enabled(enabled:bool):
|
||||
TextEditor.set_wrap_enabled(enabled)
|
||||
TextEditor.update()
|
||||
|
||||
func draw_minimap(value:bool):
|
||||
TextEditor.draw_minimap(value)
|
||||
TextEditor.update()
|
||||
|
||||
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("<b>","</b>",Color8(153,153,255,255),false)
|
||||
TextEditor.add_color_region("<i>","</i>",Color8(153,255,153,255),false)
|
||||
TextEditor.add_color_region("<del>","</del>",Color8(255,153,153,255),false)
|
||||
TextEditor.add_color_region("<ins>","</ins>",Color8(255,255,102,255),false)
|
||||
TextEditor.add_color_region("<a","</a>",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region("<img","/>",Color8(255,204,153,255),true)
|
||||
TextEditor.add_color_region("<pre>","</pre>",Color8(192,192,192,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)
|
||||
"md":
|
||||
TextEditor.add_color_region("***","***",Color8(126,186,181,255),false)
|
||||
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)
|
||||
TextEditor.add_color_region("> ","",Color8(172,138,79,255),true)
|
||||
"cfg":
|
||||
TextEditor.add_color_region("[","]",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region('"','"',Color8(255,255,102,255),false)
|
||||
TextEditor.add_color_region(';','',Color8(128,128,128,255),true)
|
||||
"ini":
|
||||
TextEditor.add_color_region("[","]",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region('"','"',Color8(255,255,102,255),false)
|
||||
TextEditor.add_color_region(';','',Color8(128,128,128,255),true)
|
||||
_:
|
||||
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 : String, last_modified : Dictionary, current_file_path : String):
|
||||
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())
|
||||
33
addons/file-editor/scripts/file-editor.gd
Normal file
@ -0,0 +1,33 @@
|
||||
tool
|
||||
extends EditorPlugin
|
||||
|
||||
#var doc = preload("../scenes/FileEditor.tscn")
|
||||
|
||||
var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new()
|
||||
|
||||
var FileEditor
|
||||
|
||||
func _enter_tree():
|
||||
add_autoload_singleton("IconLoader","res://addons/file-editor/scripts/IconLoader.gd")
|
||||
add_autoload_singleton("LastOpenedFiles","res://addons/file-editor/scripts/LastOpenedFiles.gd")
|
||||
FileEditor = preload("../scenes/FileEditor.tscn").instance()
|
||||
get_editor_interface().get_editor_viewport().add_child(FileEditor)
|
||||
FileEditor.hide()
|
||||
|
||||
func _exit_tree():
|
||||
# FileEditor.clean_editor()
|
||||
remove_autoload_singleton("IconLoader")
|
||||
remove_autoload_singleton("LastOpenedFiles")
|
||||
get_editor_interface().get_editor_viewport().remove_child(FileEditor)
|
||||
|
||||
func has_main_screen():
|
||||
return true
|
||||
|
||||
func get_plugin_name():
|
||||
return "File"
|
||||
|
||||
func get_plugin_icon():
|
||||
return IconLoader.load_icon_from_name("file")
|
||||
|
||||
func make_visible(visible):
|
||||
FileEditor.visible = visible
|
||||
BIN
icon.png
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 147 KiB |
@ -8,9 +8,38 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_classes=[ {
|
||||
"base": "Control",
|
||||
"class": "CSVEditor",
|
||||
"language": "GDScript",
|
||||
"path": "res://addons/file-editor/scripts/CSVEditor.gd"
|
||||
}, {
|
||||
"base": "HTTPRequest",
|
||||
"class": "GoogleTranslateAPI",
|
||||
"language": "GDScript",
|
||||
"path": "res://addons/file-editor/scripts/GoogleTranslatorAPI.gd"
|
||||
}, {
|
||||
"base": "KinematicBody2D",
|
||||
"class": "PersonBody",
|
||||
"language": "GDScript",
|
||||
"path": "res://Scripts/PersonBody.gd"
|
||||
}, {
|
||||
"base": "Node2D",
|
||||
"class": "PersonRoot",
|
||||
"language": "GDScript",
|
||||
"path": "res://Scripts/PersonRoot.gd"
|
||||
}, {
|
||||
"base": "Node2D",
|
||||
"class": "Spot",
|
||||
"language": "GDScript",
|
||||
"path": "res://Scripts/Spot.gd"
|
||||
} ]
|
||||
_global_script_class_icons={
|
||||
|
||||
"CSVEditor": "",
|
||||
"GoogleTranslateAPI": "",
|
||||
"PersonBody": "",
|
||||
"PersonRoot": "",
|
||||
"Spot": ""
|
||||
}
|
||||
|
||||
[application]
|
||||
@ -19,6 +48,16 @@ config/name="GMTK2021"
|
||||
run/main_scene="res://Scenes/TestScn.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
[autoload]
|
||||
|
||||
IconLoader="*res://addons/file-editor/scripts/IconLoader.gd"
|
||||
LastOpenedFiles="*res://addons/file-editor/scripts/LastOpenedFiles.gd"
|
||||
SpotManager="*res://Scripts/SpotManager.gd"
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PoolStringArray( "file-editor" )
|
||||
|
||||
[rendering]
|
||||
|
||||
quality/driver/driver_name="GLES2"
|
||||
|
||||