Merge branch 'feat/godot' of https://github.com/RetroDECK/RetroDECK into feat/okonomiyaki

This commit is contained in:
XargonWan 2024-09-24 16:54:35 +09:00
commit 8ccc9b805a
19 changed files with 805 additions and 501 deletions

View file

@ -8,8 +8,10 @@ var console: bool = false
var BIOS_COLUMNS_BASIC := ["BIOS File Name", "System", "Found", "Hash Match", "Description"]
var BIOS_COLUMNS_EXPERT := ["BIOS File Name", "System", "Found", "Hash Match", "Description", "Subdirectory", "Hash"]
@onready var bios_type:int = get_tree().current_scene.bios_type
@onready var custom_theme: Theme = get_tree().current_scene.custom_theme
func _ready():
$".".theme = custom_theme
var table := $Table
if bios_type == 0: #Basic BIOS button pressed

View file

@ -1,21 +0,0 @@
[gd_scene format=3 uid="uid://b0ts52bsu7cpb"]
[node name="PopupContent" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
focus_mode = 2
scroll_following = true
context_menu_enabled = true
selection_enabled = true

View file

@ -2,10 +2,13 @@ extends Control
var content = null
#@onready var button_off = get_node(current_scene.%l1_button)# .current_scene.l1_button
@onready var lbhide: TextureButton = get_tree().current_scene.get_node("%l1_button")
@onready var rbhide: TextureButton = get_tree().current_scene.get_node("%r1_button")
@onready var lbhide: Panel = get_tree().current_scene.get_node("%l1_box")
@onready var rbhide: Panel = get_tree().current_scene.get_node("%r1_box")
@onready var bios_type:int = get_tree().current_scene.bios_type
@onready var custom_theme: Theme = get_tree().current_scene.custom_theme
func _ready():
$".".theme = custom_theme
lbhide.visible=false
rbhide.visible=false
# TODO this alowes copy and paste from RTB in logs?
@ -24,6 +27,6 @@ func set_content(new_content):
func set_title(new_title):
$Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/Label.text = new_title
func set_display_text(new_display_text):
$Panel/MarginContainer/VBoxContainer/ContentContainer/MarginContainer/RichTextLabel.text=new_display_text
$Panel/MarginContainer/VBoxContainer/ContentContainer/MarginContainer/LineEdit.text=new_display_text
func _on_back_pressed():
queue_free()

View file

@ -68,11 +68,7 @@ theme_override_constants/margin_top = 6
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 6
[node name="RichTextLabel" type="RichTextLabel" parent="Panel/MarginContainer/VBoxContainer/ContentContainer/MarginContainer"]
[node name="LineEdit" type="TextEdit" parent="Panel/MarginContainer/VBoxContainer/ContentContainer/MarginContainer"]
layout_mode = 2
focus_mode = 2
scroll_following = true
context_menu_enabled = true
selection_enabled = true
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/BackButton" to="." method="_on_back_pressed"]
editable = false
shortcut_keys_enabled = false

View file

@ -1,81 +0,0 @@
keys,en,it,de,sv,ua,ja,zh
TK_SYSTEM,"System","Sistema","System","System","Cистема","システム","系统"
TK_GAME_SETTINGS,"Game Settings","Impostazioni di Gioco","Spieleinstellungen","Spelinställningar","Ігрові Налаштування","ゲーム設定","游戏设定"
TK_QRESUME,"Quick Resume","Quick Resume","Schnellfortsetzung","Snabb Återupptagning","Швидкий Запуск","クイックリジューム","快速恢复"
TK_ADVANCED,"Advanced","Avanzate","Erweitert","Avancerat","Розширені","アドバンスド","高级/进阶"
TK_REWIND,"Rewind","Riavvolgimento","Zurückspulen","Tillbakaspolning","Перемотка","巻き戻し","倒带"
TK_CONFIRMEXIT,"Quit Confirmation","Conferma per Uscire","Beenden Bestätigen","Avlutningsbekräftelse","Підтвердження Виходу","確認終了","退出确认"
TK_CHEATS,"Cheats","Trucchi","Cheats","Fusk","Чіти","チート","作弊"
TK_SOON,"(coming soon)","(in arrivo)","(bald verfügbar)","(kommer snart)","(незабаром)","(近日公開)","(即将到来)"
TK_GRAPHICS,"Graphics","Grafica","Grafik","Grafik","Графіка","グラフィック","画质"
TK_CONTROLS,"Controls","Controlli","Steuerung","Kontroller","Управління","コントロール","控制"
TK_TOOLS,"Tools","Strumenti","Werkzeuge","Verktyg","Інструменти","ツール","工具"
TK_NETWORK,"Network","Rete","Netzwerk","Nätverk","Мережа","ネットワーク","kai qi"
TK_TROUBLESHOOT,"Troubleshoot","Risoluzione Problemi","Fehlerbehebung","Felsökning","Несправності","トラブルシューティング","排错"
TK_TROUBLESHOOTLBL,"Troubleshoot","Risoluzione Problemi","Fehlerbehebung","Felsökning","Усунення Несправностей","トラブルシューティング","排错"
TK_CONFIGURATOR,"Configurator","Configurator","Configurator","Configurator","Конфігуратор","確認","设置"
TK_ABOUT,"About","Informazioni","Über","Om","Про Нас","アバウト","关于"
TK_DECORATIONS,"Decorations","Decorazioni","Dekorationen","Dekorationer","Декорації","装飾","装饰"
TK_BORDERS,"Borders","Bordi","Ränder","Ramar","Фони","ボーダー","边框"
TK_WSCREEN,"Widescreen","Widescreen","Breitbild","Bredbild","Широкий Екран","ワイドスクリーン","宽屏"
TK_SHADERS,"Shaders","Shader","Shaders","Shaders","Шейдери","シェーダ","着色器"
TK_EXTRA,"Extra","Extra","Extra","Extra","Додатково","エクストラ","额外"
TK_MODS,"Mods","Mod","Mods","Moddar","Модифікації","改造","游戏模组"
TK_TATE,"TATE Mode","TATE Mode","TATE-Mode","TATE Läge","Режим TATE","垂直スクリーンモード","垂屏模式"
TK_STEAMCONTEMP,"Steam: Controller Templates","Template dei Controller di Steam","Steam: Controller-Vorlagen","Steam: Kontroller Mallar","Steam: Шаблони Контролерів","Steamコントローラーテンプレート","Steam控制器模板"
TK_INSTALL,"Install","Installa","Installieren","Installera","Встановити","インストール","安装"
TK_BTNLAYOUT,"Button Layout","Layout Pulsanti","Tastenbelegung","Knapp Layout","Розташування Кнопок","ボタンのレイアウト","按键布局"
TK_BTNCLASSIC,"Classic","Classico","Klassik","Klassisk","Класичний","クラッシク","经典"
TK_BTNNINTENDO,"Nintendo","Nintendo","Nintendo","Nintendo","Nintendo","ニンテンドー","任天堂"
TK_HOTKEYSOUND,"Hotkey Activation Sound","Suono su Attivazione Hotkey","Hotkey Aktivierungssound","Hotkey Aktiveringsljud","Звук Гарячих Клавіш","ホットキー起動音","热键激活音效"
TK_SCAN,"Scan","Scansiona","Scan","Skanna","Сканувати","スキャン","扫描"
TK_PS3SCAN,"PlayStation 3 Games","Giochi PlayStation 3","PlayStation 3 Spiele","PlayStation 3 Spel","Ігри для PlayStation 3","プレステ3ゲーム","PlayStation3游戏"
TK_SCUMMVMSCAN,"ScummVM Games","Giochi ScummVM","ScummVM Spiele","ScummVM Spel","Ігри ScummVM","ScummVMゲーム","ScummVM游戏"
TK_MULTIFILE,"Multi-File Structure","Struttura Multi-File","Mehrfachdateistruktur","Flerfilsstruktur","Багатофайлова Структура","マルチファイル構造","多文件结构"
TK_3DSDECRYPT,"3DS Game Decrypter","Decrittatore Giochi 3DS","3DS Spielentcrypter","3DS Spelavkrypterare","Дешифратор Ігор 3DS","3DS ゲームデクリプタ","3DS游戏解密"
TK_BIOS,"BIOS","BIOS","BIOS","BIOS","BIOS","BIOS","BIOS"
TK_GENTOOLS,"General Tools","Strumenti Generali","Allgemeine Werkzeuge","Allmänt","Загальні Інструменти","一般的なツール","一般工具"
TK_EMUOPEN,"Open Emulator...","Apri Emulatore...","Öffne Emulator...","Öppna Emulator...","Відкрити Емулятор...","エミュレータを開く...","打开模拟器..."
TK_GRIDINSTALL,"Install RetroDECK Steam Grids","Installa le Steam Grids di RetroDECK","RetroDECK Steam Grids Installieren","Installera RetroDECK Steam Grids","Встановити RetroDECK Steam Grids","RetroDECK Steam Gridsをインストール","安装RetroDECK Steam Grids"
TK_PS3FWINSTALL,"Install PS3 Firmware","Installa il Firmware PS3","Installiere PS3 Firmware","Installera PS3 Firmware","Встановити Прошивку PS3","PS3ファームウェアをインストール","安装PS3固件"
TK_FAVSTEAM,"Show Favorites as Steam Games","Mostra Giochi Preferiti su Steam","Favoriten als Steam-Spiele anzeigen","Visa Favoriter som Spel i Steam","Показати Улюблені як Ігри в Steam","お気に入りを Steam ゲームとして表示","显示收藏夹为Steam游戏"
TK_FILETOOLS,"File Maniuplation","Manipolazione File","Datei Werkzeuge","Filhantering","Маніпуляції з Файлами","ファイル操作","文件操作"
TK_USBTOOL,"USB Transfer Tool","Strumento di Trasferimento USB","USB Transfer Tool","USB Överföringsverktyg","Інструмент для Передачі Даних USB","USB転送ツール","USB传输工具"
TK_BACKUPBTN,"Backup User Data","Backup Dati Utente","Benutzerdaten Sichern","Backup av Användardata","Резервне Копіювання Даних Користувача","ユーザデータバックアップ","备份用户数据"
TK_COMPRESSGAMES,"Compress Games","Comprimi Giochi","Spiele Komprimieren","Komprimera Spel","Стиснути Ігри","ゲームを圧縮","压缩游戏"
TK_MOVEFILES,"Move User Files","Sposta File Utente","Benutzerdateien Verschieben","Flytta Användarfiler","Перемістити Файли Користувача","ユーザーファイルを移動","移动用户文件"
TK_CHEEVOS,"Retro Achievements","Retro Achievements","Retro Achievements","Retro Achievements","Retro Achievements","レトロ実績","Retro成就"
TK_CHEEVOSUNAME,"Username:","Nome Utente:","Benutzername:","Användarnamn:","Ім'я користувача:","ユーザー名:","用户名:"
TK_CHEEVOSPWD,"Password:","Password:","Passwort:","Lösenord:","Пароль:","パスワード:","密码:"
TK_CHEEVOSHARDCORE,"Hardcore Mode","Modalità Hardcore","Hardcore Modus","Hardcore Läge","Хардкорний Режим","ハードコアモード","硬核模式"
TK_CHEEVOSTROPHYBTN,"Show Throphies","Mostra Trofei","Trophäen Anzeigen","Visa Troféer","Показати Трофеї","トロフィーを表示","显示奖杯"
TK_LOGIN,"Login","Login","Login","Logga In","Увійти","ログイン","登录"
TK_NETPLAY,"Netplay","Netplay","Netplay","Netplay","Netplay","ネットプレイ","网战"
TK_NETPLAYID,"Netplay ID:","ID Netplay:","Netplay ID:","Netplay ID:","Netplay ID:","ネットプレイID","网战ID"
TK_NETPLAYADDRESS,"Address:","Indirizzo:","Adresse:","Address:","Адреса:","アドレス:","地址:"
TK_NETPLAYCONNECT,"Connect","Connetti","Verbinden","Anslut","Підключитися","接続","连接"
TK_DATAMNG,"Data Management","Gestione Dati","Datenverwaltung","Datahantering","Управління Даними","データ管理","数据管理"
TK_SAVESSYNC,"Synchronize Saves","Sincronizzazione Salvataggi","Spielstände Synchronisieren","Synkronisera Sparfiler","Синхронізувати Збереження","保存データを同期","同步存档"
TK_FTPBTN,"Start sFTP Server","Avvia Server sFTP","Starte sFTP Server","Starta sFTP Server","Запустити Сервер sFTP","sFTPサーバーを起動","开启sFTP服务器"
TK_CHECKCONN,"Check Connection","Controllo Connessione","Verbindung Überprüfen","Kontrollera Anslutning","Перевірити Підключення","接続を確認","检查连接"
TK_LOGSBTN,"Show Logs","Mostra Log","Logs Anzeigen","Visa Loggar","Показати Логи","ログを表示","显示日志"
TK_RESET,"Reset","Reset","Reset","Återställ","Скинути","リセット","重置"
TK_RESETSINGLE,"Single Emulator...","Emulatore Singolo...","Einzelner Emulator...","En Emulator...","Один Емулятор...","単一エミュレータ...","单独模拟器..."
TK_RESETALL,"All Emulators","Tutti gli Emulatori","Alle Emulatoren","Alla Emulatorer","Всі Емулятори","全エミュレータ","所有模拟器"
TK_RESETFULL,"Full RetroDECK Reset","Reset RetroDECK Completo","Vollständiges Zurücksetzen von RetroDECK","Återställ Hela RetroDECK","Повне Скидання RetroDECK","RetroDECKを完全リセット","完全重置RetroDECK"
TK_UPDATENOTIF,"Update Notification","Notifica gli Aggiornamenti","Update-Benachrichtigung","Uppdaterings-notifikation","Сповіщення про Оновлення","アップデート通知","更新通知"
TK_EASTEREGGS,"Show Easter Eggs","Mostra Easter Eggs","Easter Eggs anzeigen","Visa Easter Eggs","Показувати Пасхальні Яйця","イースターエッグを表示","显示彩蛋"
TK_MULTIUSR,"Multi-User Mode","Modalità Multi-Utente","Multi-User Mode","Flerspelarläge","Багатокористувацький Режим","マルチユーザーモード","多用户模式"
TK_OFF,"Off","Off","Aus","Av","Вимк","オフ","关闭"
TK_STEAMUSR,"Steam Users","Utenti Steam","Steam Benutzer","Steam Användare","Користувачі Steam","Steamユーザー","Steam用户"
TK_CUSTOMUSR,"Custom Users","Utenti Personalizzati","Benutzerdefinierte Benutzer","Anpassade Användare","Кастомні Користувачі","カスタムユーザー","自定义用户"
TK_MUSIC,"Menu Music","Musica del Menu","Menu Hintergrundmusik","Meny Musik","Музика Меню","メニュー音楽","菜单音乐"
TK_ABOUTHEADER,"About RetroDECK","A Proposito di RetroDECK","Über RetroDECK","Om RetroDECK","Про RetroDECK","RetroDECKについて","关于RetroDECK"
TK_WEBSITE,"Website","Sito Web","Website","Hemsida","Веб-сайт","公式サイト","网站"
TK_CHANGELOG,"Version History","Storico Versioni","Versions History","Versionshistorik","Історія Версій","バージョン履歴","版本历史"
TK_WIKI,"Wiki","Wiki","Wiki","Wiki","Wiki","Wiki","维基"
TK_CREDITS,"Credits","Crediti","Credits","Tillskrivningar","Автори","クレジット","鸣谢"
TK_DONATE,"Donate","Donazione","Spenden","Donera","Пожертвувати","寄付","捐赠"
TK_CONTACTUS,"Reach Us","Contattaci","Kontakiere Uns","Kontakta Oss","Зв'язатися з Нами","連絡","联系我们"
TK_LICENSES,"Licenses","Licenze","Lizenzen","Licenser","Ліцензії","ライセンス","许可"
TK_ON,"On","On","An","På","Увімк","オン","开启"
1 keys en it de sv ua ja zh
2 TK_SYSTEM System Sistema System System Cистема システム 系统
3 TK_GAME_SETTINGS Game Settings Impostazioni di Gioco Spieleinstellungen Spelinställningar Ігрові Налаштування ゲーム設定 游戏设定
4 TK_QRESUME Quick Resume Quick Resume Schnellfortsetzung Snabb Återupptagning Швидкий Запуск クイックリジューム 快速恢复
5 TK_ADVANCED Advanced Avanzate Erweitert Avancerat Розширені アドバンスド 高级/进阶
6 TK_REWIND Rewind Riavvolgimento Zurückspulen Tillbakaspolning Перемотка 巻き戻し 倒带
7 TK_CONFIRMEXIT Quit Confirmation Conferma per Uscire Beenden Bestätigen Avlutningsbekräftelse Підтвердження Виходу 確認終了 退出确认
8 TK_CHEATS Cheats Trucchi Cheats Fusk Чіти チート 作弊
9 TK_SOON (coming soon) (in arrivo) (bald verfügbar) (kommer snart) (незабаром) (近日公開) (即将到来)
10 TK_GRAPHICS Graphics Grafica Grafik Grafik Графіка グラフィック 画质
11 TK_CONTROLS Controls Controlli Steuerung Kontroller Управління コントロール 控制
12 TK_TOOLS Tools Strumenti Werkzeuge Verktyg Інструменти ツール 工具
13 TK_NETWORK Network Rete Netzwerk Nätverk Мережа ネットワーク kai qi
14 TK_TROUBLESHOOT Troubleshoot Risoluzione Problemi Fehlerbehebung Felsökning Несправності トラブルシューティング 排错
15 TK_TROUBLESHOOTLBL Troubleshoot Risoluzione Problemi Fehlerbehebung Felsökning Усунення Несправностей トラブルシューティング 排错
16 TK_CONFIGURATOR Configurator Configurator Configurator Configurator Конфігуратор 確認 设置
17 TK_ABOUT About Informazioni Über Om Про Нас アバウト 关于
18 TK_DECORATIONS Decorations Decorazioni Dekorationen Dekorationer Декорації 装飾 装饰
19 TK_BORDERS Borders Bordi Ränder Ramar Фони ボーダー 边框
20 TK_WSCREEN Widescreen Widescreen Breitbild Bredbild Широкий Екран ワイドスクリーン 宽屏
21 TK_SHADERS Shaders Shader Shaders Shaders Шейдери シェーダ 着色器
22 TK_EXTRA Extra Extra Extra Extra Додатково エクストラ 额外
23 TK_MODS Mods Mod Mods Moddar Модифікації 改造 游戏模组
24 TK_TATE TATE Mode TATE Mode TATE-Mode TATE Läge Режим TATE 垂直スクリーンモード 垂屏模式
25 TK_STEAMCONTEMP Steam: Controller Templates Template dei Controller di Steam Steam: Controller-Vorlagen Steam: Kontroller Mallar Steam: Шаблони Контролерів Steam:コントローラーテンプレート Steam:控制器模板
26 TK_INSTALL Install Installa Installieren Installera Встановити インストール 安装
27 TK_BTNLAYOUT Button Layout Layout Pulsanti Tastenbelegung Knapp Layout Розташування Кнопок ボタンのレイアウト 按键布局
28 TK_BTNCLASSIC Classic Classico Klassik Klassisk Класичний クラッシク 经典
29 TK_BTNNINTENDO Nintendo Nintendo Nintendo Nintendo Nintendo ニンテンドー 任天堂
30 TK_HOTKEYSOUND Hotkey Activation Sound Suono su Attivazione Hotkey Hotkey Aktivierungssound Hotkey Aktiveringsljud Звук Гарячих Клавіш ホットキー起動音 热键激活音效
31 TK_SCAN Scan Scansiona Scan Skanna Сканувати スキャン 扫描
32 TK_PS3SCAN PlayStation 3 Games Giochi PlayStation 3 PlayStation 3 Spiele PlayStation 3 Spel Ігри для PlayStation 3 プレステ3ゲーム PlayStation3游戏
33 TK_SCUMMVMSCAN ScummVM Games Giochi ScummVM ScummVM Spiele ScummVM Spel Ігри ScummVM ScummVMゲーム ScummVM游戏
34 TK_MULTIFILE Multi-File Structure Struttura Multi-File Mehrfachdateistruktur Flerfilsstruktur Багатофайлова Структура マルチファイル構造 多文件结构
35 TK_3DSDECRYPT 3DS Game Decrypter Decrittatore Giochi 3DS 3DS Spielentcrypter 3DS Spelavkrypterare Дешифратор Ігор 3DS 3DS ゲームデクリプタ 3DS游戏解密
36 TK_BIOS BIOS BIOS BIOS BIOS BIOS BIOS BIOS
37 TK_GENTOOLS General Tools Strumenti Generali Allgemeine Werkzeuge Allmänt Загальні Інструменти 一般的なツール 一般工具
38 TK_EMUOPEN Open Emulator... Apri Emulatore... Öffne Emulator... Öppna Emulator... Відкрити Емулятор... エミュレータを開く... 打开模拟器...
39 TK_GRIDINSTALL Install RetroDECK Steam Grids Installa le Steam Grids di RetroDECK RetroDECK Steam Grids Installieren Installera RetroDECK Steam Grids Встановити RetroDECK Steam Grids RetroDECK Steam Gridsをインストール 安装RetroDECK Steam Grids
40 TK_PS3FWINSTALL Install PS3 Firmware Installa il Firmware PS3 Installiere PS3 Firmware Installera PS3 Firmware Встановити Прошивку PS3 PS3ファームウェアをインストール 安装PS3固件
41 TK_FAVSTEAM Show Favorites as Steam Games Mostra Giochi Preferiti su Steam Favoriten als Steam-Spiele anzeigen Visa Favoriter som Spel i Steam Показати Улюблені як Ігри в Steam お気に入りを Steam ゲームとして表示 显示收藏夹为Steam游戏
42 TK_FILETOOLS File Maniuplation Manipolazione File Datei Werkzeuge Filhantering Маніпуляції з Файлами ファイル操作 文件操作
43 TK_USBTOOL USB Transfer Tool Strumento di Trasferimento USB USB Transfer Tool USB Överföringsverktyg Інструмент для Передачі Даних USB USB転送ツール USB传输工具
44 TK_BACKUPBTN Backup User Data Backup Dati Utente Benutzerdaten Sichern Backup av Användardata Резервне Копіювання Даних Користувача ユーザデータバックアップ 备份用户数据
45 TK_COMPRESSGAMES Compress Games Comprimi Giochi Spiele Komprimieren Komprimera Spel Стиснути Ігри ゲームを圧縮 压缩游戏
46 TK_MOVEFILES Move User Files Sposta File Utente Benutzerdateien Verschieben Flytta Användarfiler Перемістити Файли Користувача ユーザーファイルを移動 移动用户文件
47 TK_CHEEVOS Retro Achievements Retro Achievements Retro Achievements Retro Achievements Retro Achievements レトロ実績 Retro成就
48 TK_CHEEVOSUNAME Username: Nome Utente: Benutzername: Användarnamn: Ім'я користувача: ユーザー名: 用户名:
49 TK_CHEEVOSPWD Password: Password: Passwort: Lösenord: Пароль: パスワード: 密码:
50 TK_CHEEVOSHARDCORE Hardcore Mode Modalità Hardcore Hardcore Modus Hardcore Läge Хардкорний Режим ハードコアモード 硬核模式
51 TK_CHEEVOSTROPHYBTN Show Throphies Mostra Trofei Trophäen Anzeigen Visa Troféer Показати Трофеї トロフィーを表示 显示奖杯
52 TK_LOGIN Login Login Login Logga In Увійти ログイン 登录
53 TK_NETPLAY Netplay Netplay Netplay Netplay Netplay ネットプレイ 网战
54 TK_NETPLAYID Netplay ID: ID Netplay: Netplay ID: Netplay ID: Netplay ID: ネットプレイID: 网战ID:
55 TK_NETPLAYADDRESS Address: Indirizzo: Adresse: Address: Адреса: アドレス: 地址:
56 TK_NETPLAYCONNECT Connect Connetti Verbinden Anslut Підключитися 接続 连接
57 TK_DATAMNG Data Management Gestione Dati Datenverwaltung Datahantering Управління Даними データ管理 数据管理
58 TK_SAVESSYNC Synchronize Saves Sincronizzazione Salvataggi Spielstände Synchronisieren Synkronisera Sparfiler Синхронізувати Збереження 保存データを同期 同步存档
59 TK_FTPBTN Start sFTP Server Avvia Server sFTP Starte sFTP Server Starta sFTP Server Запустити Сервер sFTP sFTPサーバーを起動 开启sFTP服务器
60 TK_CHECKCONN Check Connection Controllo Connessione Verbindung Überprüfen Kontrollera Anslutning Перевірити Підключення 接続を確認 检查连接
61 TK_LOGSBTN Show Logs Mostra Log Logs Anzeigen Visa Loggar Показати Логи ログを表示 显示日志
62 TK_RESET Reset Reset Reset Återställ Скинути リセット 重置
63 TK_RESETSINGLE Single Emulator... Emulatore Singolo... Einzelner Emulator... En Emulator... Один Емулятор... 単一エミュレータ... 单独模拟器...
64 TK_RESETALL All Emulators Tutti gli Emulatori Alle Emulatoren Alla Emulatorer Всі Емулятори 全エミュレータ 所有模拟器
65 TK_RESETFULL Full RetroDECK Reset Reset RetroDECK Completo Vollständiges Zurücksetzen von RetroDECK Återställ Hela RetroDECK Повне Скидання RetroDECK RetroDECKを完全リセット 完全重置RetroDECK
66 TK_UPDATENOTIF Update Notification Notifica gli Aggiornamenti Update-Benachrichtigung Uppdaterings-notifikation Сповіщення про Оновлення アップデート通知 更新通知
67 TK_EASTEREGGS Show Easter Eggs Mostra Easter Eggs Easter Eggs anzeigen Visa Easter Eggs Показувати Пасхальні Яйця イースターエッグを表示 显示彩蛋
68 TK_MULTIUSR Multi-User Mode Modalità Multi-Utente Multi-User Mode Flerspelarläge Багатокористувацький Режим マルチユーザーモード 多用户模式
69 TK_OFF Off Off Aus Av Вимк オフ 关闭
70 TK_STEAMUSR Steam Users Utenti Steam Steam Benutzer Steam Användare Користувачі Steam Steamユーザー Steam用户
71 TK_CUSTOMUSR Custom Users Utenti Personalizzati Benutzerdefinierte Benutzer Anpassade Användare Кастомні Користувачі カスタムユーザー 自定义用户
72 TK_MUSIC Menu Music Musica del Menu Menu Hintergrundmusik Meny Musik Музика Меню メニュー音楽 菜单音乐
73 TK_ABOUTHEADER About RetroDECK A Proposito di RetroDECK Über RetroDECK Om RetroDECK Про RetroDECK RetroDECKについて 关于RetroDECK
74 TK_WEBSITE Website Sito Web Website Hemsida Веб-сайт 公式サイト 网站
75 TK_CHANGELOG Version History Storico Versioni Versions History Versionshistorik Історія Версій バージョン履歴 版本历史
76 TK_WIKI Wiki Wiki Wiki Wiki Wiki Wiki 维基
77 TK_CREDITS Credits Crediti Credits Tillskrivningar Автори クレジット 鸣谢
78 TK_DONATE Donate Donazione Spenden Donera Пожертвувати 寄付 捐赠
79 TK_CONTACTUS Reach Us Contattaci Kontakiere Uns Kontakta Oss Зв'язатися з Нами 連絡 联系我们
80 TK_LICENSES Licenses Licenze Lizenzen Licenser Ліцензії ライセンス 许可
81 TK_ON On On An Увімк オン 开启

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=113 format=3 uid="uid://61f6m4r1mpan"]
[gd_scene load_steps=123 format=3 uid="uid://61f6m4r1mpan"]
[ext_resource type="Texture2D" uid="uid://bv6vh33cnfaw4" path="res://icon.svg" id="1_axfei"]
[ext_resource type="Theme" uid="uid://hhc60cllcg47" path="res://assets/themes/default_theme.tres" id="1_if8nh"]
@ -14,8 +14,9 @@
[ext_resource type="Texture2D" uid="uid://dk856hwnwsuab" path="res://assets/icons/pixelitos/128/retroarch.png" id="4_xcuib"]
[ext_resource type="Texture2D" uid="uid://cvr1eijddf6nv" path="res://assets/icons/banner/gamegear.png" id="5_4d7s7"]
[ext_resource type="Texture2D" uid="uid://d2lm4mfx1gt86" path="res://assets/graphics/retrodeck_base_shake0.png" id="5_7rjbt"]
[ext_resource type="Texture2D" uid="uid://bns3nmvku2qhe" path="res://assets/icons/pixelitos/128/system-shutdown.png" id="5_ahd1x"]
[ext_resource type="Texture2D" uid="uid://dv42c6hpi6tde" path="res://assets/icons/pixelitos/128/cs-tiling.png" id="5_box56"]
[ext_resource type="Script" path="res://helper_text.gd" id="5_cprkf"]
[ext_resource type="Script" path="res://scripts/helper_text.gd" id="5_cprkf"]
[ext_resource type="Texture2D" uid="uid://dxdhjp18rgmr4" path="res://res/flags/united_kingdom_32.png" id="5_exkn2"]
[ext_resource type="Texture2D" uid="uid://du8go5dyabmsl" path="res://assets/icons/banner/gb.png" id="5_ja8to"]
[ext_resource type="StyleBox" uid="uid://ba3l3ja1jbqpx" path="res://assets/themes/emulators.tres" id="5_rjtkn"]
@ -99,8 +100,23 @@
[ext_resource type="Script" path="res://scripts/controller_guide.gd" id="68_ahvw4"]
[ext_resource type="AudioStream" uid="uid://dhejvg02t5o35" path="res://assets/sounds/30375__sjonas88__smooth-game-like-sounds/538549__sjonas88__select-2.wav" id="71_ghxvk"]
[ext_resource type="Texture2D" uid="uid://dllymmym0335n" path="res://assets/icons/pixelitos/16/system-shutdown.png" id="87_1yqbe"]
[ext_resource type="Texture2D" uid="uid://26piw1lylfai" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0650.png" id="90_xkj8e"]
[ext_resource type="Texture2D" uid="uid://cj5p6oa4tbh3l" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0044.png" id="92_xpwgw"]
[ext_resource type="Texture2D" uid="uid://brf74puvpnwsd" path="res://assets/graphics/retrodeck.png" id="93_f7ex4"]
[ext_resource type="Texture2D" uid="uid://ewsr5bqe7gcr" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0049.png" id="93_rdk5c"]
[ext_resource type="Script" path="res://scripts/retrodeck.gd" id="94_8nlr1"]
[ext_resource type="Texture2D" uid="uid://bjw5uccsiprpo" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0045.png" id="94_ybo5b"]
[ext_resource type="Texture2D" uid="uid://da6e8m0kx265j" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0050.png" id="95_act8q"]
[ext_resource type="Texture2D" uid="uid://bfmu7t0xf5kdf" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0651.png" id="99_km4fg"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_co0k7"]
bg_color = Color(0.580392, 0.419608, 0.921569, 1)
border_width_left = 10
border_width_top = 10
border_width_right = 10
border_width_bottom = 10
border_color = Color(0.101961, 0.623529, 1, 1)
border_blend = true
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1161k"]
bg_color = Color(0.101961, 0.623529, 1, 0.376471)
@ -180,14 +196,22 @@ animations = [{
"speed": 5.0
}]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rf0rc"]
texture = ExtResource("4_2tuu4")
texture_margin_left = 6.0
texture_margin_top = 6.0
texture_margin_right = 6.0
texture_margin_bottom = 6.0
region_rect = Rect2(0, 8, 16, 16)
modulate_color = Color(0.65098, 0.403922, 0.819608, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4gcyr"]
bg_color = Color(0.455, 0.455, 0.455, 1)
border_width_left = 10
border_width_top = 10
border_width_right = 10
border_width_bottom = 10
border_color = Color(0.580392, 0.419608, 0.921569, 1)
border_blend = true
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
corner_radius_bottom_left = 20
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gie3e"]
bg_color = Color(0.0509804, 0.0509804, 0.0509804, 1)
border_color = Color(0.298039, 0.298039, 0.298039, 1)
[node name="Control" type="Control"]
layout_mode = 3
@ -212,30 +236,30 @@ grow_vertical = 2
[node name="SplitContainer" type="SplitContainer" parent="Background"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 1.0
offset_top = 5.0
offset_right = 1253.0
offset_bottom = 724.0
offset_top = 1.0
offset_right = 1287.0
offset_bottom = 725.0
split_offset = 1280
[node name="MarginContainer" type="MarginContainer" parent="Background/SplitContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="TabContainer" type="TabContainer" parent="Background/SplitContainer/MarginContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_styles/tab_selected = SubResource("StyleBoxFlat_co0k7")
tab_alignment = 1
current_tab = 0
current_tab = 3
script = ExtResource("3_id6l4")
[node name="Presets" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
script = ExtResource("4_2jqfc")
metadata/_tab_index = 0
[node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS"]
custom_minimum_size = Vector2(1200, 600)
layout_mode = 2
follow_focus = true
@ -260,7 +284,32 @@ theme_override_constants/h_separation = 25
theme_override_constants/v_separation = 25
columns = 3
[node name="borders_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
[node name="ask_to_exit_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
text = "ASK TO EXIT"
icon = ExtResource("5_ahd1x")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
metadata/description = "This function will prompt you to exit on quiting an emulator."
[node name="ask_to_exit_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer/ask_to_exit_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="border_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
text = "BORDERS"
@ -270,11 +319,22 @@ icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
[node name="border_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer/border_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="button_swap_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
tooltip_text = "Change to Nintendo style button mappings."
text = "BUTTON SWAP
"
icon = ExtResource("4_caaxx")
@ -283,57 +343,88 @@ icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
[node name="button_swap_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer/button_swap_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="mods_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
disabled = true
text = "MODS"
icon = ExtResource("5_vehlp")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
metadata/description = "This feature is planned for a future release."
[node name="quick_resume_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
tooltip_text = "RetroArch Cores/Systems only"
text = "QUICK RESUME"
icon = ExtResource("12_3jrmi")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
metadata/description = "Testing 1,2,3 .."
[node name="quick_rewind_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
text = "QUICK REWIND"
text = "REWIND"
icon = ExtResource("11_c3qcy")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
[node name="quick_rewind_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer/quick_rewind_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="tate_mode_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
disabled = true
text = "TATE MODE"
icon = ExtResource("10_jm3oh")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
metadata/description = "This feature is planned for a future release."
[node name="shaders_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
disabled = true
text = "SHADERS"
icon = ExtResource("4_q6hd2")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
metadata/description = "This feature is planned for a future release."
[node name="widescreen_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
@ -346,33 +437,68 @@ icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
[node name="reset_retrodeck_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
[node name="widescreen_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer/widescreen_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="reset_retrodeck_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
text = "RESET RETROCECK"
text = "RESET RETRODECK"
icon = ExtResource("11_g1uhn")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
[node name="reset_all_emulators" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
[node name="reset_retrodeck_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer/reset_retrodeck_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="reset_all_emulators_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(375, 125)
layout_mode = 2
text = "RESET ALL EMULATORS"
icon = ExtResource("45_qxd26")
alignment = 1
icon_alignment = 1
vertical_icon_alignment = 0
expand_icon = true
[node name="reset_all_emulators_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/globals_gridcontainer/reset_all_emulators_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="SYSTEM" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 1
[node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM"]
custom_minimum_size = Vector2(1200, 600)
layout_mode = 2
follow_focus = true
@ -535,6 +661,7 @@ unique_name_in_owner = true
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
size_flags_horizontal = 3
action_mode = 0
text = "HELP"
icon = ExtResource("46_feagl")
expand_icon = true
@ -1078,7 +1205,6 @@ disabled = true
text = "TK_MULTIFILE"
[node name="SETTINGS" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("54_bxhvn")
metadata/_tab_index = 3
@ -1090,8 +1216,6 @@ follow_focus = true
[node name="VBoxContainer" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Settings/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/separation = 64
[node name="system_container" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Settings/ScrollContainer/VBoxContainer"]
layout_mode = 2
@ -1138,7 +1262,7 @@ layout_mode = 2
alignment = 1
expand_icon = true
selected = 0
item_count = 5
item_count = 4
popup/item_0/text = "CHOOSE FONT"
popup/item_0/icon = ExtResource("54_dah1j")
popup/item_0/disabled = true
@ -1146,15 +1270,12 @@ popup/item_0/separator = true
popup/item_1/text = "Default"
popup/item_1/icon = ExtResource("55_wv2p5")
popup/item_1/id = 1
popup/item_2/text = "Retro"
popup/item_2/icon = ExtResource("56_ubqc2")
popup/item_2/text = "Modern"
popup/item_2/icon = ExtResource("55_wv2p5")
popup/item_2/id = 2
popup/item_3/text = "Modern"
popup/item_3/icon = ExtResource("55_wv2p5")
popup/item_3/id = 3
popup/item_4/text = "OpenDyslexic3"
popup/item_4/icon = ExtResource("56_ubqc2")
popup/item_4/id = 4
popup/item_3/text = "OpenDyslexic3"
popup/item_3/icon = ExtResource("56_ubqc2")
popup/item_3/id = 2
[node name="menu_music" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/system_container"]
layout_mode = 2
@ -1173,43 +1294,55 @@ icon = ExtResource("56_witym")
alignment = 1
expand_icon = true
[node name="multi_user_option" type="OptionButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer"]
[node name="locale_option" type="OptionButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/system_container"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
disabled = true
alignment = 1
expand_icon = true
selected = 0
item_count = 4
popup/item_0/text = "TK_MULTIUSR"
popup/item_0/icon = ExtResource("57_7b0kp")
popup/item_0/separator = true
popup/item_1/text = "TK_CUSTOMUSR"
popup/item_1/icon = ExtResource("58_mntxv")
fit_to_longest_item = false
item_count = 7
popup/item_0/text = "DEFAULT LANGUAGE"
popup/item_0/icon = ExtResource("5_exkn2")
popup/item_1/icon = ExtResource("6_fiylw")
popup/item_1/id = 1
popup/item_2/text = "TK_OFF"
popup/item_2/icon = ExtResource("58_mntxv")
popup/item_2/icon = ExtResource("7_qgxid")
popup/item_2/id = 2
popup/item_3/text = "TK_STEAMUSR"
popup/item_3/icon = ExtResource("58_mntxv")
popup/item_3/icon = ExtResource("8_lptln")
popup/item_3/id = 3
popup/item_4/icon = ExtResource("9_dp7oa")
popup/item_4/id = 4
popup/item_5/icon = ExtResource("10_e8mt0")
popup/item_5/id = 5
popup/item_6/icon = ExtResource("11_ri2fv")
popup/item_6/id = 6
[node name="cheevos_container" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer"]
layout_mode = 2
[node name="cheevos" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container"]
[node name="cheevos_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
disabled = true
text = "TK_CHEEVOS"
[node name="cheevos_separator" type="HSeparator" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container"]
layout_mode = 2
[node name="cheevos_progress" type="ProgressBar" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_button"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/fill = SubResource("StyleBoxFlat_1161k")
show_percentage = false
[node name="cheevos_login_container" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container"]
unique_name_in_owner = true
visible = false
layout_mode = 2
theme_override_constants/h_separation = 64
columns = 2
[node name="cheevos_username_label" type="Label" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_login_container"]
layout_mode = 2
@ -1238,38 +1371,14 @@ placeholder_text = "password"
secret = true
secret_character = "*"
[node name="cheevos_advanced_container" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container"]
[node name="cheevos_hardcore" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_login_container"]
layout_mode = 2
[node name="cheevos_advanced_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container"]
layout_mode = 2
disabled = true
text = "TK_ADVANCED"
[node name="cheevos_hardcore" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container"]
layout_mode = 2
disabled = true
text = "TK_CHEEVOSHARDCORE"
[node name="cheevos_loginout_container" type="HBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container"]
layout_mode = 2
size_flags_horizontal = 8
theme_override_constants/separation = 10
[node name="cheevos_trophies_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container/cheevos_loginout_container"]
layout_mode = 2
disabled = true
text = "TK_CHEEVOSTROPHYBTN"
[node name="cheevos_loginout_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container/cheevos_loginout_container"]
layout_mode = 2
disabled = true
text = "TK_LOGIN"
[node name="netplay_container" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer"]
layout_mode = 2
[node name="netplay" type="Label" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/netplay_container"]
[node name="netplay" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/netplay_container"]
layout_mode = 2
text = "TK_NETPLAY"
@ -1315,16 +1424,30 @@ size_flags_vertical = 5
layout_mode = 2
text = "TK_NETPLAYCONNECT"
[node name="multi_user_option" type="OptionButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
disabled = true
alignment = 1
expand_icon = true
selected = 0
item_count = 4
popup/item_0/text = "TK_MULTIUSR"
popup/item_0/icon = ExtResource("57_7b0kp")
popup/item_0/separator = true
popup/item_1/text = "TK_CUSTOMUSR"
popup/item_1/icon = ExtResource("58_mntxv")
popup/item_1/id = 1
popup/item_2/text = "TK_OFF"
popup/item_2/icon = ExtResource("58_mntxv")
popup/item_2/id = 2
popup/item_3/text = "TK_STEAMUSR"
popup/item_3/icon = ExtResource("58_mntxv")
popup/item_3/id = 3
[node name="data_mng_container" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer"]
layout_mode = 2
[node name="data_mng_label" type="Label" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/data_mng_container"]
layout_mode = 2
text = "TK_DATAMNG"
[node name="data_mng_separator" type="HSeparator" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/data_mng_container"]
layout_mode = 2
[node name="saves_sync" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/data_mng_container"]
layout_mode = 2
size_flags_horizontal = 3
@ -1351,15 +1474,12 @@ layout_mode = 2
layout_mode = 2
alignment = 1
[node name="rd_title" type="RichTextLabel" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_ABOUT/ScrollContainer/about_container"]
[node name="rd_title" type="Label" parent="Background/SplitContainer/MarginContainer/TabContainer/ABOUT/ScrollContainer/about_container"]
unique_name_in_owner = true
clip_contents = false
custom_minimum_size = Vector2(300, 150)
layout_mode = 2
text = "RetroDECK"
scroll_active = false
autowrap_mode = 2
tab_size = 2
[node name="logo" type="TextureRect" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_ABOUT/ScrollContainer/about_container/rd_title"]
custom_minimum_size = Vector2(128, 128)
@ -1374,14 +1494,11 @@ texture = ExtResource("1_axfei")
expand_mode = 1
stretch_mode = 4
[node name="about_header" type="RichTextLabel" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_ABOUT/ScrollContainer/about_container"]
clip_contents = false
[node name="about_header" type="Label" parent="Background/SplitContainer/MarginContainer/TabContainer/ABOUT/ScrollContainer/about_container"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
size_flags_vertical = 3
theme_override_font_sizes/normal_font_size = 23
text = "TK_ABOUTHEADER"
scroll_active = false
text = "ABOUT RETRODECK"
[node name="GridContainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_ABOUT/ScrollContainer/about_container"]
unique_name_in_owner = true
@ -1394,7 +1511,6 @@ columns = 4
unique_name_in_owner = true
visible = false
layout_mode = 2
focus_neighbor_right = NodePath("../GLOBALS")
metadata/_tab_index = 5
[node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/WIP"]
@ -1778,18 +1894,12 @@ animation = &"speech"
autoplay = "speech"
[node name="speach_bubble" type="Panel" parent="Background/SplitContainer/side_logo/rekku"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 395.0
offset_top = -830.0
offset_right = 673.0
offset_bottom = -402.0
grow_horizontal = 2
grow_vertical = 0
unique_name_in_owner = true
layout_mode = 0
offset_left = 371.0
offset_top = -1120.0
offset_right = 644.0
offset_bottom = -786.0
theme_override_styles/panel = SubResource("StyleBoxTexture_rf0rc")
[node name="helper_text" type="RichTextLabel" parent="Background/SplitContainer/side_logo/rekku"]
@ -1827,146 +1937,179 @@ expand_mode = 1
stream = ExtResource("3_xivj6")
volume_db = -11.243
[node name="pop_rtl" type="Label" parent="Background"]
unique_name_in_owner = true
visible = false
z_index = 2
layout_mode = 2
offset_left = 6.0
offset_top = 703.0
offset_right = 1271.0
offset_bottom = 797.0
theme_override_styles/normal = SubResource("StyleBoxFlat_4gcyr")
text = "TEST MESSAGE"
[node name="CanvasModulate" type="CanvasModulate" parent="."]
visible = false
position = Vector2(134, 151)
color = Color(0.858824, 0.890196, 1, 1)
[node name="coltroller_guide" type="PanelContainer" parent="."]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 5.0
offset_top = -69.0
offset_right = -337.0
grow_horizontal = 2
grow_vertical = 0
[node name="controller_guide" type="PanelContainer" parent="."]
layout_mode = 0
offset_left = 6.0
offset_top = 731.0
offset_right = 655.0
offset_bottom = 793.0
script = ExtResource("68_ahvw4")
[node name="controller_guide_text" type="RichTextLabel" parent="coltroller_guide"]
layout_mode = 2
theme_override_colors/default_color = Color(1, 1, 1, 0.607843)
theme_override_font_sizes/normal_font_size = 23
fit_content = true
scroll_active = false
theme_override_constants/separation = 10
[node name="a_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"]
unique_name_in_owner = true
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
offset_left = 147.0
offset_top = -5.0
offset_right = 231.0
offset_bottom = 54.0
size_flags_vertical = 4
texture_normal = ExtResource("30_glnve")
texture_pressed = ExtResource("31_j5ri1")
stretch_mode = 0
[node name="b_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"]
unique_name_in_owner = true
[node name="Label" type="Label" parent="controller_guide/HBoxContainer"]
layout_mode = 2
offset_left = 314.0
offset_top = -4.0
offset_right = 398.0
offset_bottom = 55.0
theme_override_colors/font_color = Color(0.270222, 0.270222, 0.270222, 1)
text = "CONFIRM"
[node name="b_button" type="TextureButton" parent="controller_guide/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
size_flags_vertical = 4
texture_normal = ExtResource("33_1ghye")
texture_pressed = ExtResource("34_fum2b")
stretch_mode = 0
[node name="l1_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"]
unique_name_in_owner = true
[node name="Label2" type="Label" parent="controller_guide/HBoxContainer"]
layout_mode = 2
offset_left = 7.0
offset_top = -6.0
offset_right = 91.0
offset_bottom = 53.0
texture_normal = ExtResource("38_prt7u")
texture_pressed = ExtResource("39_m4qgd")
theme_override_colors/font_color = Color(0.270588, 0.270588, 0.270588, 1)
text = "BACK"
[node name="x_button" type="TextureButton" parent="controller_guide/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
size_flags_vertical = 4
texture_normal = ExtResource("92_xpwgw")
texture_pressed = ExtResource("93_rdk5c")
stretch_mode = 0
[node name="r1_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"]
[node name="Label5" type="Label" parent="controller_guide/HBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.270588, 0.270588, 0.270588, 1)
text = "INFO"
[node name="y_button" type="TextureButton" parent="controller_guide/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 832.0
offset_top = -8.0
offset_right = 916.0
offset_bottom = 51.0
texture_normal = ExtResource("39_5ft88")
texture_pressed = ExtResource("40_pnuor")
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
size_flags_vertical = 4
texture_normal = ExtResource("94_ybo5b")
texture_pressed = ExtResource("95_act8q")
stretch_mode = 0
[node name="exit_button" type="Button" parent="coltroller_guide/controller_guide_text"]
[node name="Label6" type="Label" parent="controller_guide/HBoxContainer"]
layout_mode = 2
offset_left = 567.0
offset_top = -11.0
offset_right = 651.0
offset_bottom = 48.0
grow_horizontal = 0
scale = Vector2(1.4, 1.4)
icon = ExtResource("36_3qttl")
flat = true
icon_alignment = 1
expand_icon = true
theme_override_colors/font_color = Color(0.270588, 0.270588, 0.270588, 1)
text = "REKKU"
[node name="locale_option" type="OptionButton" parent="coltroller_guide/controller_guide_text"]
[node name="a_button2" type="TextureButton" parent="controller_guide/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -217.0
offset_top = -46.0
offset_right = -158.0
offset_bottom = -17.0
grow_horizontal = 0
grow_vertical = 0
selected = 0
item_count = 7
popup/item_0/icon = ExtResource("5_exkn2")
popup/item_1/icon = ExtResource("6_fiylw")
popup/item_1/id = 1
popup/item_2/icon = ExtResource("7_qgxid")
popup/item_2/id = 2
popup/item_3/icon = ExtResource("8_lptln")
popup/item_3/id = 3
popup/item_4/icon = ExtResource("9_dp7oa")
popup/item_4/id = 4
popup/item_5/icon = ExtResource("10_e8mt0")
popup/item_5/id = 5
popup/item_6/icon = ExtResource("11_ri2fv")
popup/item_6/id = 6
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
size_flags_vertical = 4
texture_normal = ExtResource("90_xkj8e")
stretch_mode = 0
[node name="a_button3" type="TextureButton" parent="controller_guide/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
size_flags_vertical = 4
texture_normal = ExtResource("99_km4fg")
stretch_mode = 0
[node name="Label4" type="Label" parent="controller_guide/HBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.270588, 0.270588, 0.270588, 1)
text = "QUIT"
[node name="exit_button" type="TextureButton" parent="controller_guide/HBoxContainer"]
custom_minimum_size = Vector2(45, 45)
custom_minimum_size = Vector2(35, 35)
layout_mode = 2
size_flags_vertical = 4
texture_normal = ExtResource("87_1yqbe")
stretch_mode = 0
[node name="Label7" type="Label" parent="controller_guide/HBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.270588, 0.270588, 0.270588, 1)
text = "QUIT"
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
unique_name_in_owner = true
stream = ExtResource("71_ghxvk")
volume_db = -5.0
[node name="l1_button" type="TextureButton" parent="."]
[node name="l1_box" type="Panel" parent="."]
unique_name_in_owner = true
layout_mode = 2
offset_left = 14.0
offset_top = 2.0
offset_right = 105.0
offset_bottom = 54.0
layout_mode = 0
offset_left = 15.0
offset_top = 6.0
offset_right = 75.0
offset_bottom = 66.0
theme_override_styles/panel = SubResource("StyleBoxFlat_gie3e")
[node name="l1_button" type="TextureButton" parent="l1_box"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -22.5
offset_top = -22.5
offset_right = 22.5
offset_bottom = 22.5
grow_horizontal = 2
grow_vertical = 2
texture_normal = ExtResource("38_prt7u")
texture_pressed = ExtResource("39_m4qgd")
stretch_mode = 0
[node name="r1_button" type="TextureButton" parent="."]
[node name="r1_box" type="Panel" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 1134.0
offset_top = 1.0
offset_right = 1225.0
offset_bottom = 53.0
offset_left = 1199.0
offset_top = 6.0
offset_right = 1259.0
offset_bottom = 66.0
theme_override_styles/panel = SubResource("StyleBoxFlat_gie3e")
[node name="r1_button" type="TextureButton" parent="r1_box"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -22.5
offset_top = -22.5
offset_right = 22.5
offset_bottom = 22.5
grow_horizontal = 2
grow_vertical = 2
texture_normal = ExtResource("39_5ft88")
texture_pressed = ExtResource("40_pnuor")
stretch_mode = 0
@ -1980,5 +2123,5 @@ script = ExtResource("94_8nlr1")
[connection signal="pressed" from="Background/SplitContainer/MarginContainer/TabContainer/TOOLS/ScrollContainer/VBoxContainer/troubleshoot_container/bios_button" to="." method="_on_bios_button_pressed"]
[connection signal="pressed" from="Background/SplitContainer/MarginContainer/TabContainer/TOOLS/ScrollContainer/VBoxContainer/troubleshoot_container/bios_button_expert" to="." method="_on_bios_button_expert_pressed"]
[connection signal="item_selected" from="controller_guide/HBoxContainer/locale_option" to="." method="_on_locale_selected"]
[connection signal="item_selected" from="Background/SplitContainer/MarginContainer/TabContainer/SETTINGS/ScrollContainer/VBoxContainer/system_container/locale_option" to="." method="_on_locale_selected"]
[connection signal="pressed" from="controller_guide/HBoxContainer/exit_button" to="." method="_on_exit_button_pressed"]

View file

@ -64,6 +64,11 @@ rekku_hide={
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":72,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
info={
"deadzone": 0.5,
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":true,"script":null)
]
}
quit={
"deadzone": 0.5,
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
@ -75,7 +80,6 @@ next_tab={
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":69,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":5,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194328,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
previous_tab={
@ -83,7 +87,6 @@ previous_tab={
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":81,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":4,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
back_button={
@ -111,10 +114,7 @@ quit2={
[internationalization]
locale/translation_remaps={
"res://res/pixel_ui_theme/8x8_ui_elements.png": PackedStringArray("res://res/pixel_ui_theme/8x8_ui_elements_de.png:de", "res://res/pixel_ui_theme/8x8_ui_elements_sv.png:sv"),
"res://res/pixel_ui_theme/8x8_ui_elements2x.png": PackedStringArray("res://res/pixel_ui_theme/8x8_ui_elements2x_de.png:de", "res://res/pixel_ui_theme/8x8_ui_elements2x_sv.png:sv")
}
locale/translation_remaps={}
[rendering]

View file

@ -1087,7 +1087,7 @@ cache/0/16/0/glyphs/95/uv_rect = Rect2(92, 148, 6, 1)
cache/0/16/0/glyphs/95/texture_idx = 0
cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0)
[sub_resource type="Image" id="Image_nu6pr"]
[sub_resource type="Image" id="Image_cx80n"]
data = {
"data": PackedByteArray("4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg/////////////////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4A=="),
"format": "Lum8",
@ -1097,9 +1097,9 @@ data = {
}
[sub_resource type="ImageTexture" id="447"]
image = SubResource("Image_nu6pr")
image = SubResource("Image_cx80n")
[sub_resource type="Image" id="Image_g63b3"]
[sub_resource type="Image" id="Image_o7ypa"]
data = {
"data": PackedByteArray("AAQACgARABkAHwAiACQAJAAkACQAIgAfABkAEQAKAAQACgAVACUANAA/AEYARwBIAEgARwBGAD8ANAAlABUACgARACU/d1rvVv9W/1b/Vv9W/1b/Vv9W/1rvP3cAJQARABkANFnvSP9E/0P/Q/9D/0P/Q/9D/0T/SP9Z7wA0ABkAHwA/VP9D/0P/Q/9D/0P/Q/9D/0P/Q/9D/1T/AD8AHwAiAEZS/0L/Qv9C/0L/Qv9C/0L/Qv9C/0L/Uv8ARgAiACQAR1H/QP9A/0D/QP9A/0D/QP9A/0D/QP9R/wBHACQAJABIT/8//z//P/8//z//P/8//z//P/8//0//AEgAJAAkAEhN/z7/Pv8+/z7/Pv8+/z7/Pv8+/z7/Tf8ASAAkACQAR0z/Pf89/z3/Pf89/z3/Pf89/z3/Pf9M/wBHACQAIgBGSv87/zv/O/87/zv/O/87/zv/O/87/0r/AEYAIgAfAD9J/zr/Ov86/zr/Ov86/zr/Ov86/zr/Sf8APwAfABkANEvvPf85/zn/Of85/zn/Of85/zn/Pf9L7wA0ABkAEQAlNXdK70f/Rv9G/0b/Rv9G/0b/R/9K7TV3ACUAEQAKABUAJQA0AD8ARgBHAEgASABHAEYAPwA0ACUAFQAKAAQACgARABkAHwAiACQAJAAkACQAIgAfABkAEQAKAAQ="),
"format": "LumAlpha8",
@ -1109,7 +1109,7 @@ data = {
}
[sub_resource type="ImageTexture" id="53"]
image = SubResource("Image_g63b3")
image = SubResource("Image_o7ypa")
[sub_resource type="StyleBoxTexture" id="54"]
content_margin_left = 6.0
@ -1123,7 +1123,7 @@ expand_margin_right = 2.0
expand_margin_bottom = 2.0
region_rect = Rect2(0, 0, 16, 16)
[sub_resource type="Image" id="Image_asfoq"]
[sub_resource type="Image" id="Image_1mjn7"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvw5HjL85R4y/aEeMv3pHjL97R4y/e0eMv3tHjL97R4y/ekeMv2hHjL85R4y/DgAAAAAAAAAAAAAAAAAAAABHjL86R4y/dEeMvxBHjL8IR4y/CEeMvwhHjL8IR4y/CEeMvwhHjL8QR4y/dEeMvzoAAAAAAAAAAAAAAAAAAAAAR4y/aUeMvw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvw9HjL9pAAAAAAAAAAAAAAAAAAAAAEeMv3tHjL8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8GR4y/ewAAAAAAAAAAAAAAAAAAAABHjL97R4y/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4y/CEeMv3sAAAAAAAAAAAAAAAAAAAAAR4y/e0eMvwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvwhHjL97AAAAAAAAAAAAAAAAAAAAAEeMv3tHjL8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8IR4y/ewAAAAAAAAAAAAAAAAAAAABHjL97R4y/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4y/CEeMv3sAAAAAAAAAAAAAAAAAAAAAR4y/e0eMvwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvwZHjL97AAAAAAAAAAAAAAAAAAAAAEeMv2lHjL8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8OR4y/aQAAAAAAAAAAAAAAAAAAAABHjL86R4y/dUeMvw9HjL8IR4y/CEeMvwhHjL8IR4y/CEeMvwhHjL8RR4y/dEeMvzoAAAAAAAAAAAAAAAAAAAAAR4y/DkeMvzpHjL9oR4y/ekeMv3tHjL97R4y/e0eMv3tHjL96R4y/aEeMvzlHjL8OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
"format": "RGBA8",
@ -1133,7 +1133,7 @@ data = {
}
[sub_resource type="ImageTexture" id="56"]
image = SubResource("Image_asfoq")
image = SubResource("Image_1mjn7")
[sub_resource type="StyleBoxTexture" id="57"]
content_margin_left = 6.0
@ -1147,7 +1147,7 @@ expand_margin_right = 2.0
expand_margin_bottom = 2.0
region_rect = Rect2(0, 0, 16, 16)
[sub_resource type="Image" id="Image_ki6gy"]
[sub_resource type="Image" id="Image_nx1w6"]
data = {
"data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAoAAAAVAAAAJQAAADQAAAA/AAAARgAAAEcAAABIAAAASAAAAEcAAABGAAAAPwAAADQAAAAlAAAAFQAAAAoAAAARAAAAJUJAS3dfWmzvW1do/1pWZ/9aVmf/WlZn/1pWZ/9aVmf/WlZn/1tXaP9fWmzvQkBLdwAAACUAAAARAAAAGQAAADRfWmvvTUpX/0lGUv9IRVH/SEVR/0hFUf9IRVH/SEVR/0hFUf9JRlL/TUpX/19aa+8AAAA0AAAAGQAAAB8AAAA/W1dm/0lGUv9IRVH/SEVR/0hFUf9IRVH/SEVR/0hFUf9IRVH/SEVR/0lGUv9bV2b/AAAAPwAAAB8AAAAiAAAARllVZP9HRFD/R0RQ/0dEUP9HRFD/R0RQ/0dEUP9HRFD/R0RQ/0dEUP9HRFD/WVVk/wAAAEYAAAAiAAAAJAAAAEdYVGT/RkNQ/0ZDUP9GQ1D/RkNQ/0ZDUP9GQ1D/RkNQ/0ZDUP9GQ1D/RkNQ/1hUZP8AAABHAAAAJAAAACQAAABIVlNj/0VCT/9FQk//RUJP/0VCT/9FQk//RUJP/0VCT/9FQk//RUJP/0VCT/9WU2P/AAAASAAAACQAAAAkAAAASFZTYv9FQk7/RUJO/0VCTv9FQk7/RUJO/0VCTv9FQk7/RUJO/0VCTv9FQk7/VlNi/wAAAEgAAAAkAAAAJAAAAEdVUWL/REFO/0RBTv9EQU7/REFO/0RBTv9EQU7/REFO/0RBTv9EQU7/REFO/1VRYv8AAABHAAAAJAAAACIAAABGVVFg/0RBTf9EQU3/REFN/0RBTf9EQU3/REFN/0RBTf9EQU3/REFN/0RBTf9VUWD/AAAARgAAACIAAAAfAAAAP1VRYP9EQU3/Q0BM/0NATP9DQEz/Q0BM/0NATP9DQEz/Q0BM/0NATP9EQU3/VVFg/wAAAD8AAAAfAAAAGQAAADRWU2TvR0NR/0M/Tf9CP0z/Qj9M/0I/TP9CP0z/Qj9M/0I/TP9DP03/R0NR/1dTZO8AAAA0AAAAGQAAABEAAAAlPjtGd1dTY+9TUF//U09e/1NPXv9TT17/U09e/1NPXv9TT17/U1Bf/1dTY+0+O0Z3AAAAJQAAABEAAAAKAAAAFQAAACUAAAA0AAAAPwAAAEYAAABHAAAASAAAAEgAAABHAAAARgAAAD8AAAA0AAAAJQAAABUAAAAKAAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABA=="),
"format": "RGBA8",
@ -1157,7 +1157,7 @@ data = {
}
[sub_resource type="ImageTexture" id="59"]
image = SubResource("Image_ki6gy")
image = SubResource("Image_nx1w6")
[sub_resource type="StyleBoxTexture" id="60"]
content_margin_left = 6.0
@ -1175,7 +1175,7 @@ expand_margin_right = 2.0
expand_margin_bottom = 2.0
region_rect = Rect2(0, 0, 16, 16)
[sub_resource type="Image" id="Image_jvn7o"]
[sub_resource type="Image" id="Image_645t5"]
data = {
"data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAoAAAAVAAAAJQAAADQAAAA/AAAARgAAAEcAAABIAAAASAAAAEcAAABGAAAAPwAAADQAAAAlAAAAFQAAAAoAAAARAAAAJTw6RHdWU2HvUlBd/1FPXf9RT13/UU9d/1FPXf9RT13/UU9d/1JQXf9WU2HvPDpEdwAAACUAAAARAAAAGQAAADRWUmDvRkJO/0I+Sv9BPkn/QT5J/0E+Sf9BPkn/QT5J/0E+Sf9CPkr/RkJO/1ZSYO8AAAA0AAAAGQAAAB8AAAA/UU5b/0E+Sf9APkj/QD5I/0A+SP9APkj/QD5I/0A+SP9APkj/QD5I/0E+Sf9RTlv/AAAAPwAAAB8AAAAiAAAARk9MWf8/PUf/Pz1H/z89R/8/PUf/Pz1H/z89R/8/PUf/Pz1H/z89R/8/PUf/T0xZ/wAAAEYAAAAiAAAAJAAAAEdOSlj/PjtG/z47Rv8+O0b/PjtG/z47Rv8+O0b/PjtG/z47Rv8+O0b/PjtG/05KWP8AAABHAAAAJAAAACQAAABIS0lV/zw6RP88OkT/PDpE/zw6RP88OkT/PDpE/zw6RP88OkT/PDpE/zw6RP9LSVX/AAAASAAAACQAAAAkAAAASEpHVP87OUP/OzlD/zs5Q/87OUP/OzlD/zs5Q/87OUP/OzlD/zs5Q/87OUP/SkdU/wAAAEgAAAAkAAAAJAAAAEdJRlP/OjhC/zo4Qv86OEL/OjhC/zo4Qv86OEL/OjhC/zo4Qv86OEL/OjhC/0lGU/8AAABHAAAAJAAAACIAAABGR0VQ/zk3QP85N0D/OTdA/zk3QP85N0D/OTdA/zk3QP85N0D/OTdA/zk3QP9HRVD/AAAARgAAACIAAAAfAAAAP0dDUP84NT//ODU//zg1P/84NT//ODU//zg1P/84NT//ODU//zg1P/84NT//R0NQ/wAAAD8AAAAfAAAAGQAAADRHRFLvOjhC/zY0Pv82ND7/NjQ+/zY0Pv82ND7/NjQ+/zY0Pv82ND7/OjhC/0dEUu8AAAA0AAAAGQAAABEAAAAlMzE5d0dEUO9EQk3/REFM/0RBTP9EQUz/REFM/0RBTP9EQUz/REJN/0dEUe0zMTl3AAAAJQAAABEAAAAKAAAAFQAAACUAAAA0AAAAPwAAAEYAAABHAAAASAAAAEgAAABHAAAARgAAAD8AAAA0AAAAJQAAABUAAAAKAAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABA=="),
"format": "RGBA8",
@ -1185,7 +1185,7 @@ data = {
}
[sub_resource type="ImageTexture" id="62"]
image = SubResource("Image_jvn7o")
image = SubResource("Image_645t5")
[sub_resource type="StyleBoxTexture" id="63"]
content_margin_left = 6.0
@ -1199,7 +1199,7 @@ expand_margin_right = 2.0
expand_margin_bottom = 2.0
region_rect = Rect2(0, 0, 16, 16)
[sub_resource type="Image" id="Image_jy5tk"]
[sub_resource type="Image" id="Image_6cwok"]
data = {
"data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAsAAAAWAAAAJwAAADYAAABBAAAASQAAAEoAAABLAAAASwAAAEoAAABJAAAAQQAAADYAAAAnAAAAFgAAAAsAAAATAAAAKTEvN4BGQ0/xQ0BM/0JAS/9CQEv/QkBL/0JAS/9CQEv/QkBL/0NATP9GQ0/xMS83fwAAACkAAAATAAAAHgAAAD1HRFDyOjhB/wsLDP8LCgz/CwoM/wsKDP8LCgz/CwsM/wsLDP8LCwz/OjhB/0dEUPIAAAA9AAAAHgAAACcAAABNREJO/w8OEf8PDhH/Dw4R/w8OEf8PDhH/Dw4R/w8OEf8PDhH/Dw4R/w8OEf9EQk7/AAAATQAAACcAAAAsAAAAWEZCT/8UExb/ExIW/xMSFv8UExb/ExIW/xQTFv8UExb/FBMW/xQTFv8TEhb/RkJP/wAAAFgAAAAsAAAAMgAAAF1HRVD/GBcb/xgXG/8YFxv/GBcb/xgXG/8YFxv/GBcb/xkYHP8YFxv/GBcb/0dFUP8AAABdAAAAMgAAADMAAABjSUZT/x0cIf8dHCH/HRwh/x0cIf8dHCH/HRwh/x0cIf8dHCH/HRwh/x0cIf9JRlP/AAAAYwAAADMAAAA2AAAAZkpHVP8iISf/IiEn/yIhJ/8iISf/IiEn/yIhJ/8iISf/IiEn/yIhJ/8iISf/SkdU/wAAAGYAAAA2AAAAOQAAAGlLSVX/JyYt/ycmLf8nJi3/JyYt/ycmLf8nJi3/JyYt/ygmLf8nJi3/KCYt/0tJVf8AAABpAAAAOQAAADgAAABsTkpY/y0rM/8tKzP/LSsz/y0rM/8tKzP/LSsz/y0rM/8tKzP/LSsz/y0rM/9OSlj/AAAAbAAAADgAAAA1AAAAZVBNWv8zMTr/MzE5/zMxOf8zMTn/MzE5/zMxOf8zMTn/MzE5/zMxOf8zMTr/UE1a/wAAAGUAAAA1AAAALQAAAFlVUl/8RUJN/zk3QP84N0D/OTdA/zg3QP84N0D/ODdA/zg3QP86N0H/RUJN/1VSYPwAAABZAAAALQAAACAAAABEPTpFtFZSYP1STlz/UU5b/1FOW/9RTlv/UU5b/1FOW/9RTlv/Uk5c/1ZSYP09OkW0AAAARAAAACAAAAAUAAAAKAAAAEUAAABdAAAAbgAAAHkAAAB6AAAAfAAAAHwAAAB6AAAAeQAAAG4AAABdAAAARQAAACgAAAAUAAAACAAAABQAAAAhAAAAMAAAADoAAAA/AAAAQwAAAEMAAABDAAAAQwAAAD8AAAA6AAAAMAAAACEAAAAUAAAACA=="),
"format": "RGBA8",
@ -1209,7 +1209,7 @@ data = {
}
[sub_resource type="ImageTexture" id="65"]
image = SubResource("Image_jy5tk")
image = SubResource("Image_6cwok")
[sub_resource type="StyleBoxTexture" id="66"]
content_margin_left = 6.0
@ -1223,7 +1223,7 @@ expand_margin_right = 2.0
expand_margin_bottom = 2.0
region_rect = Rect2(0, 0, 16, 16)
[sub_resource type="Image" id="Image_jc3ub"]
[sub_resource type="Image" id="Image_yq8x5"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAADf39+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAA4ODg/9/f34gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAODg4P/g4OD/39/fiAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAADg4OD/4ODg/+Dg4P/f39+IAAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
"format": "RGBA8",
@ -1233,9 +1233,9 @@ data = {
}
[sub_resource type="ImageTexture" id="425"]
image = SubResource("Image_jc3ub")
image = SubResource("Image_yq8x5")
[sub_resource type="Image" id="Image_un5by"]
[sub_resource type="Image" id="Image_osx3u"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MXg/+D/4P/g/+D/4P/gwwAAAAAAAAAAAAAAAAAAAADg/+D/4P/g/+D/4P/g/+D/AAAAAAAAAAAAAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P/hPAAAAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/gwwAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAOD/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P8AAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/wAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAOD/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P8AAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/wAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAODD4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/38IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"format": "LumAlpha8",
@ -1245,9 +1245,9 @@ data = {
}
[sub_resource type="ImageTexture" id="427"]
image = SubResource("Image_un5by")
image = SubResource("Image_osx3u")
[sub_resource type="Image" id="Image_dcqu5"]
[sub_resource type="Image" id="Image_e358d"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3hfgz+DO3hcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3Bbh0uD+4P7g1+AZAAAAAAAAAAAAAAAAAAAAAAAA3Bbh0uD+4P7g/uD+4NfgGQAAAAAAAAAAAAAAAAAA3hfg1OD+4NHg/uD94dLg/uDU3hcAAAAAAAAAAAAAAADgzeD+4NDcFuD+4P3bFeDR4P7gzAAAAAAAAAAAAAAAAOC+4MXZFP8B4P7g/QAA2xXhyeDFAAAAAAAAAAAAAAAAAAAAAAAA/wHg/uD9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AeD+4P0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MThwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"format": "LumAlpha8",
@ -1257,9 +1257,9 @@ data = {
}
[sub_resource type="ImageTexture" id="429"]
image = SubResource("Image_dcqu5")
image = SubResource("Image_e358d")
[sub_resource type="Image" id="Image_65nnb"]
[sub_resource type="Image" id="Image_sc2ny"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbB99u4Mfg8+Dz4MfebdsHAAAAAAAAAAAAAAAAAADjG+DP4P7g/uD+4P7g/uD+4M7jGwAAAAAAAAAAAADbB+DP4P7g4eBT2A3YDd9Q4Nfg/uDO2wcAAAAAAAAAAN9u4P7g4eMSAAAAAAAAAADhEeDh4P7ebAAAAAAAAAAA4Mjg/uBTAAAAAAAAAAAAAAAA3lXg/uDGAAAAAAAAAADg8uD+2A0AAAAAAAAAAAAAAADbDuD+4PEAAAAA4J7g/uD+4P7g/uCeAAAAAAAAAAAAAN0P4P7g8QAAAADoC+DU4P7g/uDU6AsAAAAAAAAAAAAA3lbg/uDGAAAAAAAA4Svg8+Dz4SsAAAAAAAAAAAAA5BPh4uD+3mwAAAAAAAAAAN9g32AAAAAAAAAAANsO3lbh4uD+4M7VBgAAAAAAAAAAAAAAAAAAAAAAAAAA4P7g/uD+4M7jGwAAAAAAAAAAAAAAAAAAAAAAAAAAAADg8uDF3mzVBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"format": "LumAlpha8",
@ -1269,9 +1269,9 @@ data = {
}
[sub_resource type="ImageTexture" id="431"]
image = SubResource("Image_65nnb")
image = SubResource("Image_sc2ny")
[sub_resource type="Image" id="Image_gyvu3"]
[sub_resource type="Image" id="Image_f4p5c"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA39/fCN7e3mzg4ODF4ODg9ODg4PPg4ODF3t7ebePj4wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3t7eLuDg4Njg4OD+4ODg/uDg4P7g4OD+4ODg/uDg4P7h4eHa4ODgMgAAAAAAAAAAAAAAAAAAAAAAAAAA3t7eL+Dg4PDg4OD+4ODg4eDg4FPY2NgN2NjYDd/f31Dg4ODX4ODg/uDg4PLh4eEzAAAAAAAAAAAAAAAA4+PjCeDg4Nzg4OD+4ODg4ePj4xIAAAAAAAAAAAAAAAAAAAAA4eHhEeDg4OHg4OD+4ODg3+bm5goAAAAAAAAAAN/f33fg4OD+4ODg/uDg4FMAAAAA4ODgS+Dg4OPh4eHi4ODgSQAAAADe3t5V4ODg/uDg4P7f3995AAAAAAAAAADh4eHa4ODg/uDg4P7Y2NgNAAAAAOHh4eLg4OD+4ODg/uDg4OEAAAAA29vbDuDg4P7g4OD+4eHh2gAAAAAAAAAA4ODg2+Dg4P7g4OD+2NjYDQAAAADh4eHi4ODg/uDg4P7g4ODhAAAAAN3d3Q/g4OD+4ODg/uDg4NsAAAAAAAAAAN7e3nzg4OD+4ODg/t/f31AAAAAA4ODgSeHh4eLg4ODh39/fSAAAAADe3t5W4ODg/uDg4P7g4OB7AAAAAAAAAADV1dUM4ODg4+Dg4P7g4ODX4eHhEQAAAAAAAAAAAAAAAAAAAADk5OQT4eHh4uDg4P7g4ODh1dXVDAAAAAAAAAAAAAAAAN/f3zjg4OD04ODg/uDg4OHe3t5V29vbDtvb2w7e3t5W4eHh4uDg4P7g4OD03t7eNgAAAAAAAAAAAAAAAAAAAAAAAAAA39/fN+Dg4N7g4OD+4ODg/uDg4P7g4OD+4ODg/uDg4P7g4ODd3t7eNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5uYK39/fcODg4MXg4ODz4ODg8+Dg4MXf399u5ubmCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
"format": "RGBA8",
@ -1281,7 +1281,7 @@ data = {
}
[sub_resource type="ImageTexture" id="433"]
image = SubResource("Image_gyvu3")
image = SubResource("Image_f4p5c")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_g6bu4"]
texture = ExtResource("1_ak8qr")
@ -1377,7 +1377,7 @@ bg_color = Color(0.490196, 0.490196, 0.490196, 1)
corner_detail = 1
anti_aliasing = false
[sub_resource type="Image" id="Image_el5uk"]
[sub_resource type="Image" id="Image_4no34"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN9Y3BYAAAAAAAAAAAAAAADcFt9YAAAAAAAAAAAAAN9Y4P7g09wWAAAAAAAAAADcFuDT4P7fWAAAAAAAAAAA2xXf0uD/4NfgGQAAAADbFd/S4P/g198YAAAAAAAAAAAAANsV39Lg/+DX4BnbFd/S4P/g198YAAAAAAAAAAAAAAAAAADbFd/S4P/h2uDW4P/g198YAAAAAAAAAAAAAAAAAAAAAAAA2xXf1uD/4P/g298YAAAAAAAAAAAAAAAAAAAAAAAAAADbFd/W4P/g/+Db4BkAAAAAAAAAAAAAAAAAAAAAAADbFd/S4P/f2uDW4P/g1+AZAAAAAAAAAAAAAAAAAADbFd/S4P/g198Y2xXf0uD/4NfgGQAAAAAAAAAAAADbFd/S4P/g198YAAAAANsV39Lg/+DX4BkAAAAAAAAAAN9Y4P7g09wWAAAAAAAAAADcFuDT4P7fWAAAAAAAAAAAAADfWNwWAAAAAAAAAAAAAAAA3BbfWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"format": "LumAlpha8",
@ -1387,7 +1387,7 @@ data = {
}
[sub_resource type="ImageTexture" id="49"]
image = SubResource("Image_el5uk")
image = SubResource("Image_4no34")
[sub_resource type="StyleBoxTexture" id="127"]
content_margin_left = 4.0
@ -2208,7 +2208,7 @@ texture_margin_right = 2.0
texture_margin_bottom = 2.0
region_rect = Rect2(72, 64, 8, 8)
[sub_resource type="Image" id="Image_dpyi6"]
[sub_resource type="Image" id="Image_81fer"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc5uqs87c4bPO3OGzztzhs87c4bPO3OGzztzhs3ObqrMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
"format": "RGBA8",
@ -2218,7 +2218,7 @@ data = {
}
[sub_resource type="ImageTexture" id="199"]
image = SubResource("Image_dpyi6")
image = SubResource("Image_81fer")
[sub_resource type="StyleBoxTexture" id="200"]
texture = SubResource("199")
@ -2242,7 +2242,7 @@ texture_margin_right = 2.0
texture_margin_bottom = 2.0
region_rect = Rect2(64, 64, 8, 8)
[sub_resource type="Image" id="Image_hu6ex"]
[sub_resource type="Image" id="Image_o4hso"]
data = {
"data": PackedByteArray("/wD//wD//wD//wD/Z3qFZnqGaHuGaHuGaHuGaHuGZnqGZ3qF/wD//wD//wD//wD//wD//wD/Z3qFZnqGV1FRTEJATUNBTUNBTUNBTUNBTEJAV1FRZnqGZ3qF/wD//wD//wD/Z3qFVkxLTEJATURBTUNBTkRCTkRCTkRCTkRCTUNBTURBTEJAV1FRZ3qF/wD//wD/ZnqGTEJATEJATUNBT0VDT0VDT0VDT0VDT0VDT0VDTUNBTEJATEJAZ3uH/wD/Z3qFV1FRTEJATEJATkRCT0RDUEVEUkZEUkZEUUZFT0RDTkRCTEJATEJAV1FRZ3qFZnqGS0A/TEJATUNBT0RDUUdFUkhGU0hHU0hHUkhGUUdFT0RDTkRCTEJAS0E/Z3uHZ3uHS0E/TEJATUNBT0RDUUdFVElGVUpHVUlHVUpHUkhGUEVETUNBTEJAS0E/aHyIZ3uHSkA+S0E/TUNBT0VDUUdFVElGVUtJVk1LVElGU0lHUEZETkRCTEJAS0E/aHyIZ3uHSkE+S0E/TEJAT0VDUUdFVElGVUtJVUtJVUpHUkhGUEZETkRCTEJASkA+aHyIZ3uHSD48S0I/S0E/TkRCUEVEUUZFU0lHU0lHUkhGUEVETkRCTEJAS0E/ST89aHyIZ3uHRj08SD48SkA+TEJATkRCT0RDUEVEUEVEUEZET0VDTEJAS0A/ST89Rz07Z3uHZ3qFV1FRRz47SUA9S0E/TEJATUNBTkRCTkRCTUNBTEJAS0E/ST89Rz07V1FRaHuG/wD/Z3uHRj08Rz07SD48ST89SkA+S0E/S0E/S0A/SkA+SD48Rz47Rz07Z3uH/wD//wD/Z3qFV1FRRTw7Rz07Rz07Rz07SD48SD48Rz07Rz07Rz47Rj08V1FRZnqG/wD//wD//wD/Z3qFZ3uHV1FRRjw6Rjw6Rz47Rz47Rjw6Rjw6V1FRZ3uHaHuG/wD//wD//wD//wD//wD//wD/ZnqGZ3uHaHyIaHyIaHyIaHyIZ3uHaHuG/wD//wD//wD//wD/"),
"format": "RGB8",
@ -2252,7 +2252,7 @@ data = {
}
[sub_resource type="ImageTexture" id="204"]
image = SubResource("Image_hu6ex")
image = SubResource("Image_o4hso")
[sub_resource type="StyleBoxTexture" id="205"]
texture = SubResource("204")
@ -2365,7 +2365,7 @@ axis_stretch_horizontal = 2
axis_stretch_vertical = 2
region_rect = Rect2(80, 0, 16, 8)
[sub_resource type="Image" id="Image_t3urt"]
[sub_resource type="Image" id="Image_1giar"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOFe4PTg/+D/4P/g/+D24WYAAAAAAAAAAAAA3yjf0uD/4P/g1+MtAAAAAAAAAAAAAAAAAADoC+Gf4Z/oCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
"format": "LumAlpha8",
@ -2375,9 +2375,9 @@ data = {
}
[sub_resource type="ImageTexture" id="306"]
image = SubResource("Image_t3urt")
image = SubResource("Image_1giar")
[sub_resource type="Image" id="Image_oinpy"]
[sub_resource type="Image" id="Image_shov6"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4P/g/+D/32AAAAAAAAAAAAAAAAAAAAAA4P/g/+D/4PThKwAAAAAAAAAAAAAAAAAA4P/g/+D/4P/g1egLAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+GfAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+GfAAAAAAAAAAAAAAAA4P/g/+D/4P/g1egLAAAAAAAAAAAAAAAA4P/g/+D/4PThKwAAAAAAAAAAAAAAAAAA4P/g/+D/32AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
"format": "LumAlpha8",
@ -2387,9 +2387,9 @@ data = {
}
[sub_resource type="ImageTexture" id="308"]
image = SubResource("Image_oinpy")
image = SubResource("Image_shov6")
[sub_resource type="Image" id="Image_84q7w"]
[sub_resource type="Image" id="Image_txvms"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAP9Z/xT/FP9ZAAAAAAAA/1n/FP8U/1kAAAAAAAD/Wf8U/xT/WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"format": "LumAlpha8",
@ -2399,9 +2399,9 @@ data = {
}
[sub_resource type="ImageTexture" id="292"]
image = SubResource("Image_84q7w")
image = SubResource("Image_txvms")
[sub_resource type="Image" id="Image_ugbyv"]
[sub_resource type="Image" id="Image_nqxn3"]
data = {
"data": PackedByteArray("FxYabx0cIe8gHiT3IR8l9yEfJfchHyX3IR8l9yAeJPcdHCHvFxYabx0cIfAkIin/KCYt/ygmLv8oJi7/KCYu/ygmLv8oJi3/JCIp/x0cIfAgHiT5KCYt/ysqMf8sKjL/LCoy/ywqMv8sKjL/Kyox/ygmLf8gHiT5IR8l9ygmLv8sKjL/LCoy/ywqMv8sKjL/LCoy/ywqMv8oJi7/IR8l9yEfJfcoJi7/LCoy/ywqMv8sKjL/LCoy/ywqMv8sKjL/KCYu/yEfJfchHyX3KCYu/ywqMv8sKjL/LCoy/ywqMv8sKjL/LCoy/ygmLv8hHyX3IR8l9ygmLv8sKjL/LCoy/ywqMv8sKjL/LCoy/ywqMv8oJi7/IR8l9yAeJPkoJi3/Kyox/ywqMv8sKjL/LCoy/ywqMv8rKjH/KCYt/yAeJPkdHCHwJCIp/ygmLf8oJi7/KCYu/ygmLv8oJi7/KCYt/yQiKf8dHCHxFxYabx0cIfAgHiT3IR8l9yEfJfchHyX3IR8l9yAeJPcdHCHuFxYabw=="),
"format": "RGBA8",
@ -2411,7 +2411,7 @@ data = {
}
[sub_resource type="ImageTexture" id="39"]
image = SubResource("Image_ugbyv")
image = SubResource("Image_nqxn3")
[sub_resource type="StyleBoxTexture" id="272"]
content_margin_left = 0.0
@ -2471,7 +2471,7 @@ axis_stretch_horizontal = 2
axis_stretch_vertical = 2
region_rect = Rect2(24, 40, 8, 8)
[sub_resource type="Image" id="Image_8rm82"]
[sub_resource type="Image" id="Image_7ahc2"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNS1kHTUtZJ01LWVBNS1lmTUtZaE1LWWhNS1loTUtZaE1LWWhNS1loWFZjarCvtYFNS1knTUtZBwAAAAAAAAAATUtZJzg3QLQgICT6Hh4i/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hx8j/4uLjf//////tra53U1LWScAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/0JCR//4+Pj//v7+/1dXWvtNS1lQAAAAAAAAAABNS1lmHh4i/yIiJ/8lJSr/JSUq/05OUv8mJiv/JSUq/yUlKv/Fxcf//////6qqq/8eHiL/TUtZZgAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/7i4uv//////X19j/yUlKv90dHf//////+3t7f8zMzj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv+NjY///////7i4uf81NTn/7e3t//////90dHf/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/Ojo+//v7+//6+vr/srK0///////Fxcf/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv+4uLr///////7+/v/4+Pj/RUVJ/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/YWFl////////////j4+S/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yYmK/9OTlL/Y2Nm/yoqL/8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZZh4eIv8iIif/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8iIif/Hh4i/01LWWYAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPtNS1lQAAAAAAAAAABNS1knODZAtCAgJPseHiL/Hx8j/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hh4i/yAgJfo4NkC0TUtZJwAAAAAAAAAATUtZB01LWSdNS1lQTUtZZk1LWWhNS1loTUtZaE1LWWhNS1loTUtZaE1LWWZNS1lQTUtZJ01LWQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
"format": "RGBA8",
@ -2481,9 +2481,9 @@ data = {
}
[sub_resource type="ImageTexture" id="334"]
image = SubResource("Image_8rm82")
image = SubResource("Image_7ahc2")
[sub_resource type="Image" id="Image_mpaam"]
[sub_resource type="Image" id="Image_n6ur5"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNS1kHTUtZJ01LWVBNS1lmTUtZaE1LWWhNS1loTUtZaE1LWWhNS1loTUtZZk1LWVBNS1knTUtZBwAAAAAAAAAATUtZJzg3QLQgICT6Hh4i/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hx8j/x4eIv8gICT6ODdAtE1LWScAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPpNS1lQAAAAAAAAAABNS1lmHh4i/yIiJ/8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yIiJ/8eHiL/TUtZZgAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZZh4eIv8iIif/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8iIif/Hh4i/01LWWYAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPtNS1lQAAAAAAAAAABNS1knODZAtCAgJPseHiL/Hx8j/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hh4i/yAgJfo4NkC0TUtZJwAAAAAAAAAATUtZB01LWSdNS1lQTUtZZk1LWWhNS1loTUtZaE1LWWhNS1loTUtZaE1LWWZNS1lQTUtZJ01LWQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
"format": "RGBA8",
@ -2493,7 +2493,7 @@ data = {
}
[sub_resource type="ImageTexture" id="336"]
image = SubResource("Image_mpaam")
image = SubResource("Image_n6ur5")
[sub_resource type="AtlasTexture" id="359"]
atlas = ExtResource("1_ak8qr")
@ -2581,7 +2581,7 @@ region = Rect2(96, 96, 16, 16)
atlas = ExtResource("1_ak8qr")
region = Rect2(96, 80, 16, 16)
[sub_resource type="Image" id="Image_flyey"]
[sub_resource type="Image" id="Image_iyjpi"]
data = {
"data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKCgnmNjY15mJiYeYGirQCMrLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOFVfAE5OTjGCgoJ5jY2NeZiYmHlOTk4xTk5OMU5OTjE4VV8AOFVfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhVXwBOTk4cTk5OMU5OTjFOTk4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
"format": "RGBA8",
@ -2591,7 +2591,7 @@ data = {
}
[sub_resource type="ImageTexture" id="111"]
image = SubResource("Image_flyey")
image = SubResource("Image_iyjpi")
[sub_resource type="StyleBoxTexture" id="4"]
content_margin_left = 6.0

View file

@ -1,12 +1,15 @@
extends Control
func _input(event):
if event.is_action_pressed("rekku_hide"):
self.visible = !self.visible
%SplitContainer.split_offset=-300
if Input.is_action_pressed("back_button"):
%SplitContainer.split_offset=0
$".".visible=false
func _input(event):
if event.is_action_released("rekku_hide"):
#self.visible = !self.visible
if class_functions.rekku_state == false:
self.visible = true
class_functions.rekku_state = true
%SplitContainer.split_offset=925
%pop_rtl.visible = false
elif event.is_action_released("rekku_hide") and class_functions.rekku_state == true:
class_functions.rekku_state = false
self.visible = false
%SplitContainer.split_offset=1280

View file

@ -25,7 +25,7 @@ func _about_button_pressed(id: String, button: Button) -> void:
var tmp_txt = button.text
if class_functions.desktop_mode != "gamescope":
class_functions.logger("i","Loading website for " + id)
class_functions.launch_help(button.editor_description)
class_functions.launch_help(button.get_meta("url"))
else:
button.text = "Help only in Desktop Mode"
await class_functions.wait(3.0)
@ -42,8 +42,10 @@ func create_buttons() -> void:
func _setup_button(button: Button, web_data: Link) -> void:
button.text = web_data.name
button.tooltip_text = web_data.description
#button.tooltip_text = web_data.description
button.icon = ResourceLoader.load(web_data.icon)
button.editor_description = web_data.url
#button.editor_description = web_data.url
button.set_meta("url", web_data.url)
button.set_meta("description", web_data.description)
button.icon_alignment = HORIZONTAL_ALIGNMENT_LEFT
button.vertical_icon_alignment = VERTICAL_ALIGNMENT_CENTER

View file

@ -1,7 +1,7 @@
extends TabContainer
var icon_width: int = 32
@onready var tcount: int = get_tab_count()-1
@onready var tcount: int = get_tab_count()-2
func _ready():
focusFirstFocusableChild() #grab focus on first element to enable controller focusing
@ -9,7 +9,24 @@ func _ready():
%TabContainer.add_theme_icon_override("decrement_highlight",ResourceLoader.load("res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0763.png"))
%TabContainer.add_theme_icon_override("increment",ResourceLoader.load("res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0798.png"))
%TabContainer.add_theme_icon_override("increment_highlight",ResourceLoader.load("res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0764.png"))
<<<<<<< HEAD
set_tab_icon(0, ResourceLoader.load("res://assets/icons/pixelitos/128/applications-graphics.png"))
=======
if class_functions.font_select !=3:
%TabContainer.add_theme_font_size_override("font_size", class_functions.font_tab_size)
elif class_functions.font_select == 3:
%TabContainer.add_theme_font_size_override("font_size", 15)
else:
%TabContainer.add_theme_font_size_override("font_size", class_functions.font_tab_size)
set_tab_title(0, " GLOBALS ")
set_tab_title(1, " SYSTEM ")
set_tab_title(2, " TOOLS ")
set_tab_title(3, " SETTINGS ")
set_tab_title(4, " ABOUT ")
set_tab_hidden(5, true)
set_tab_icon(0, ResourceLoader.load("res://assets/icons/pixelitos/128/map-globe.png"))
>>>>>>> be95a1bf935fae24a2ab447f99022a39ae7a896a
set_tab_icon_max_width(0,icon_width)
set_tab_icon(1, ResourceLoader.load("res://assets/icons/pixelitos/128/preferences-system-windows.png"))
set_tab_icon_max_width(1,icon_width)
@ -22,17 +39,27 @@ func _ready():
connect_focus_signals(self)
%volume_effects_slider.value = class_functions.volume_effects
func connect_focus_signals(node):
func connect_focus_signals(node):
for child in node.get_children():
if child is Button:
child.focus_entered.connect(_on_Button_focus_entered.bind(child))
child.focus_exited.connect(_on_Button_focus_exited.bind())
elif child is Control:
connect_focus_signals(child)
func _on_Button_focus_exited():
%pop_rtl.visible = false
func _on_Button_focus_entered(button: Button):
if button and class_functions.sound_effects:
%AudioStreamPlayer2D.volume_db = class_functions.volume_effects
%AudioStreamPlayer2D.play()
if button and class_functions.rekku_state == false and button.has_meta("description"):
%pop_rtl.visible = true
%pop_rtl.text = button.get_meta("description")
else:
%pop_rtl.visible = true
%pop_rtl.text = "Hey, there's no description"
func _input(event):
if (event.is_action_pressed("next_tab")):

View file

@ -1,11 +1,40 @@
extends MarginContainer
var button_swap: Array
func _ready():
_connect_signals()
func _process(delta: float) -> void:
if class_functions.current_button != null:
update_progress(delta, class_functions.current_progress)
func update_progress(delta: float, progress: ProgressBar) -> void:
if class_functions.press_time >= class_functions.PRESS_DURATION:
class_functions._do_complete(class_functions.current_button)
class_functions.is_state_pressed = false
#print ("Progress Bar: %s Button: %s" % [progress.name, current_button.name])
elif class_functions.is_state_pressed and class_functions.current_state == "mixed":
class_functions.press_time += delta
progress.value = class_functions.press_time / class_functions.PRESS_DURATION * 100.0
func _connect_signals():
%quick_resume_button.pressed.connect(class_functions.run_function.bind(%quick_resume_button))
%button_swap_button.pressed.connect(class_functions.run_function.bind(%button_swap_button))
%widescreen_button.pressed.connect(class_functions.run_function.bind(%widescreen_button))
%quick_resume_button.pressed.connect(class_functions.run_function.bind(%quick_resume_button, "quick_resume"))
%button_swap_button.button_down.connect(class_functions._do_action.bind(%button_swap_progress, %button_swap_button, class_functions.abxy_state))
%button_swap_button.button_up.connect(class_functions._on_button_released.bind(%button_swap_progress))
%button_swap_button.pressed.connect(class_functions.run_function.bind(%button_swap_button, "abxy_button_swap"))
%ask_to_exit_button.button_down.connect(class_functions._do_action.bind(%ask_to_exit_progress, %ask_to_exit_button, class_functions.ask_to_exit_state))
%ask_to_exit_button.button_up.connect(class_functions._on_button_released.bind(%ask_to_exit_progress))
%ask_to_exit_button.pressed.connect(class_functions.run_function.bind(%ask_to_exit_button, "ask_to_exit"))
%border_button.button_down.connect(class_functions._do_action.bind(%border_progress, %border_button, class_functions.border_state))
%border_button.button_up.connect(class_functions._on_button_released.bind(%border_progress))
%border_button.pressed.connect(class_functions.run_function.bind(%border_button, "borders"))
%widescreen_button.button_down.connect(class_functions._do_action.bind(%widescreen_progress, %widescreen_button, class_functions.widescreen_state))
%widescreen_button.button_up.connect(class_functions._on_button_released.bind(%widescreen_progress))
%widescreen_button.pressed.connect(class_functions.run_function.bind(%widescreen_button, "widescreen"))
%quick_rewind_button.button_down.connect(class_functions._do_action.bind(%quick_rewind_progress, %quick_rewind_button, class_functions.quick_rewind_state))
%quick_rewind_button.button_up.connect(class_functions._on_button_released.bind(%quick_rewind_progress))
%quick_rewind_button.pressed.connect(class_functions.run_function.bind(%quick_rewind_button, "rewind"))
%reset_retrodeck_button.button_down.connect(class_functions._do_action.bind(%reset_retrodeck_progress, %reset_retrodeck_button, "mixed"))
%reset_retrodeck_button.button_up.connect(class_functions._on_button_released.bind(%reset_retrodeck_progress))
%reset_all_emulators_button.button_down.connect(class_functions._do_action.bind(%reset_all_emulators_progress, %reset_all_emulators_button, "mixed"))
%reset_all_emulators_button.button_up.connect(class_functions._on_button_released.bind(%reset_all_emulators_progress))

View file

@ -1,10 +1,40 @@
extends Control
var ra_url = "https://retroachievements.org/dorequest.php?r=login&u=monkeyx&p=9LJX7**mie*9e4"
var cheevos_token: String
func _ready():
var http_request = HTTPRequest.new()
add_child(http_request)
_connect_signals()
http_request.request_completed.connect(self._on_request_completed)
http_request.request(ra_url)
func _connect_signals() -> void:
%sound_button.pressed.connect(class_functions.run_function.bind(%sound_button))
%update_notification_button.pressed.connect(class_functions.run_function.bind(%update_notification_button))
#%volume_effects_slider.changed.connect(class_functions.slider_function.bind(%volume_effects_slider))
%sound_button.pressed.connect(class_functions.run_function.bind(%sound_button, "sound_effects"))
%update_notification_button.pressed.connect(class_functions.run_function.bind(%update_notification_button, "update_check"))
%volume_effects_slider.drag_ended.connect(class_functions.slider_function.bind(%volume_effects_slider))
#%cheevos_button.pressed.connect(cheevos.bind(%cheevos_button))
%cheevos_button.button_down.connect(class_functions._do_action.bind(%cheevos_progress, %cheevos_button, class_functions.cheevos_state))
%cheevos_button.button_up.connect(class_functions._on_button_released.bind(%cheevos_progress))
%cheevos_button.pressed.connect(class_functions.run_function.bind(%cheevos_button, "cheevos"))
func _on_request_completed(_result, response_code, _headers, body):
var response_text = JSON.parse_string(body.get_string_from_utf8())
print("Response Code: ", response_code)
print("Response Body: ", response_text)
print("Response Token: ", response_text.Token)
#print (_result,_headers)
cheevos_token = response_text.Token
if response_code == 200:
print("Request successful!")
else:
print("Request failed with code: ", response_code)
func cheevos(button: Button):
set_process_input(false)
$"../..".visible=false
await class_functions.run_thread_command(class_functions.wrapper_command,["change_preset_dialog", "cheevos"], false)
set_process_input(true)
$"../..".visible=true
print ("FIN?")

View file

@ -23,6 +23,7 @@ func _process(delta: float) -> void:
func _connect_signals() -> void:
#TODO make for loops for each function linked to button function call
# Change to follow hoe TabGlobals Works
%retroarch_button.pressed.connect(standard_buttons.bind(%retroarch_button,%system_gridcontainer, %action_gridcontainer))
%mame_button.pressed.connect(standard_buttons.bind(%mame_button,%system_gridcontainer, %action_gridcontainer))
%ruffle_button.pressed.connect(standard_buttons.bind(%ruffle_button,%system_gridcontainer, %action_gridcontainer))
@ -45,7 +46,7 @@ func _connect_signals() -> void:
%reset_button.button_up.connect(_on_Button_released.bind(%reset_progress))
%rpcs3_firmware_button.pressed.connect(_do_action.bind(%rpcs3_firmware_button))
%vita3k_firmware_button.pressed.connect(_do_action.bind(%vita3k_firmware_button))
%retroarch_quick_resume_button.pressed.connect(class_functions.run_function.bind(%retroarch_quick_resume_button))
%retroarch_quick_resume_button.pressed.connect(class_functions.run_function.bind(%retroarch_quick_resume_button, "abxy_button_swap"))
func standard_buttons(button: Button, buttons_gridcontainer: GridContainer, hidden_gridcontainer: GridContainer) -> void:
current_system = app_data.emulators[button.text.to_lower()]
@ -84,7 +85,7 @@ func _on_Button_released(progress: ProgressBar) -> void:
progress.value = 0.0
func _do_action(button: Button) -> void:
var tmp_txt = button.text
var original_txt = button.text
match [button.name, current_system.name]:
["help_button", current_system.name]:
if class_functions.desktop_mode != "gamescope":
@ -93,7 +94,7 @@ func _do_action(button: Button) -> void:
else:
button.text = "Help only works in Desktop Mode"
await class_functions.wait(3.0)
button.text = tmp_txt
button.text = original_txt
["launch_button", current_system.name]:
class_functions.logger("i", "Launching " + current_system.name)
var launch = class_functions.execute_command(current_system.launch,[], false)

View file

@ -5,29 +5,33 @@ extends Control
func _ready():
add_child(http_request)
http_request.request_completed.connect(_on_request_completed)
#check_internet_connection()
_connect_signals()
%backup_user_button.text += " - " + class_functions.rdhome + "/backup"
func _connect_signals() -> void:
%check_conn_button.pressed.connect(check_internet_connection)
%backup_user_button.pressed.connect(run_function.bind(%backup_user_button))
%backup_user_button.pressed.connect(run_function.bind(%backup_user_button, "Start User Backup"))
func run_function(button: Button) -> void:
var tmp_txt = button.text
class_functions.logger("d","Start User Backup")
func run_function(button: Button, message: String) -> void:
class_functions.logger("d",message)
match button.name:
"backup_user_button":
_run_backup(button)
func _run_backup(button: Button) -> void:
var original_txt = button.text
%progress_bar_backup.visible = true
%backup_user_button.text = "Backup Running"
button.text = "Backup Running"
var parameters = ["backup_retrodeck_userdata"]
var run_result = await class_functions.run_thread_command(class_functions.wrapper_command, parameters, true)
if run_result["exit_code"] == 0:
%backup_user_button.text = "Backup Complete - " + class_functions.rdhome + "/backup"
button.text = "Backup Complete - " + class_functions.rdhome + "/backup"
class_functions.logger("d","User Backup Completed")
await class_functions.wait(3.0)
%backup_user_button.text = tmp_txt
button.text = original_txt
%progress_bar_backup.visible = false
else:
%backup_user_button.text = "Backup Failed"
button.text = "Backup Failed"
class_functions.logger("e","User Backup Failed. " + run_result["exit_code"])
%progress_bar_backup.visible = false
@ -37,7 +41,6 @@ func check_internet_connection():
http_request.request("https://retrodeck.net/")
func _on_request_completed(_result, response_code, _headers, _body):
#var style_box = StyleBoxFlat.new()
if response_code == 200:
class_functions.logger("i","Internet Connection Succesful")
%check_conn_button.button_pressed = true

View file

@ -3,10 +3,14 @@ class_name ClassFunctions extends Control
extends Control
var log_result: Dictionary
var log_parameters: Array
const globals_sh_file_path: String = "/app/libexec/global.sh"
const wrapper_command: String = "/app/tools/retrodeck_function_wrapper.sh"
const config_file_path = "/var/config/retrodeck/retrodeck.cfg"
const json_file_path = "/var/config/retrodeck/retrodeck.json"
const esde_file_path = "/var/config/ES-DE/settings/es_settings.xml"
var desktop_mode: String = OS.get_environment("XDG_CURRENT_DESKTOP")
var rd_conf: String
var lockfile: String
var rdhome: String
var roms_folder: String
var saves_folder: String
@ -22,8 +26,26 @@ var title: String
var quick_resume_status: bool
var update_check: bool
var abxy_state: String
var ask_to_exit_state: String
var border_state: String
var widescreen_state: String
var quick_rewind_state: String
var cheevos_state: String
var cheevos_hardcore_state: String
var font_select: int
var font_tab_size: int = 35
var font_size: int = 20
var locale: String
enum preset_list {abxy_button_swap, ask_to_exit, borders, widescreen, rewind, cheevos, cheevos_hardcore}
var button_list: Array = ["button_swap_button", "ask_to_exit_button", "border_button", "widescreen_button", "quick_rewind_button", "reset_retrodeck_button", "reset_all_emulators_button", "cheevos_button"]
signal update_global_signal
var rekku_state: bool = false
var press_time: float = 0.0
var is_state_pressed: bool = false
var PRESS_DURATION: float = 3.0
var current_button: Button = null
var current_progress: ProgressBar = null
var current_state: String = ""
func _ready():
read_values_states()
@ -39,16 +61,25 @@ func read_values_states() -> void:
states_folder = config["paths"]["states_folder"]
bios_folder = config["paths"]["bios_folder"]
rd_version = config["version"]
rd_conf = extract_text(globals_sh_file_path, "rd_conf")
lockfile = extract_text(globals_sh_file_path, "lockfile")
locale = extract_text(esde_file_path, "esde")
gc_version = ProjectSettings.get_setting("application/config/version")
title = "\n " + rd_version + "\nConfigurator\n " + gc_version
quick_resume_status = config["quick_resume"]["retroarch"]
update_check = config["options"]["update_check"]
multi_state("abxy_button_swap")
abxy_state = multi_state("abxy_button_swap", abxy_state)
ask_to_exit_state = multi_state("ask_to_exit", ask_to_exit_state)
border_state = multi_state("borders", border_state)
widescreen_state = multi_state("widescreen", widescreen_state)
quick_rewind_state = multi_state("rewind", quick_rewind_state)
sound_effects = config["options"]["sound_effects"]
volume_effects = int(config["options"]["volume_effects"])
font_select = int(config["options"]["font"])
cheevos_state = multi_state("cheevos", cheevos_state)
cheevos_hardcore_state = multi_state("cheevos_hardcore", cheevos_hardcore_state)
func multi_state(section: String) -> void:
func multi_state(section: String, state: String) -> String:
var config_section:Dictionary = data_handler.get_elements_in_section(config_file_path, section)
var true_count: int = 0
var false_count: int = 0
@ -58,11 +89,12 @@ func multi_state(section: String) -> void:
else:
false_count += 1
if true_count == config_section.size():
abxy_state = "true"
state = "true"
elif false_count == config_section.size():
abxy_state = "false"
state = "false"
else:
abxy_state = "mixed"
state = "mixed"
return state
func logger(log_type: String, log_text: String) -> void:
# Type of log messages:
@ -240,61 +272,162 @@ func slider_function(value: float, slide: HSlider) -> void:
volume_effects = int(slide.value)
data_handler.change_cfg_value(config_file_path, "volume_effects", "options", str(slide.value))
func run_function(button: Button) -> void:
func run_function(button: Button, preset: String) -> void:
if button.button_pressed:
enable_global(button)
update_global(button, preset, true)
else:
disable_global(button)
update_global(button, preset, false)
func enable_global(button: Button) -> void:
func update_global(button: Button, preset: String, state: bool) -> void:
#TODO pass state as an object in future version
var result: Array
var config_section:Dictionary = data_handler.get_elements_in_section(config_file_path, "abxy_button_swap")
var config_section:Dictionary = data_handler.get_elements_in_section(config_file_path, preset)
match button.name:
"quick_resume_button", "retroarch_quick_resume_button":
quick_resume_status = true
update_global_signal.emit()
result = data_handler.change_cfg_value(config_file_path, "retroarch", "quick_resume", "true")
change_global(result, "build_preset_config")
quick_resume_status = state
result = data_handler.change_cfg_value(config_file_path, "retroarch", preset, str(state))
change_global(result, "build_preset_config", button, str(quick_resume_status))
"update_notification_button":
result = data_handler.change_cfg_value(config_file_path, "update_check", "options", "true")
change_global(result, "build_preset_config")
update_check = state
result = data_handler.change_cfg_value(config_file_path, preset, "options", str(state))
change_global(result, "build_preset_config", button, str(result))
"sound_button":
sound_effects = true
update_global_signal.emit()
result = data_handler.change_cfg_value(config_file_path, "sound_effects", "options", "true")
logger("i", "Enabled: " % (button.name))
sound_effects = state
result = data_handler.change_cfg_value(config_file_path, preset, "options", str(state))
logger("i", "Enabled: %s" % (button.name))
update_global_signal.emit([button.name])
"button_swap_button":
if abxy_state == "false":
abxy_state = "true"
result = data_handler.change_all_cfg_values(config_file_path, config_section, "abxy_button_swap", "true")
change_global(result, "build_preset_config")
if abxy_state != "mixed":
abxy_state = str(state)
result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))
change_global(result, "build_preset_config", button, abxy_state)
"ask_to_exit_button":
if ask_to_exit_state != "mixed":
ask_to_exit_state = str(state)
result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))
change_global(result, "build_preset_config", button, ask_to_exit_state)
"border_button":
if border_state != "mixed":
border_state = str(state)
result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))
change_global(result, "build_preset_config", button, border_state)
if widescreen_state == "true" or widescreen_state == "mixed":
config_section = data_handler.get_elements_in_section(config_file_path, "widescreen")
widescreen_state = "false"
result = data_handler.change_all_cfg_values(config_file_path, config_section, "widescreen", widescreen_state)
change_global(result, "build_preset_config", button, widescreen_state)
"widescreen_button":
if widescreen_state != "mixed":
widescreen_state = str(state)
result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))
change_global(result, "build_preset_config", button, widescreen_state)
if border_state == "true" or border_state == "mixed":
config_section = data_handler.get_elements_in_section(config_file_path, "borders")
border_state = "false"
result = data_handler.change_all_cfg_values(config_file_path, config_section, "borders", border_state)
change_global(result, "build_preset_config", button, border_state)
"quick_rewind_button":
if quick_rewind_state != "mixed":
quick_rewind_state = str(state)
result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))
change_global(result, "build_preset_config", button, quick_rewind_state)
"cheevos_button":
if cheevos_state != "mixed":
cheevos_state = str(state)
result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))
change_global(result, "build_preset_config", button, quick_rewind_state)
func change_global(parameters: Array, preset: String, button: Button, state: String) -> void:
#print (parameters)
match parameters[1]:
preset_list:
for system in parameters[0].keys():
var command_parameter: Array = [preset, system, parameters[1]]
logger("d", "Change Global: %s System: %s Preset %s " % command_parameter)
var result: Dictionary = await run_thread_command(wrapper_command, command_parameter, false)
logger("d", "Exit code: %s" % result["exit_code"])
_:
var command_parameter: Array = [preset, parameters]
logger("d", "Change Global: %s System: %s" % command_parameter)
var result: Dictionary = await run_thread_command(wrapper_command, command_parameter, false)
logger("d", "Exit code: %s" % result["exit_code"])
parameters.append(button)
parameters.append(state)
update_global_signal.emit(parameters)
func disable_global(button: Button) -> void:
var result: Array
var config_section:Dictionary = data_handler.get_elements_in_section(config_file_path, "abxy_button_swap")
match button.name:
"quick_resume_button", "retroarch_quick_resume_button":
quick_resume_status = false
update_global_signal.emit()
result = data_handler.change_cfg_value(config_file_path, "retroarch", "quick_resume", "false")
change_global(result, "build_preset_config")
"update_notification_button":
result = data_handler.change_cfg_value(config_file_path, "update_check", "options", "false")
change_global(result, "build_preset_config")
"sound_button":
sound_effects = false
update_global_signal.emit()
result = data_handler.change_cfg_value(config_file_path, "sound_effects", "options", "false")
logger("i", "Disabled: " % (button.name))
"button_swap_button":
if abxy_state == "true":
abxy_state = "false"
result = data_handler.change_all_cfg_values(config_file_path, config_section, "abxy_button_swap", "false")
change_global(result, "build_preset_config")
func extract_text(file_path: String, extract: String) -> String:
var file = FileAccess.open(file_path, FileAccess.ModeFlags.READ)
var pattern: String
if file:
var regex = RegEx.new()
if extract != "esde":
pattern = extract + '="([^"]+)"'
else:
pattern = '<string name="ApplicationLanguage" value="([^"]+)" />'
regex.compile(pattern)
while not file.eof_reached():
var line: String = file.get_line().strip_edges()
var result: RegExMatch = regex.search(line)
if result:
return result.get_string(1)
file.close()
else:
logger("e", "Could not open file: %s" % file_path)
return ""
func change_global(parameters: Array, preset: String) -> void:
for system in parameters[0].keys():
var command_parameter: Array = [preset, system, parameters[1]]
logger("d", "Change Global: %s System: %s Preset %s " % command_parameter)
var result: Dictionary = await run_thread_command(wrapper_command, command_parameter, false)
logger("d", "Exit code: %s" % result["exit_code"])
func _on_button_released(progress: ProgressBar) -> void:
is_state_pressed = false
progress.visible = false
press_time = 0.0
progress.value = 0.0
current_button = null
current_progress = null
current_state == null
func _do_action(progress: ProgressBar, button: Button, state: String) -> void:
match [class_functions.button_list]:
[class_functions.button_list]:
current_state = state
current_button = button
current_progress = progress
current_progress.visible = true
is_state_pressed = true
func _do_complete(button: Button) ->void:
#TODO use object for state
if is_state_pressed and button == current_button:
match button.name:
"button_swap_button":
class_functions.abxy_state = "false"
"ask_to_exit_button":
class_functions.ask_to_exit_state = "false"
"border_button":
class_functions.border_state = "false"
"widescreen_button":
class_functions.widescreen_state = "false"
"quick_rewind_button":
class_functions.quick_rewind_state = "false"
"cheevos_button":
class_functions.cheevos_state = "false"
"cheevos_hardcore_button":
class_functions.cheevos_hardcore_state = "false"
"reset_retrodeck_button":
var dir = DirAccess.open(class_functions.rd_conf.get_base_dir())
if dir is DirAccess:
dir.rename(class_functions.rd_conf,class_functions.rd_conf.get_base_dir() + "/retrodeck.bak")
dir.remove(class_functions.lockfile)
class_functions.change_global(["reset", "retrodeck"], "prepare_component", button, "")
button.text = "RESETTING-NOW"
await class_functions.wait(2.0)
button.text = "CONFIGURATOR WILL NOW CLOSE"
await class_functions.wait(1.0)
get_tree().quit()
"reset_all_emulators_button":
var tmp_txt = button.text
button.text = "RESETTING-NOW"
class_functions.change_global(["reset", "all"], "prepare_component", button, "")
await class_functions.wait(2.0)
button.text = "RESET COMPLETED"
await class_functions.wait(3.0)
button.text = tmp_txt
button.toggle_mode = true

View file

@ -34,6 +34,12 @@ func load_base_data() -> AppData:
var emulator = Emulator.new()
emulator.name = emulator_data["name"]
emulator.description = emulator_data["description"]
<<<<<<< HEAD
=======
#emulator.url = emulator_data["url"]
#emulator.system = emulator_data["system"]
emulator.launch = emulator_data["launch"]
>>>>>>> be95a1bf935fae24a2ab447f99022a39ae7a896a
if emulator_data.has("properties"):
for property_data in emulator_data["properties"]:
print (emulator,"----",property_data)
@ -158,7 +164,6 @@ func save_base_data(app_dict: AppData): # was apP_data but gave warning
file = FileAccess.open(data_file_path, FileAccess.WRITE)
file.store_string(json_text)
file.close()
print("Data appended successfully")
# Function to modify an existing link
func modify_link(key: String, new_name: String, new_url: String, new_description: String):
@ -293,21 +298,23 @@ func read_cfg_file(file_path: String) -> Array:
func write_cfg_file(file_path: String, lines: Array, changes: Dictionary) -> void:
var file: FileAccess = FileAccess.open(file_path, FileAccess.ModeFlags.WRITE)
var current_section: String = ""
for line in lines:
var line_count: int = lines.size()
for i in line_count:
var line: String = lines[i]
var trimmed_line: String = line.strip_edges()
if trimmed_line.begins_with("[") and trimmed_line.ends_with("]"):
current_section = trimmed_line.trim_prefix("[").trim_suffix("]")
current_section = trimmed_line.trim_prefix("[").trim_suffix("]")# trimmed_line.trim_prefix("["].trim_suffix("]")
file.store_line(line)
elif "=" in trimmed_line and current_section in changes:
var parts: Array = trimmed_line.split("=", false)
if parts.size() >= 2:
if parts.size() == 2:
var key: String = parts[0].strip_edges()
var original_value: String = parts[1].strip_edges()
if key in changes[current_section]:
var new_value: String = changes[current_section][key]
if new_value != original_value:
file.store_line(key + "=" + new_value)
class_functions.logger("i", "Changed %s %s from Value: %s to Value: %s" % [key, current_section, original_value, new_value])
file.store_line("%s=%s" % [key, new_value])
class_functions.logger("i", "Changed %s in section [%s] from %s to %s" % [key, current_section, original_value, new_value])
else:
file.store_line(line)
else:
@ -316,17 +323,16 @@ func write_cfg_file(file_path: String, lines: Array, changes: Dictionary) -> voi
file.store_line(line)
else:
file.store_line(line)
if i == line_count - 2:
break
file.close()
func change_cfg_value(file_path: String, system: String, section: String, new_value: String) -> Array:
var lines: Array = read_cfg_file(file_path)
var parameters: Array =[system, section]
var changes: Dictionary = {}
if section in changes:
changes[section][system] = new_value
else:
changes[section] = {system: new_value}
class_functions.logger("i", "Change: System: %s Section %s New Value: %s" % [system, section, new_value])
changes[section] = {system: new_value}
class_functions.logger("i", "Change: System: %s Section %s New Value: %s" % [system, section, new_value])
write_cfg_file(file_path, lines, changes)
return parameters

View file

@ -10,5 +10,4 @@ func _on_focus_changed(selected_element:Control) -> void:
if selected_element != null and selected_element.has_meta("description"):
helper_text_node.text = selected_element.get_meta("description")
else:
#helper_text_node.text = "Hey, there's no description"
helper_text_node.text = "That stupid Monkey almost deleted me.\n\n\nPlease save me!!!!!!!!"
helper_text_node.text = "Hey, there's no description"

View file

@ -14,13 +14,18 @@ var a_button_texture: Texture2D = load("res://assets/icons/kenney_input-prompts-
var b_button_texture: Texture2D = load("res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0043.png")
var l1_button_texture: Texture2D = load("res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0797.png")
var r1_button_texture: Texture2D = load("res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0798.png")
var style_box_original: StyleBox = preload("res://assets/themes/default_theme.tres::StyleBoxFlat_0ahfc")
var font_size: int = 20
func _ready():
_get_nodes()
_connect_signals()
_play_main_animations()
_set_up_globals()
%locale_option.selected = class_functions.map_locale_id(OS.get_locale_language())
_set_up_globals([])
custom_theme = get_tree().current_scene.custom_theme
$".".theme = custom_theme
if class_functions.locale == "automatic":
%locale_option.selected = class_functions.map_locale_id(OS.get_locale_language())
%rd_title.text += class_functions.title
class_functions.logger("i","Started Godot configurator")
#class_functions.display_json_data()
@ -82,15 +87,15 @@ func _load_log(index: int) -> void:
1:
class_functions.logger("i","Loading RetroDeck log")
log_content = class_functions.import_text_file(class_functions.rd_log_folder +"/retrodeck.log")
load_popup("RetroDeck Log", "res://components/logs_view/logs_popup_content.tscn", log_content)
load_popup("RetroDeck Log", "res://components/popup.tscn", log_content)
2:
class_functions.logger("i","Loading ES-DE log")
log_content = class_functions.import_text_file(class_functions.rd_log_folder +"/ES-DE/es_log.txt")
load_popup("ES-DE Log", "res://components/logs_view/logs_popup_content.tscn",log_content)
load_popup("ES-DE Log", "res://components/popup.tscn",log_content)
3:
class_functions.logger("i","Loading RetroArch log")
log_content = class_functions.import_text_file(class_functions.rd_log_folder +"/retroarch/logs/log.txt")
load_popup("Retroarch Log", "res://components/logs_view/logs_popup_content.tscn",log_content)
load_popup("Retroarch Log", "res://components/popup.tscn",log_content)
func _play_main_animations() -> void:
anim_logo.play()
@ -196,47 +201,71 @@ func _on_exit_button_pressed():
#$Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/data_mng_container/saves_sync.text = tr("TK_SAVESSYNC") + " " + tr("TK_SOON")
#$Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container/easter_eggs.text = tr("TK_EASTEREGGS") + " " + tr("TK_SOON")
func _set_up_globals() -> void:
func _set_up_globals(state: Array) -> void:
#TODO on initial run pass array date?
#print (state)
%update_notification_button.button_pressed = class_functions.update_check
var quick_resume = class_functions.quick_resume_status
%quick_resume_button.button_pressed = quick_resume
%retroarch_quick_resume_button.button_pressed = quick_resume
var sound_effects = class_functions.sound_effects
%sound_button.button_pressed = sound_effects
%volume_effects_slider.visible = sound_effects
match class_functions.abxy_state:
"true":
%button_swap_button.button_pressed = true
"false":
%button_swap_button.button_pressed = false
_:
var style_box = StyleBoxFlat.new()
style_box.bg_color = Color(1, 0.54902, 0, 1) # Orange color
style_box.border_color = Color(0.102, 0.624, 1, 1) # Blue border
style_box.border_blend = true
style_box.corner_radius_top_left = 25
style_box.corner_radius_top_right = 25
style_box.corner_radius_bottom_right = 25
style_box.corner_radius_bottom_left = 25
style_box.border_width_left = 15
style_box.border_width_top = 15
style_box.border_width_right = 15
style_box.border_width_bottom = 15
%button_swap_button.add_theme_stylebox_override("normal", style_box)
%button_swap_button.toggle_mode = false
%quick_resume_button.button_pressed = class_functions.quick_resume_status
%retroarch_quick_resume_button.button_pressed = class_functions.quick_resume_status
%sound_button.button_pressed = class_functions.sound_effects
%volume_effects_slider.visible = class_functions.sound_effects
mixed_mode(%button_swap_button, class_functions.abxy_state)
mixed_mode(%ask_to_exit_button, class_functions.ask_to_exit_state)
mixed_mode(%border_button, class_functions.border_state)
mixed_mode(%widescreen_button, class_functions.widescreen_state)
mixed_mode(%quick_rewind_button, class_functions.quick_rewind_state)
mixed_mode(%cheevos_button, class_functions.cheevos_state)
if class_functions.cheevos_state == "true":
%cheevos_login_container.visible = true
else:
%cheevos_login_container.visible = false
func mixed_mode (button: Button, state: String) -> void:
match [class_functions.button_list]:
[class_functions.button_list]:
if state == "true":
button.button_pressed = true
button.add_theme_stylebox_override("normal", style_box_original)
elif state == "false":
button.button_pressed = false
button.add_theme_stylebox_override("normal", style_box_original)
elif state == "mixed":
mixed_status(button)
func mixed_status (button: Button) -> void:
button.button_pressed = false
button.toggle_mode = false
var style_box = StyleBoxFlat.new()
style_box.bg_color = Color(0.941, 0.502, 0, 1)
style_box.border_color = Color(0.102, 0.624, 1, 1)
style_box.border_blend = true
style_box.corner_radius_top_left = 25
style_box.corner_radius_top_right = 25
style_box.corner_radius_bottom_right = 25
style_box.corner_radius_bottom_left = 25
style_box.border_width_left = 15
style_box.border_width_top = 15
style_box.border_width_right = 15
style_box.border_width_bottom = 15
button.add_theme_stylebox_override("normal", style_box)
func change_font(index: int) -> void:
var font_file: FontFile
match index:
1:
font_file = load("res://res/pixel_ui_theme/pixel-sans.otf")
2:
font_file = load("res://assets/fonts/munro/munro.ttf")
3:
%TabContainer.add_theme_font_size_override("font_size", class_functions.font_tab_size)
font_size = 30
2:
font_file = load("res://assets/fonts/akrobat/Akrobat-Regular.otf")
4:
font_file = load("res://assets/fonts/OpenDyslexic3/OpenDyslexic3-Regular.ttf")
%TabContainer.add_theme_font_size_override("font_size", class_functions.font_tab_size)
font_size = 25
3:
font_file = load("res://assets/fonts/OpenDyslexic3/OpenDyslexic3-Regular.ttf")
%TabContainer.add_theme_font_size_override("font_size", 15)
font_size = 16
custom_theme = load("res://assets/themes/default_theme.tres")
custom_theme.set_font("font", "Control", font_file)
custom_theme.default_font_size = font_size
$".".theme = custom_theme
data_handler.change_cfg_value(class_functions.config_file_path, "font", "options", str(index))