├── bin ├── .gdignore ├── Before Android export.md └── after_export.cmd ├── android ├── .build_version └── plugins │ ├── GodotFilePicker.gdap │ ├── GodotFilePicker.release.aar │ ├── GodotFileSharing.release.aar │ └── GodotFileSharing.gdap ├── version.gd ├── assets ├── icon-source.txt ├── themes │ ├── dark │ │ ├── import_icons.cmd │ │ ├── column_tear.png │ │ ├── add.svg │ │ ├── delete.svg │ │ ├── open_folder.svg │ │ ├── open_file.svg │ │ ├── radio_uncheck.svg │ │ ├── radio_check.svg │ │ ├── download.svg │ │ ├── unchecked_box.svg │ │ ├── link.svg │ │ ├── checked_box.svg │ │ ├── more.svg │ │ ├── delte.png.import │ │ ├── add.svg.import │ │ ├── link.svg.import │ │ ├── more.svg.import │ │ ├── share.svg.import │ │ ├── delete.svg.import │ │ ├── download.svg.import │ │ ├── open_file.svg.import │ │ ├── checked_box.svg.import │ │ ├── column_tear.png.import │ │ ├── open_folder.svg.import │ │ ├── radio_check.svg.import │ │ ├── radio_uncheck.svg.import │ │ ├── unchecked_box.svg.import │ │ └── share.svg │ ├── white │ │ ├── import_icons.cmd │ │ ├── column_tear.png │ │ ├── add.svg │ │ ├── delete.svg │ │ ├── open_folder.svg │ │ ├── open_file.svg │ │ ├── radio_uncheck.svg │ │ ├── radio_check.svg │ │ ├── download.svg │ │ ├── unchecked_box.svg │ │ ├── link.svg │ │ ├── checked_box.svg │ │ ├── more.svg │ │ ├── add.svg.import │ │ ├── link.svg.import │ │ ├── more.svg.import │ │ ├── delete.svg.import │ │ ├── share.svg.import │ │ ├── download.svg.import │ │ ├── open_file.svg.import │ │ ├── checked_box.svg.import │ │ ├── column_tear.png.import │ │ ├── open_folder.svg.import │ │ ├── radio_check.svg.import │ │ ├── radio_uncheck.svg.import │ │ ├── unchecked_box.svg.import │ │ └── share.svg │ └── svg_import.py ├── drum.png ├── mask.png ├── piano.png ├── guitar.png ├── trumpet.png ├── icon │ ├── icon.ico │ ├── icon.png │ ├── android │ │ ├── background.png │ │ ├── foreground.png │ │ ├── background.png.import │ │ └── foreground.png.import │ ├── musicdj itch image.psd │ └── icon.png.import ├── tutorial │ ├── follow.jpg │ ├── column-btn.webm │ ├── drag-file.webm │ ├── hold-tile.webm │ ├── right-click-tile.webm │ └── follow.jpg.import ├── fonts │ └── GidoleFont │ │ ├── Gidole-Regular.ttf │ │ ├── Gidolinya-Regular.otf │ │ └── Readme+Characters.pdf ├── mask.png.import ├── drum.png.import ├── piano.png.import ├── guitar.png.import └── trumpet.png.import ├── icon.png ├── sounds ├── 0 │ ├── 1.ogg │ ├── 2.ogg │ ├── 3.ogg │ ├── 4.ogg │ ├── 5.ogg │ ├── 6.ogg │ ├── 7.ogg │ ├── 8.ogg │ ├── 9.ogg │ ├── 10.ogg │ ├── 11.ogg │ ├── 12.ogg │ ├── 13.ogg │ ├── 14.ogg │ ├── 15.ogg │ ├── 16.ogg │ ├── 17.ogg │ ├── 18.ogg │ ├── 19.ogg │ ├── 20.ogg │ ├── 21.ogg │ ├── 22.ogg │ ├── 23.ogg │ ├── 24.ogg │ ├── 25.ogg │ ├── 26.ogg │ ├── 27.ogg │ ├── 28.ogg │ ├── 29.ogg │ ├── 30.ogg │ ├── 31.ogg │ ├── 32.ogg │ ├── 1.ogg.import │ ├── 2.ogg.import │ ├── 3.ogg.import │ ├── 4.ogg.import │ ├── 5.ogg.import │ ├── 6.ogg.import │ ├── 7.ogg.import │ ├── 8.ogg.import │ ├── 9.ogg.import │ ├── 10.ogg.import │ ├── 11.ogg.import │ ├── 12.ogg.import │ ├── 13.ogg.import │ ├── 14.ogg.import │ ├── 15.ogg.import │ ├── 16.ogg.import │ ├── 17.ogg.import │ ├── 18.ogg.import │ ├── 19.ogg.import │ ├── 20.ogg.import │ ├── 21.ogg.import │ ├── 22.ogg.import │ ├── 23.ogg.import │ ├── 24.ogg.import │ ├── 25.ogg.import │ ├── 26.ogg.import │ ├── 27.ogg.import │ ├── 28.ogg.import │ ├── 29.ogg.import │ ├── 30.ogg.import │ ├── 31.ogg.import │ └── 32.ogg.import ├── 1 │ ├── 1.ogg │ ├── 2.ogg │ ├── 3.ogg │ ├── 4.ogg │ ├── 5.ogg │ ├── 6.ogg │ ├── 7.ogg │ ├── 8.ogg │ ├── 9.ogg │ ├── 10.ogg │ ├── 11.ogg │ ├── 12.ogg │ ├── 13.ogg │ ├── 14.ogg │ ├── 15.ogg │ ├── 16.ogg │ ├── 17.ogg │ ├── 18.ogg │ ├── 19.ogg │ ├── 20.ogg │ ├── 21.ogg │ ├── 22.ogg │ ├── 23.ogg │ ├── 24.ogg │ ├── 25.ogg │ ├── 26.ogg │ ├── 27.ogg │ ├── 28.ogg │ ├── 29.ogg │ ├── 30.ogg │ ├── 31.ogg │ ├── 32.ogg │ ├── 1.ogg.import │ ├── 2.ogg.import │ ├── 3.ogg.import │ ├── 4.ogg.import │ ├── 5.ogg.import │ ├── 6.ogg.import │ ├── 7.ogg.import │ ├── 8.ogg.import │ ├── 9.ogg.import │ ├── 10.ogg.import │ ├── 11.ogg.import │ ├── 12.ogg.import │ ├── 13.ogg.import │ ├── 14.ogg.import │ ├── 15.ogg.import │ ├── 16.ogg.import │ ├── 17.ogg.import │ ├── 18.ogg.import │ ├── 19.ogg.import │ ├── 20.ogg.import │ ├── 21.ogg.import │ ├── 22.ogg.import │ ├── 23.ogg.import │ ├── 24.ogg.import │ ├── 25.ogg.import │ ├── 26.ogg.import │ ├── 27.ogg.import │ ├── 28.ogg.import │ ├── 29.ogg.import │ ├── 30.ogg.import │ ├── 31.ogg.import │ └── 32.ogg.import ├── 2 │ ├── 1.ogg │ ├── 2.ogg │ ├── 3.ogg │ ├── 4.ogg │ ├── 5.ogg │ ├── 6.ogg │ ├── 7.ogg │ ├── 8.ogg │ ├── 9.ogg │ ├── 10.ogg │ ├── 11.ogg │ ├── 12.ogg │ ├── 13.ogg │ ├── 14.ogg │ ├── 15.ogg │ ├── 16.ogg │ ├── 17.ogg │ ├── 18.ogg │ ├── 19.ogg │ ├── 20.ogg │ ├── 21.ogg │ ├── 22.ogg │ ├── 23.ogg │ ├── 24.ogg │ ├── 25.ogg │ ├── 26.ogg │ ├── 27.ogg │ ├── 28.ogg │ ├── 29.ogg │ ├── 30.ogg │ ├── 31.ogg │ ├── 32.ogg │ ├── 1.ogg.import │ ├── 2.ogg.import │ ├── 3.ogg.import │ ├── 4.ogg.import │ ├── 5.ogg.import │ ├── 6.ogg.import │ ├── 7.ogg.import │ ├── 8.ogg.import │ ├── 9.ogg.import │ ├── 10.ogg.import │ ├── 11.ogg.import │ ├── 12.ogg.import │ ├── 13.ogg.import │ ├── 14.ogg.import │ ├── 15.ogg.import │ ├── 16.ogg.import │ ├── 17.ogg.import │ ├── 18.ogg.import │ ├── 19.ogg.import │ ├── 20.ogg.import │ ├── 21.ogg.import │ ├── 22.ogg.import │ ├── 23.ogg.import │ ├── 24.ogg.import │ ├── 25.ogg.import │ ├── 26.ogg.import │ ├── 27.ogg.import │ ├── 28.ogg.import │ ├── 29.ogg.import │ ├── 30.ogg.import │ ├── 31.ogg.import │ └── 32.ogg.import └── 3 │ ├── 1.ogg │ ├── 2.ogg │ ├── 3.ogg │ ├── 4.ogg │ ├── 5.ogg │ ├── 6.ogg │ ├── 7.ogg │ ├── 8.ogg │ ├── 9.ogg │ ├── 10.ogg │ ├── 11.ogg │ ├── 12.ogg │ ├── 13.ogg │ ├── 14.ogg │ ├── 15.ogg │ ├── 16.ogg │ ├── 17.ogg │ ├── 18.ogg │ ├── 19.ogg │ ├── 20.ogg │ ├── 21.ogg │ ├── 22.ogg │ ├── 23.ogg │ ├── 24.ogg │ ├── 25.ogg │ ├── 26.ogg │ ├── 27.ogg │ ├── 28.ogg │ ├── 29.ogg │ ├── 30.ogg │ ├── 31.ogg │ ├── 32.ogg │ ├── 1.ogg.import │ ├── 2.ogg.import │ ├── 3.ogg.import │ ├── 4.ogg.import │ ├── 5.ogg.import │ ├── 6.ogg.import │ ├── 7.ogg.import │ ├── 8.ogg.import │ ├── 9.ogg.import │ ├── 10.ogg.import │ ├── 11.ogg.import │ ├── 12.ogg.import │ ├── 13.ogg.import │ ├── 14.ogg.import │ ├── 15.ogg.import │ ├── 16.ogg.import │ ├── 17.ogg.import │ ├── 18.ogg.import │ ├── 19.ogg.import │ ├── 20.ogg.import │ ├── 21.ogg.import │ ├── 22.ogg.import │ ├── 23.ogg.import │ ├── 24.ogg.import │ ├── 25.ogg.import │ ├── 26.ogg.import │ ├── 27.ogg.import │ ├── 28.ogg.import │ ├── 29.ogg.import │ ├── 30.ogg.import │ ├── 31.ogg.import │ └── 32.ogg.import ├── addons ├── Todo_Manager │ ├── plugin.cfg │ ├── todo_class.gd │ ├── todoItem_class.gd │ ├── ColourPicker.gd │ ├── Pattern.gd │ ├── todo.cfg │ ├── UI │ │ ├── ColourPicker.tscn │ │ └── Pattern.tscn │ ├── Current.gd │ └── Project.gd ├── AutoExportVersion │ ├── plugin.cfg │ └── AutoExportVersion.gd └── metadata_inspector │ ├── plugin.cfg │ ├── RealtimeUpdater.gd │ └── CustomInspectorPlugin.gd ├── demo.mdj ├── .gitattributes ├── .gitignore ├── default_bus_layout.tres ├── scenes ├── FloatButton.tscn ├── Toast.gd ├── FloatButton.gd ├── dialogs │ ├── custom_dialog │ │ ├── anim_fade_out.tres │ │ ├── anim_fade_in.tres │ │ ├── CustomDialog.tscn │ │ ├── anim_reset.tres │ │ └── DialogScript.gd │ ├── ConfirmationDialog.gd │ ├── AboutDialog.gd │ ├── load_dialog │ │ └── LoadItem.gd │ ├── UpdateDialog.gd │ ├── UpdateDialog.tscn │ ├── ColumnDialog.gd │ ├── ColumnDialog.tscn │ ├── ConfirmationDialog.tscn │ ├── SettingsDialog.gd │ ├── ProgressDialog.gd │ ├── SoundDialog.tscn │ └── SaveDialog.tscn ├── Toast.tscn ├── Song.gd └── Column.tscn ├── languages └── text.csv.import ├── icon.png.import ├── .github ├── ISSUE_TEMPLATE │ ├── feature_request.yaml │ └── bug_report.yaml └── workflows │ └── itch-release.yml ├── LICENSE ├── README.md └── CONTRIBUTING.md /bin/.gdignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/.build_version: -------------------------------------------------------------------------------- 1 | 3.5.1.stable 2 | -------------------------------------------------------------------------------- /version.gd: -------------------------------------------------------------------------------- 1 | extends Reference 2 | const VERSION = "v1.5-beta" 3 | -------------------------------------------------------------------------------- /assets/icon-source.txt: -------------------------------------------------------------------------------- 1 | https://www.flaticon.com/packs/music-instruments-59 -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/icon.png -------------------------------------------------------------------------------- /assets/themes/dark/import_icons.cmd: -------------------------------------------------------------------------------- 1 | python -u "..\svg_import.py" --fill "#FFFFFF" -------------------------------------------------------------------------------- /assets/themes/white/import_icons.cmd: -------------------------------------------------------------------------------- 1 | python -u "..\svg_import.py" --fill "#000000DE" -------------------------------------------------------------------------------- /sounds/0/1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/1.ogg -------------------------------------------------------------------------------- /sounds/0/2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/2.ogg -------------------------------------------------------------------------------- /sounds/0/3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/3.ogg -------------------------------------------------------------------------------- /sounds/0/4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/4.ogg -------------------------------------------------------------------------------- /sounds/0/5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/5.ogg -------------------------------------------------------------------------------- /sounds/0/6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/6.ogg -------------------------------------------------------------------------------- /sounds/0/7.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/7.ogg -------------------------------------------------------------------------------- /sounds/0/8.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/8.ogg -------------------------------------------------------------------------------- /sounds/0/9.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/9.ogg -------------------------------------------------------------------------------- /sounds/1/1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/1.ogg -------------------------------------------------------------------------------- /sounds/1/2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/2.ogg -------------------------------------------------------------------------------- /sounds/1/3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/3.ogg -------------------------------------------------------------------------------- /sounds/1/4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/4.ogg -------------------------------------------------------------------------------- /sounds/1/5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/5.ogg -------------------------------------------------------------------------------- /sounds/1/6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/6.ogg -------------------------------------------------------------------------------- /sounds/1/7.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/7.ogg -------------------------------------------------------------------------------- /sounds/1/8.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/8.ogg -------------------------------------------------------------------------------- /sounds/1/9.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/9.ogg -------------------------------------------------------------------------------- /sounds/2/1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/1.ogg -------------------------------------------------------------------------------- /sounds/2/2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/2.ogg -------------------------------------------------------------------------------- /sounds/2/3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/3.ogg -------------------------------------------------------------------------------- /sounds/2/4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/4.ogg -------------------------------------------------------------------------------- /sounds/2/5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/5.ogg -------------------------------------------------------------------------------- /sounds/2/6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/6.ogg -------------------------------------------------------------------------------- /sounds/2/7.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/7.ogg -------------------------------------------------------------------------------- /sounds/2/8.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/8.ogg -------------------------------------------------------------------------------- /sounds/2/9.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/9.ogg -------------------------------------------------------------------------------- /sounds/3/1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/1.ogg -------------------------------------------------------------------------------- /sounds/3/2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/2.ogg -------------------------------------------------------------------------------- /sounds/3/3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/3.ogg -------------------------------------------------------------------------------- /sounds/3/4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/4.ogg -------------------------------------------------------------------------------- /sounds/3/5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/5.ogg -------------------------------------------------------------------------------- /sounds/3/6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/6.ogg -------------------------------------------------------------------------------- /sounds/3/7.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/7.ogg -------------------------------------------------------------------------------- /sounds/3/8.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/8.ogg -------------------------------------------------------------------------------- /sounds/3/9.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/9.ogg -------------------------------------------------------------------------------- /assets/drum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/drum.png -------------------------------------------------------------------------------- /assets/mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/mask.png -------------------------------------------------------------------------------- /assets/piano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/piano.png -------------------------------------------------------------------------------- /sounds/0/10.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/10.ogg -------------------------------------------------------------------------------- /sounds/0/11.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/11.ogg -------------------------------------------------------------------------------- /sounds/0/12.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/12.ogg -------------------------------------------------------------------------------- /sounds/0/13.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/13.ogg -------------------------------------------------------------------------------- /sounds/0/14.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/14.ogg -------------------------------------------------------------------------------- /sounds/0/15.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/15.ogg -------------------------------------------------------------------------------- /sounds/0/16.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/16.ogg -------------------------------------------------------------------------------- /sounds/0/17.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/17.ogg -------------------------------------------------------------------------------- /sounds/0/18.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/18.ogg -------------------------------------------------------------------------------- /sounds/0/19.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/19.ogg -------------------------------------------------------------------------------- /sounds/0/20.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/20.ogg -------------------------------------------------------------------------------- /sounds/0/21.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/21.ogg -------------------------------------------------------------------------------- /sounds/0/22.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/22.ogg -------------------------------------------------------------------------------- /sounds/0/23.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/23.ogg -------------------------------------------------------------------------------- /sounds/0/24.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/24.ogg -------------------------------------------------------------------------------- /sounds/0/25.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/25.ogg -------------------------------------------------------------------------------- /sounds/0/26.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/26.ogg -------------------------------------------------------------------------------- /sounds/0/27.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/27.ogg -------------------------------------------------------------------------------- /sounds/0/28.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/28.ogg -------------------------------------------------------------------------------- /sounds/0/29.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/29.ogg -------------------------------------------------------------------------------- /sounds/0/30.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/30.ogg -------------------------------------------------------------------------------- /sounds/0/31.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/31.ogg -------------------------------------------------------------------------------- /sounds/0/32.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/0/32.ogg -------------------------------------------------------------------------------- /sounds/1/10.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/10.ogg -------------------------------------------------------------------------------- /sounds/1/11.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/11.ogg -------------------------------------------------------------------------------- /sounds/1/12.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/12.ogg -------------------------------------------------------------------------------- /sounds/1/13.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/13.ogg -------------------------------------------------------------------------------- /sounds/1/14.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/14.ogg -------------------------------------------------------------------------------- /sounds/1/15.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/15.ogg -------------------------------------------------------------------------------- /sounds/1/16.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/16.ogg -------------------------------------------------------------------------------- /sounds/1/17.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/17.ogg -------------------------------------------------------------------------------- /sounds/1/18.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/18.ogg -------------------------------------------------------------------------------- /sounds/1/19.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/19.ogg -------------------------------------------------------------------------------- /sounds/1/20.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/20.ogg -------------------------------------------------------------------------------- /sounds/1/21.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/21.ogg -------------------------------------------------------------------------------- /sounds/1/22.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/22.ogg -------------------------------------------------------------------------------- /sounds/1/23.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/23.ogg -------------------------------------------------------------------------------- /sounds/1/24.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/24.ogg -------------------------------------------------------------------------------- /sounds/1/25.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/25.ogg -------------------------------------------------------------------------------- /sounds/1/26.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/26.ogg -------------------------------------------------------------------------------- /sounds/1/27.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/27.ogg -------------------------------------------------------------------------------- /sounds/1/28.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/28.ogg -------------------------------------------------------------------------------- /sounds/1/29.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/29.ogg -------------------------------------------------------------------------------- /sounds/1/30.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/30.ogg -------------------------------------------------------------------------------- /sounds/1/31.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/31.ogg -------------------------------------------------------------------------------- /sounds/1/32.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/1/32.ogg -------------------------------------------------------------------------------- /sounds/2/10.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/10.ogg -------------------------------------------------------------------------------- /sounds/2/11.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/11.ogg -------------------------------------------------------------------------------- /sounds/2/12.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/12.ogg -------------------------------------------------------------------------------- /sounds/2/13.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/13.ogg -------------------------------------------------------------------------------- /sounds/2/14.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/14.ogg -------------------------------------------------------------------------------- /sounds/2/15.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/15.ogg -------------------------------------------------------------------------------- /sounds/2/16.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/16.ogg -------------------------------------------------------------------------------- /sounds/2/17.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/17.ogg -------------------------------------------------------------------------------- /sounds/2/18.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/18.ogg -------------------------------------------------------------------------------- /sounds/2/19.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/19.ogg -------------------------------------------------------------------------------- /sounds/2/20.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/20.ogg -------------------------------------------------------------------------------- /sounds/2/21.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/21.ogg -------------------------------------------------------------------------------- /sounds/2/22.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/22.ogg -------------------------------------------------------------------------------- /sounds/2/23.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/23.ogg -------------------------------------------------------------------------------- /sounds/2/24.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/24.ogg -------------------------------------------------------------------------------- /sounds/2/25.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/25.ogg -------------------------------------------------------------------------------- /sounds/2/26.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/26.ogg -------------------------------------------------------------------------------- /sounds/2/27.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/27.ogg -------------------------------------------------------------------------------- /sounds/2/28.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/28.ogg -------------------------------------------------------------------------------- /sounds/2/29.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/29.ogg -------------------------------------------------------------------------------- /sounds/2/30.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/30.ogg -------------------------------------------------------------------------------- /sounds/2/31.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/31.ogg -------------------------------------------------------------------------------- /sounds/2/32.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/2/32.ogg -------------------------------------------------------------------------------- /sounds/3/10.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/10.ogg -------------------------------------------------------------------------------- /sounds/3/11.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/11.ogg -------------------------------------------------------------------------------- /sounds/3/12.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/12.ogg -------------------------------------------------------------------------------- /sounds/3/13.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/13.ogg -------------------------------------------------------------------------------- /sounds/3/14.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/14.ogg -------------------------------------------------------------------------------- /sounds/3/15.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/15.ogg -------------------------------------------------------------------------------- /sounds/3/16.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/16.ogg -------------------------------------------------------------------------------- /sounds/3/17.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/17.ogg -------------------------------------------------------------------------------- /sounds/3/18.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/18.ogg -------------------------------------------------------------------------------- /sounds/3/19.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/19.ogg -------------------------------------------------------------------------------- /sounds/3/20.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/20.ogg -------------------------------------------------------------------------------- /sounds/3/21.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/21.ogg -------------------------------------------------------------------------------- /sounds/3/22.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/22.ogg -------------------------------------------------------------------------------- /sounds/3/23.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/23.ogg -------------------------------------------------------------------------------- /sounds/3/24.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/24.ogg -------------------------------------------------------------------------------- /sounds/3/25.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/25.ogg -------------------------------------------------------------------------------- /sounds/3/26.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/26.ogg -------------------------------------------------------------------------------- /sounds/3/27.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/27.ogg -------------------------------------------------------------------------------- /sounds/3/28.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/28.ogg -------------------------------------------------------------------------------- /sounds/3/29.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/29.ogg -------------------------------------------------------------------------------- /sounds/3/30.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/30.ogg -------------------------------------------------------------------------------- /sounds/3/31.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/31.ogg -------------------------------------------------------------------------------- /sounds/3/32.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/sounds/3/32.ogg -------------------------------------------------------------------------------- /assets/guitar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/guitar.png -------------------------------------------------------------------------------- /assets/trumpet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/trumpet.png -------------------------------------------------------------------------------- /assets/icon/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/icon/icon.ico -------------------------------------------------------------------------------- /assets/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/icon/icon.png -------------------------------------------------------------------------------- /assets/tutorial/follow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/tutorial/follow.jpg -------------------------------------------------------------------------------- /assets/tutorial/column-btn.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/tutorial/column-btn.webm -------------------------------------------------------------------------------- /assets/tutorial/drag-file.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/tutorial/drag-file.webm -------------------------------------------------------------------------------- /assets/tutorial/hold-tile.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/tutorial/hold-tile.webm -------------------------------------------------------------------------------- /assets/icon/android/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/icon/android/background.png -------------------------------------------------------------------------------- /assets/icon/android/foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/icon/android/foreground.png -------------------------------------------------------------------------------- /assets/icon/musicdj itch image.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/icon/musicdj itch image.psd -------------------------------------------------------------------------------- /assets/themes/dark/column_tear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/themes/dark/column_tear.png -------------------------------------------------------------------------------- /assets/themes/white/column_tear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/themes/white/column_tear.png -------------------------------------------------------------------------------- /assets/tutorial/right-click-tile.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/tutorial/right-click-tile.webm -------------------------------------------------------------------------------- /android/plugins/GodotFilePicker.gdap: -------------------------------------------------------------------------------- 1 | [config] 2 | 3 | name="GodotFilePicker" 4 | binary_type="local" 5 | binary="GodotFilePicker.release.aar" -------------------------------------------------------------------------------- /android/plugins/GodotFilePicker.release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/android/plugins/GodotFilePicker.release.aar -------------------------------------------------------------------------------- /android/plugins/GodotFileSharing.release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/android/plugins/GodotFileSharing.release.aar -------------------------------------------------------------------------------- /assets/fonts/GidoleFont/Gidole-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/fonts/GidoleFont/Gidole-Regular.ttf -------------------------------------------------------------------------------- /android/plugins/GodotFileSharing.gdap: -------------------------------------------------------------------------------- 1 | [config] 2 | 3 | name="GodotFileSharing" 4 | binary_type="local" 5 | binary="GodotFileSharing.release.aar" -------------------------------------------------------------------------------- /assets/fonts/GidoleFont/Gidolinya-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/fonts/GidoleFont/Gidolinya-Regular.otf -------------------------------------------------------------------------------- /assets/fonts/GidoleFont/Readme+Characters.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pattlebass/Music-DJ/HEAD/assets/fonts/GidoleFont/Readme+Characters.pdf -------------------------------------------------------------------------------- /assets/themes/dark/add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addons/Todo_Manager/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="Todo Manager" 4 | description="Dock for housing TODO messages." 5 | author="Peter de Vroom" 6 | version="1.2.2" 7 | script="plugin.gd" 8 | -------------------------------------------------------------------------------- /addons/Todo_Manager/todo_class.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Reference 3 | 4 | var pattern : String 5 | var title : String 6 | var content : String 7 | var script_path : String 8 | var line_number : int 9 | -------------------------------------------------------------------------------- /demo.mdj: -------------------------------------------------------------------------------- 1 | {"data":[[4,11,11,11,11,11,11,19,20,27,28,0,0,0,0],[0,0,0,11,12,11,12,19,20,27,28,0,0,0,0],[0,0,0,0,0,11,12,19,20,27,28,0,0,0,0],[0,3,0,3,0,0,0,19,20,27,28,0,0,0,0]],"format":1,"bpm":80} -------------------------------------------------------------------------------- /addons/AutoExportVersion/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="Auto Export Version" 4 | description="Create and automatically update a version script for your project." 5 | author="KoBeWi" 6 | version="1.0" 7 | script="AutoExportVersion.gd" 8 | -------------------------------------------------------------------------------- /addons/metadata_inspector/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="Metadata Inspector" 4 | description="From the nodes tab, you can now view metadata and set custom variables." 5 | author="Ballerburg9005" 6 | version="0.2.1" 7 | script="metadata_inspector.gd" 8 | -------------------------------------------------------------------------------- /bin/Before Android export.md: -------------------------------------------------------------------------------- 1 | Before exporting to Android add this to AndroidManifest.xml > permissions, after read external storage 2 | 5 | -------------------------------------------------------------------------------- /assets/themes/dark/delete.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/delete.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/dark/open_folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/open_folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/dark/open_file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/dark/radio_uncheck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/open_file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/radio_uncheck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/mask.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="image" 4 | type="Image" 5 | path="res://.import/mask.png-9f44758278b9ba6cd146ee809a9389e4.image" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/mask.png" 10 | dest_files=[ "res://.import/mask.png-9f44758278b9ba6cd146ee809a9389e4.image" ] 11 | 12 | [params] 13 | 14 | -------------------------------------------------------------------------------- /assets/themes/dark/radio_check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/radio_check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/dark/download.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/dark/unchecked_box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/download.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bin/after_export.cmd: -------------------------------------------------------------------------------- 1 | rmdir /s /q fin\ 2 | mkdir fin 3 | 4 | :: Android 5 | move android\MusicDJ_32bit.apk fin\MusicDJ_32bit.apk 6 | move android\MusicDJ_64bit.apk fin\MusicDJ_64bit.apk 7 | :: Windows 8 | 7z a fin/MusicDJ.Windows.zip ./win/* 9 | :: Linux 10 | 7z a fin/MusicDJ.Linux.zip ./linux/* 11 | :: HTML5 12 | 7z a fin/MusicDJ.HTML5.zip ./html5/* -------------------------------------------------------------------------------- /assets/themes/white/unchecked_box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sounds/0/1.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/1.ogg-e57f08b7ad8b17a1c503f3bc48e1eb59.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/1.ogg" 10 | dest_files=[ "res://.import/1.ogg-e57f08b7ad8b17a1c503f3bc48e1eb59.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/2.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/2.ogg-e29e1b178faa22ad26664fc470f8d423.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/2.ogg" 10 | dest_files=[ "res://.import/2.ogg-e29e1b178faa22ad26664fc470f8d423.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/3.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/3.ogg-487c8e657e749203c7458ffe6e347bdc.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/3.ogg" 10 | dest_files=[ "res://.import/3.ogg-487c8e657e749203c7458ffe6e347bdc.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/4.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/4.ogg-915a76999fad1086b007f95ddc543368.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/4.ogg" 10 | dest_files=[ "res://.import/4.ogg-915a76999fad1086b007f95ddc543368.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/5.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/5.ogg-d9bf2802f554a5d6e8d43eaef986b471.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/5.ogg" 10 | dest_files=[ "res://.import/5.ogg-d9bf2802f554a5d6e8d43eaef986b471.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/6.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/6.ogg-8dba1608c7d82870f3843f3894a16b2b.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/6.ogg" 10 | dest_files=[ "res://.import/6.ogg-8dba1608c7d82870f3843f3894a16b2b.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/7.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/7.ogg-c2273c51480eded9267a931bf980ce98.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/7.ogg" 10 | dest_files=[ "res://.import/7.ogg-c2273c51480eded9267a931bf980ce98.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/8.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/8.ogg-d44b2d6c04884ad5cc363a3a415462b5.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/8.ogg" 10 | dest_files=[ "res://.import/8.ogg-d44b2d6c04884ad5cc363a3a415462b5.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/9.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/9.ogg-3f304a94658566e9cd48691d0d616c1e.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/9.ogg" 10 | dest_files=[ "res://.import/9.ogg-3f304a94658566e9cd48691d0d616c1e.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/1.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/1.ogg-3646e0d93277b2394fb74979106f0e46.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/1.ogg" 10 | dest_files=[ "res://.import/1.ogg-3646e0d93277b2394fb74979106f0e46.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/2.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/2.ogg-cfd12ca018cec3137e31b755baf0c110.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/2.ogg" 10 | dest_files=[ "res://.import/2.ogg-cfd12ca018cec3137e31b755baf0c110.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/3.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/3.ogg-0c6e2b8c954a2adcbbf2e7abf7721135.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/3.ogg" 10 | dest_files=[ "res://.import/3.ogg-0c6e2b8c954a2adcbbf2e7abf7721135.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/4.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/4.ogg-b0eebe5e71392a89dd3a54dda95c4431.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/4.ogg" 10 | dest_files=[ "res://.import/4.ogg-b0eebe5e71392a89dd3a54dda95c4431.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/5.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/5.ogg-fdd29f1c6b81a7a9c68ebd0179d68e97.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/5.ogg" 10 | dest_files=[ "res://.import/5.ogg-fdd29f1c6b81a7a9c68ebd0179d68e97.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/6.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/6.ogg-a7e249edb687a2f06e1d75db050570c4.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/6.ogg" 10 | dest_files=[ "res://.import/6.ogg-a7e249edb687a2f06e1d75db050570c4.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/7.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/7.ogg-59c072006e9ef0c5bfc4bb002e048945.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/7.ogg" 10 | dest_files=[ "res://.import/7.ogg-59c072006e9ef0c5bfc4bb002e048945.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/8.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/8.ogg-4ae95d46afce052783c0d9d8e2dbe7ea.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/8.ogg" 10 | dest_files=[ "res://.import/8.ogg-4ae95d46afce052783c0d9d8e2dbe7ea.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/9.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/9.ogg-91fcccaf20dce0294a3b1b54c7104696.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/9.ogg" 10 | dest_files=[ "res://.import/9.ogg-91fcccaf20dce0294a3b1b54c7104696.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/1.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/1.ogg-7c5b053ef9f0195c4552592d3850f218.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/1.ogg" 10 | dest_files=[ "res://.import/1.ogg-7c5b053ef9f0195c4552592d3850f218.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/2.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/2.ogg-ff0a36f0958f20ef7474df028eb1b4f6.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/2.ogg" 10 | dest_files=[ "res://.import/2.ogg-ff0a36f0958f20ef7474df028eb1b4f6.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/3.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/3.ogg-ab9ba269d7eea4bf6ee147f3ca2dda17.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/3.ogg" 10 | dest_files=[ "res://.import/3.ogg-ab9ba269d7eea4bf6ee147f3ca2dda17.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/4.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/4.ogg-6d066658acd2da85bc9f7c69a11ad829.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/4.ogg" 10 | dest_files=[ "res://.import/4.ogg-6d066658acd2da85bc9f7c69a11ad829.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/5.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/5.ogg-66ce607e36c26cd84f7e3924dacac65d.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/5.ogg" 10 | dest_files=[ "res://.import/5.ogg-66ce607e36c26cd84f7e3924dacac65d.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/6.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/6.ogg-8df29502907c8f85ac342d021a621d57.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/6.ogg" 10 | dest_files=[ "res://.import/6.ogg-8df29502907c8f85ac342d021a621d57.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/7.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/7.ogg-b1063b898e4637b8581b57cde9715a26.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/7.ogg" 10 | dest_files=[ "res://.import/7.ogg-b1063b898e4637b8581b57cde9715a26.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/8.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/8.ogg-e551ae8fc34b8c6ef19b1e9afb0b96ac.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/8.ogg" 10 | dest_files=[ "res://.import/8.ogg-e551ae8fc34b8c6ef19b1e9afb0b96ac.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/9.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/9.ogg-5402c620b3476f7938079f8c8d9b3901.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/9.ogg" 10 | dest_files=[ "res://.import/9.ogg-5402c620b3476f7938079f8c8d9b3901.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/1.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/1.ogg-a384a96a40f170231a8c176000fcd49e.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/1.ogg" 10 | dest_files=[ "res://.import/1.ogg-a384a96a40f170231a8c176000fcd49e.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/2.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/2.ogg-9fa1a9dfdcd7302e9195ad5c461ab178.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/2.ogg" 10 | dest_files=[ "res://.import/2.ogg-9fa1a9dfdcd7302e9195ad5c461ab178.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/3.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/3.ogg-10bc508f5e4f83a241a6072b00fa9c31.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/3.ogg" 10 | dest_files=[ "res://.import/3.ogg-10bc508f5e4f83a241a6072b00fa9c31.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/4.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/4.ogg-cc369c6e0c626750d205bbd2b55cce4f.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/4.ogg" 10 | dest_files=[ "res://.import/4.ogg-cc369c6e0c626750d205bbd2b55cce4f.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/5.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/5.ogg-f45cb2ba1f0591d6845229d8a0b3daba.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/5.ogg" 10 | dest_files=[ "res://.import/5.ogg-f45cb2ba1f0591d6845229d8a0b3daba.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/6.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/6.ogg-23abaeb8e5cc9d4d56242dba7bfbc809.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/6.ogg" 10 | dest_files=[ "res://.import/6.ogg-23abaeb8e5cc9d4d56242dba7bfbc809.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/7.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/7.ogg-e205efd464d9a3773f0867f8cc952074.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/7.ogg" 10 | dest_files=[ "res://.import/7.ogg-e205efd464d9a3773f0867f8cc952074.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/8.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/8.ogg-8450eec59bc92a80d44cd70de9e17e76.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/8.ogg" 10 | dest_files=[ "res://.import/8.ogg-8450eec59bc92a80d44cd70de9e17e76.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/9.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/9.ogg-595f5d9e93f4d204339539995a63b3f4.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/9.ogg" 10 | dest_files=[ "res://.import/9.ogg-595f5d9e93f4d204339539995a63b3f4.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/10.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/10.ogg-22482a64f0c18e9cd65dedfaefe33ebc.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/10.ogg" 10 | dest_files=[ "res://.import/10.ogg-22482a64f0c18e9cd65dedfaefe33ebc.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/11.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/11.ogg-594a25da8bf0f3f20e83bc8d6316a540.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/11.ogg" 10 | dest_files=[ "res://.import/11.ogg-594a25da8bf0f3f20e83bc8d6316a540.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/12.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/12.ogg-e4dba2a556a1cefb5b79e8e1e2e0da44.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/12.ogg" 10 | dest_files=[ "res://.import/12.ogg-e4dba2a556a1cefb5b79e8e1e2e0da44.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/13.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/13.ogg-8ff55449f0f8d571884202ba316e376d.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/13.ogg" 10 | dest_files=[ "res://.import/13.ogg-8ff55449f0f8d571884202ba316e376d.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/14.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/14.ogg-733e055ac918063c2d27115b33860901.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/14.ogg" 10 | dest_files=[ "res://.import/14.ogg-733e055ac918063c2d27115b33860901.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/15.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/15.ogg-18fa592ba36bae30e5c3f9f2a44d7252.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/15.ogg" 10 | dest_files=[ "res://.import/15.ogg-18fa592ba36bae30e5c3f9f2a44d7252.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/16.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/16.ogg-b8c540f720c8cb3c8ddaf4c4fbc5eb13.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/16.ogg" 10 | dest_files=[ "res://.import/16.ogg-b8c540f720c8cb3c8ddaf4c4fbc5eb13.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/17.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/17.ogg-1c1f2279db3322d98671cdccd8a81d6f.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/17.ogg" 10 | dest_files=[ "res://.import/17.ogg-1c1f2279db3322d98671cdccd8a81d6f.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/18.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/18.ogg-2b33c7c613b199de47358199d0ee1cf6.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/18.ogg" 10 | dest_files=[ "res://.import/18.ogg-2b33c7c613b199de47358199d0ee1cf6.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/19.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/19.ogg-2e101f9f34b7f46b07acbd24666ce905.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/19.ogg" 10 | dest_files=[ "res://.import/19.ogg-2e101f9f34b7f46b07acbd24666ce905.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/20.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/20.ogg-9945db1263eeff9a45c8fd241b291bec.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/20.ogg" 10 | dest_files=[ "res://.import/20.ogg-9945db1263eeff9a45c8fd241b291bec.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/21.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/21.ogg-4b3d37b0db1aa03e46f70a93730953d8.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/21.ogg" 10 | dest_files=[ "res://.import/21.ogg-4b3d37b0db1aa03e46f70a93730953d8.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/22.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/22.ogg-f0b37329e89309a3198457d4900be528.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/22.ogg" 10 | dest_files=[ "res://.import/22.ogg-f0b37329e89309a3198457d4900be528.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/23.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/23.ogg-058a1d9fb0396fba0050494ea25df8f0.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/23.ogg" 10 | dest_files=[ "res://.import/23.ogg-058a1d9fb0396fba0050494ea25df8f0.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/24.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/24.ogg-74353c612f7b5bca1680d8e04e683453.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/24.ogg" 10 | dest_files=[ "res://.import/24.ogg-74353c612f7b5bca1680d8e04e683453.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/25.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/25.ogg-eeb2424c6258195767b0cb595a8a646a.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/25.ogg" 10 | dest_files=[ "res://.import/25.ogg-eeb2424c6258195767b0cb595a8a646a.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/26.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/26.ogg-88020d935405b96ef385b7b66486c893.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/26.ogg" 10 | dest_files=[ "res://.import/26.ogg-88020d935405b96ef385b7b66486c893.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/27.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/27.ogg-137aed40406cd39d9590b609f41b1f01.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/27.ogg" 10 | dest_files=[ "res://.import/27.ogg-137aed40406cd39d9590b609f41b1f01.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/28.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/28.ogg-d0fff63e40d26ac90c639772d3954711.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/28.ogg" 10 | dest_files=[ "res://.import/28.ogg-d0fff63e40d26ac90c639772d3954711.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/29.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/29.ogg-fb4d898af0827478ed82ea8ca677b6c4.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/29.ogg" 10 | dest_files=[ "res://.import/29.ogg-fb4d898af0827478ed82ea8ca677b6c4.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/30.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/30.ogg-3590f00d2c87081748b755313a2f44c4.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/30.ogg" 10 | dest_files=[ "res://.import/30.ogg-3590f00d2c87081748b755313a2f44c4.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/31.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/31.ogg-a613cc27abd5c75c7d4e9f6687712a3c.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/31.ogg" 10 | dest_files=[ "res://.import/31.ogg-a613cc27abd5c75c7d4e9f6687712a3c.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/0/32.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/32.ogg-b51171694f423d2cc64f72fac81a8d2b.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/0/32.ogg" 10 | dest_files=[ "res://.import/32.ogg-b51171694f423d2cc64f72fac81a8d2b.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/10.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/10.ogg-9c900239fe9ed7398f13715b9d9f96fe.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/10.ogg" 10 | dest_files=[ "res://.import/10.ogg-9c900239fe9ed7398f13715b9d9f96fe.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/11.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/11.ogg-a4aa4b36064181e97e1445483bec24be.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/11.ogg" 10 | dest_files=[ "res://.import/11.ogg-a4aa4b36064181e97e1445483bec24be.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/12.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/12.ogg-681bf95c414eb299a83600f1bc931b2f.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/12.ogg" 10 | dest_files=[ "res://.import/12.ogg-681bf95c414eb299a83600f1bc931b2f.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/13.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/13.ogg-8af3c7c85587bade6f409999d2295fad.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/13.ogg" 10 | dest_files=[ "res://.import/13.ogg-8af3c7c85587bade6f409999d2295fad.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/14.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/14.ogg-7f7c9776f1ca711fcb5e3a2f4d06a91a.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/14.ogg" 10 | dest_files=[ "res://.import/14.ogg-7f7c9776f1ca711fcb5e3a2f4d06a91a.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/15.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/15.ogg-bb20590979ad73b2db6bad67d21d2c07.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/15.ogg" 10 | dest_files=[ "res://.import/15.ogg-bb20590979ad73b2db6bad67d21d2c07.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/16.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/16.ogg-6ed796e1dd608f9de590acab0c14a8bf.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/16.ogg" 10 | dest_files=[ "res://.import/16.ogg-6ed796e1dd608f9de590acab0c14a8bf.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/17.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/17.ogg-496cfe12541be29c1f4d990b58dc1c38.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/17.ogg" 10 | dest_files=[ "res://.import/17.ogg-496cfe12541be29c1f4d990b58dc1c38.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/18.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/18.ogg-97eabc9075b52d8faf4505af28b98b67.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/18.ogg" 10 | dest_files=[ "res://.import/18.ogg-97eabc9075b52d8faf4505af28b98b67.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/19.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/19.ogg-b726392e3f206ab494e29b76e26b0b4e.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/19.ogg" 10 | dest_files=[ "res://.import/19.ogg-b726392e3f206ab494e29b76e26b0b4e.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/20.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/20.ogg-0e504ceabbca1da5f6dc3cda7d902478.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/20.ogg" 10 | dest_files=[ "res://.import/20.ogg-0e504ceabbca1da5f6dc3cda7d902478.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/21.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/21.ogg-42d3935a975346c8e9364dd3f9e8390b.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/21.ogg" 10 | dest_files=[ "res://.import/21.ogg-42d3935a975346c8e9364dd3f9e8390b.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/22.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/22.ogg-dd60b1c012812a3b59bcc433f0ca7a77.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/22.ogg" 10 | dest_files=[ "res://.import/22.ogg-dd60b1c012812a3b59bcc433f0ca7a77.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/23.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/23.ogg-70bde21414b15bf0fa1f0beb911d62c7.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/23.ogg" 10 | dest_files=[ "res://.import/23.ogg-70bde21414b15bf0fa1f0beb911d62c7.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/24.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/24.ogg-41bc3cacd8bd03c3a32522a194a8ff57.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/24.ogg" 10 | dest_files=[ "res://.import/24.ogg-41bc3cacd8bd03c3a32522a194a8ff57.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/25.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/25.ogg-7f7db8fd831e5da65d761e0f8b39b4b6.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/25.ogg" 10 | dest_files=[ "res://.import/25.ogg-7f7db8fd831e5da65d761e0f8b39b4b6.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/26.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/26.ogg-5829ce963de016dad84ec14ad79a9916.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/26.ogg" 10 | dest_files=[ "res://.import/26.ogg-5829ce963de016dad84ec14ad79a9916.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/27.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/27.ogg-26cb1d8a8a00a907d52a6fa1b74f2c10.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/27.ogg" 10 | dest_files=[ "res://.import/27.ogg-26cb1d8a8a00a907d52a6fa1b74f2c10.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/28.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/28.ogg-f33e2fc52635b3e7bd401fe09254e462.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/28.ogg" 10 | dest_files=[ "res://.import/28.ogg-f33e2fc52635b3e7bd401fe09254e462.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/29.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/29.ogg-a0294498c1a44a86496d61577cd8d5ba.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/29.ogg" 10 | dest_files=[ "res://.import/29.ogg-a0294498c1a44a86496d61577cd8d5ba.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/30.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/30.ogg-b82fcf41a8f5c10707efc2df17337468.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/30.ogg" 10 | dest_files=[ "res://.import/30.ogg-b82fcf41a8f5c10707efc2df17337468.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/31.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/31.ogg-dc11e9ebc68d62b56e9d31431118ed6d.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/31.ogg" 10 | dest_files=[ "res://.import/31.ogg-dc11e9ebc68d62b56e9d31431118ed6d.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/1/32.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/32.ogg-121874e0e9b5553ce6e54c3b09e72ddf.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/1/32.ogg" 10 | dest_files=[ "res://.import/32.ogg-121874e0e9b5553ce6e54c3b09e72ddf.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/10.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/10.ogg-c534957369347117efae66764ed26d9f.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/10.ogg" 10 | dest_files=[ "res://.import/10.ogg-c534957369347117efae66764ed26d9f.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/11.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/11.ogg-1061b7fb5337067a1e6ea096d2998495.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/11.ogg" 10 | dest_files=[ "res://.import/11.ogg-1061b7fb5337067a1e6ea096d2998495.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/12.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/12.ogg-d40cb5ad92c8dbf1ab77c84c6da0f46b.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/12.ogg" 10 | dest_files=[ "res://.import/12.ogg-d40cb5ad92c8dbf1ab77c84c6da0f46b.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/13.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/13.ogg-5f3f0446a35a7a4e2337b8c689769171.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/13.ogg" 10 | dest_files=[ "res://.import/13.ogg-5f3f0446a35a7a4e2337b8c689769171.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/14.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/14.ogg-1e21407693efb1c1c36c58cee54d00e6.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/14.ogg" 10 | dest_files=[ "res://.import/14.ogg-1e21407693efb1c1c36c58cee54d00e6.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/15.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/15.ogg-2fda0d94633e6cf747118c577e59aabc.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/15.ogg" 10 | dest_files=[ "res://.import/15.ogg-2fda0d94633e6cf747118c577e59aabc.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/16.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/16.ogg-00caac2051c9935e533d704cdd5c5624.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/16.ogg" 10 | dest_files=[ "res://.import/16.ogg-00caac2051c9935e533d704cdd5c5624.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/17.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/17.ogg-ccd10093e898dc9b78575933ccb3057d.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/17.ogg" 10 | dest_files=[ "res://.import/17.ogg-ccd10093e898dc9b78575933ccb3057d.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/18.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/18.ogg-bc5f72b82e85aaffa78d5bf353bb13e4.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/18.ogg" 10 | dest_files=[ "res://.import/18.ogg-bc5f72b82e85aaffa78d5bf353bb13e4.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/19.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/19.ogg-ff8626300f90296b3c3779d3f022ec68.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/19.ogg" 10 | dest_files=[ "res://.import/19.ogg-ff8626300f90296b3c3779d3f022ec68.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/20.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/20.ogg-49f8de3746acbcfed9ae2980cb71d6ab.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/20.ogg" 10 | dest_files=[ "res://.import/20.ogg-49f8de3746acbcfed9ae2980cb71d6ab.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/21.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/21.ogg-5fea3e26582e5f21f9acfd61978d6638.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/21.ogg" 10 | dest_files=[ "res://.import/21.ogg-5fea3e26582e5f21f9acfd61978d6638.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/22.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/22.ogg-dd4e380280b454b8553122674f20e03d.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/22.ogg" 10 | dest_files=[ "res://.import/22.ogg-dd4e380280b454b8553122674f20e03d.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/23.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/23.ogg-95583b9f239081a946c92f4d29388b83.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/23.ogg" 10 | dest_files=[ "res://.import/23.ogg-95583b9f239081a946c92f4d29388b83.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/24.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/24.ogg-f98d5cfee040eabba61762db2c345608.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/24.ogg" 10 | dest_files=[ "res://.import/24.ogg-f98d5cfee040eabba61762db2c345608.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/25.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/25.ogg-19a938d4aa214e364c7f3c8cccedd3f8.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/25.ogg" 10 | dest_files=[ "res://.import/25.ogg-19a938d4aa214e364c7f3c8cccedd3f8.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/26.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/26.ogg-30a5c96b562e215aa6490302040378ef.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/26.ogg" 10 | dest_files=[ "res://.import/26.ogg-30a5c96b562e215aa6490302040378ef.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/27.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/27.ogg-bf6af64fa4ea7be908474d3787641e4a.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/27.ogg" 10 | dest_files=[ "res://.import/27.ogg-bf6af64fa4ea7be908474d3787641e4a.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/28.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/28.ogg-0f48bc140c18a265cfc09267ca256a24.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/28.ogg" 10 | dest_files=[ "res://.import/28.ogg-0f48bc140c18a265cfc09267ca256a24.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/29.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/29.ogg-a9b30a3d73655c4c58cf45e40585e49c.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/29.ogg" 10 | dest_files=[ "res://.import/29.ogg-a9b30a3d73655c4c58cf45e40585e49c.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/30.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/30.ogg-bf7e8b640518a83f73b3edd2e6e54125.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/30.ogg" 10 | dest_files=[ "res://.import/30.ogg-bf7e8b640518a83f73b3edd2e6e54125.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/31.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/31.ogg-c1439d0ef8497383110c103eebd6a66e.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/31.ogg" 10 | dest_files=[ "res://.import/31.ogg-c1439d0ef8497383110c103eebd6a66e.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/2/32.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/32.ogg-86b3ccc12864d6f44a7542aeb16241a1.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/2/32.ogg" 10 | dest_files=[ "res://.import/32.ogg-86b3ccc12864d6f44a7542aeb16241a1.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/10.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/10.ogg-984300c600b243948279869b0720fda1.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/10.ogg" 10 | dest_files=[ "res://.import/10.ogg-984300c600b243948279869b0720fda1.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/11.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/11.ogg-6342e99f91b38a93d39b61664bb7ba78.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/11.ogg" 10 | dest_files=[ "res://.import/11.ogg-6342e99f91b38a93d39b61664bb7ba78.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/12.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/12.ogg-4afc768de5af03582084868f202939d2.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/12.ogg" 10 | dest_files=[ "res://.import/12.ogg-4afc768de5af03582084868f202939d2.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/13.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/13.ogg-aa22b2d9ac4f9e25c533a62c3abb8d23.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/13.ogg" 10 | dest_files=[ "res://.import/13.ogg-aa22b2d9ac4f9e25c533a62c3abb8d23.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/14.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/14.ogg-31c0683c2ded8117100ff335283077e0.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/14.ogg" 10 | dest_files=[ "res://.import/14.ogg-31c0683c2ded8117100ff335283077e0.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/15.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/15.ogg-84933fef05546da5267e28cb15743f2a.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/15.ogg" 10 | dest_files=[ "res://.import/15.ogg-84933fef05546da5267e28cb15743f2a.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/16.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/16.ogg-391a39c0b36740ba8b3a2dc49195f56c.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/16.ogg" 10 | dest_files=[ "res://.import/16.ogg-391a39c0b36740ba8b3a2dc49195f56c.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/17.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/17.ogg-47f19bcca592de9e0ed5750863b93c4c.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/17.ogg" 10 | dest_files=[ "res://.import/17.ogg-47f19bcca592de9e0ed5750863b93c4c.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/18.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/18.ogg-dc4a8217187975a5816ff722b7e0471b.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/18.ogg" 10 | dest_files=[ "res://.import/18.ogg-dc4a8217187975a5816ff722b7e0471b.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/19.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/19.ogg-b928744f1deccd64d2ce59807ade8631.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/19.ogg" 10 | dest_files=[ "res://.import/19.ogg-b928744f1deccd64d2ce59807ade8631.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/20.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/20.ogg-b1a768dfd7e8125ce59b62fd63a2d45a.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/20.ogg" 10 | dest_files=[ "res://.import/20.ogg-b1a768dfd7e8125ce59b62fd63a2d45a.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/21.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/21.ogg-7bd3190de5d66ed028b87283aff5ce7b.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/21.ogg" 10 | dest_files=[ "res://.import/21.ogg-7bd3190de5d66ed028b87283aff5ce7b.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/22.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/22.ogg-56abec00b1b78e5c4f96748458d8e9de.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/22.ogg" 10 | dest_files=[ "res://.import/22.ogg-56abec00b1b78e5c4f96748458d8e9de.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/23.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/23.ogg-a9c067e7af526394abbd32a4caa6ed7e.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/23.ogg" 10 | dest_files=[ "res://.import/23.ogg-a9c067e7af526394abbd32a4caa6ed7e.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/24.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/24.ogg-30224bf160fdd05c00e71e8242d5b278.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/24.ogg" 10 | dest_files=[ "res://.import/24.ogg-30224bf160fdd05c00e71e8242d5b278.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/25.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/25.ogg-ef9548bc2fe67634f71635fb599ad048.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/25.ogg" 10 | dest_files=[ "res://.import/25.ogg-ef9548bc2fe67634f71635fb599ad048.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/26.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/26.ogg-301a9214c861994a3b94931eaf2d057c.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/26.ogg" 10 | dest_files=[ "res://.import/26.ogg-301a9214c861994a3b94931eaf2d057c.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/27.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/27.ogg-ae79eb1a35dc4398869296322de621c5.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/27.ogg" 10 | dest_files=[ "res://.import/27.ogg-ae79eb1a35dc4398869296322de621c5.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/28.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/28.ogg-48e9b3f3c20e4ea979767aee6b35168d.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/28.ogg" 10 | dest_files=[ "res://.import/28.ogg-48e9b3f3c20e4ea979767aee6b35168d.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/29.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/29.ogg-7378e0e67aa9fa5c3c35fc26483d8ce9.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/29.ogg" 10 | dest_files=[ "res://.import/29.ogg-7378e0e67aa9fa5c3c35fc26483d8ce9.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/30.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/30.ogg-c03535143ede76dac08db794b4e9e1be.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/30.ogg" 10 | dest_files=[ "res://.import/30.ogg-c03535143ede76dac08db794b4e9e1be.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/31.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/31.ogg-6574a5f2c88c352118751567586e636f.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/31.ogg" 10 | dest_files=[ "res://.import/31.ogg-6574a5f2c88c352118751567586e636f.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /sounds/3/32.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/32.ogg-5f12895b9213ffa625c2d0183c1aa268.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://sounds/3/32.ogg" 10 | dest_files=[ "res://.import/32.ogg-5f12895b9213ffa625c2d0183c1aa268.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=false 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /addons/Todo_Manager/todoItem_class.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Reference 3 | 4 | var script_path : String 5 | var todos : Array 6 | 7 | func get_short_path() -> String: 8 | var temp_array := script_path.rsplit('/', false, 1) 9 | var short_path : String 10 | if !temp_array[1]: 11 | short_path = "(!)" + temp_array[0] 12 | else: 13 | short_path = temp_array[1] 14 | return short_path 15 | -------------------------------------------------------------------------------- /assets/themes/dark/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addons/Todo_Manager/ColourPicker.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | var colour : Color 5 | var title : String setget set_title 6 | var index : int 7 | 8 | onready var colour_picker := $TODOColourPickerButton 9 | 10 | func _ready() -> void: 11 | $TODOColourPickerButton.color = colour 12 | $Label.text = title 13 | 14 | func set_title(value: String) -> void: 15 | title = value 16 | $Label.text = value 17 | -------------------------------------------------------------------------------- /addons/metadata_inspector/RealtimeUpdater.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | var counter = 0 4 | 5 | func _ready(): 6 | print("REDY") 7 | 8 | func _process(delta): 9 | if counter == 30: 10 | #print(Engine.is_editor_hint()) 11 | if( self.get_tree().has_method("is_editor_hint") and not self.get_tree().is_editor_hint() 12 | or( not Engine.is_editor_hint()) 13 | ): 14 | print("UPDATE") 15 | counter = (counter+1)%120 16 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Normalize EOL for all files that Git considers text files 2 | * text=auto eol=lf 3 | # Except for bat files, which are Windows only files 4 | *.bat eol=crlf 5 | 6 | # The above only works properly for Git 2.10+, so for older versions 7 | # we need to manually list the binary files we don't want modified. 8 | *.icns binary 9 | *.ico binary 10 | *.jar binary 11 | *.png binary 12 | *.ttf binary 13 | *.tza binary 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Godot-specific ignores 2 | .import/ 3 | export.cfg 4 | export_presets.cfg 5 | 6 | # Imported translations (automatically generated from CSV files) 7 | *.translation 8 | 9 | # Mono-specific ignores 10 | .mono/ 11 | data_*/ 12 | 13 | # Android-specific ignores 14 | *.apk 15 | *.TMP 16 | android/build/ 17 | 18 | # Other 19 | bin/* 20 | !bin/.gdignore 21 | !bin/after_export.cmd 22 | !bin/Before Android export.md 23 | 24 | *.zip -------------------------------------------------------------------------------- /default_bus_layout.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="AudioBusLayout" load_steps=3 format=2] 2 | 3 | [sub_resource type="AudioEffectRecord" id=1] 4 | resource_name = "Record" 5 | 6 | [sub_resource type="AudioEffectPitchShift" id=2] 7 | resource_name = "PitchShift" 8 | 9 | [resource] 10 | bus/0/effect/0/effect = SubResource( 1 ) 11 | bus/0/effect/0/enabled = true 12 | bus/0/effect/1/effect = SubResource( 2 ) 13 | bus/0/effect/1/enabled = true 14 | -------------------------------------------------------------------------------- /assets/themes/dark/checked_box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/checked_box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addons/Todo_Manager/Pattern.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | var text : String setget set_text 5 | var disabled : bool 6 | var index : int 7 | 8 | onready var line_edit := $LineEdit as LineEdit 9 | onready var remove_button := $RemoveButton as Button 10 | 11 | func _ready() -> void: 12 | line_edit.text = text 13 | remove_button.disabled = disabled 14 | 15 | 16 | func set_text(value: String) -> void: 17 | text = value 18 | if line_edit: 19 | line_edit.text = value 20 | -------------------------------------------------------------------------------- /scenes/FloatButton.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://scenes/FloatButton.gd" type="Script" id=1] 4 | 5 | [sub_resource type="RectangleShape2D" id=1] 6 | extents = Vector2( 1, 1 ) 7 | 8 | [node name="FloatButton" type="Node2D"] 9 | modulate = Color( 1, 1, 1, 0.784314 ) 10 | script = ExtResource( 1 ) 11 | 12 | [node name="Area2D" type="Area2D" parent="."] 13 | 14 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] 15 | shape = SubResource( 1 ) 16 | -------------------------------------------------------------------------------- /addons/Todo_Manager/todo.cfg: -------------------------------------------------------------------------------- 1 | [scripts] 2 | 3 | full_path=false 4 | sort_alphabetical=true 5 | script_colour=Color( 0.8, 0.807843, 0.827451, 1 ) 6 | ignore_paths=[ "addons/" ] 7 | 8 | [patterns] 9 | 10 | patterns=[ [ "\\bTODO\\b", Color( 0.588235, 0.945098, 0.678431, 1 ) ], [ "\\bHACK\\b", Color( 0.835294, 0.737255, 0.439216, 1 ) ], [ "\\bFIXME\\b", Color( 0.835294, 0.439216, 0.439216, 1 ) ], [ "\\bDEPRECATED\\b", Color( 0.2, 0.615686, 0.988235, 1 ) ] ] 11 | 12 | [config] 13 | 14 | auto_refresh=true 15 | builtin_enabled=false 16 | -------------------------------------------------------------------------------- /languages/text.csv.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="csv_translation" 4 | type="Translation" 5 | 6 | [deps] 7 | 8 | files=[ "res://languages/text.en.translation", "res://languages/text.ro.translation", "res://languages/text.id.translation", "res://languages/text.pl.translation" ] 9 | 10 | source_file="res://languages/text.csv" 11 | dest_files=[ "res://languages/text.en.translation", "res://languages/text.ro.translation", "res://languages/text.id.translation", "res://languages/text.pl.translation" ] 12 | 13 | [params] 14 | 15 | compress=true 16 | delimiter=0 17 | -------------------------------------------------------------------------------- /scenes/Toast.gd: -------------------------------------------------------------------------------- 1 | extends Popup 2 | 3 | class_name Toast 4 | 5 | enum { 6 | LENGTH_SHORT, 7 | LENGTH_LONG 8 | } 9 | const scene_path := "res://scenes/Toast.tscn" 10 | var duration: int 11 | var text: String 12 | 13 | 14 | func popup(bounds := Rect2(0, 0, 0, 0)) -> void: 15 | $"%Label".text = text 16 | .popup(bounds) 17 | 18 | modulate.a = 0 19 | create_tween().tween_property(self, "modulate:a", 1.0, 0.1) 20 | 21 | match duration: 22 | LENGTH_SHORT: 23 | yield(get_tree().create_timer(2), "timeout") 24 | LENGTH_LONG: 25 | yield(get_tree().create_timer(4), "timeout") 26 | 27 | yield(create_tween().tween_property(self, "modulate:a", 0.0, 0.1), "finished") 28 | queue_free() 29 | -------------------------------------------------------------------------------- /assets/themes/dark/more.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/more.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addons/Todo_Manager/UI/ColourPicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/Todo_Manager/ColourPicker.gd" type="Script" id=1] 4 | 5 | [node name="TODOColour" type="HBoxContainer"] 6 | margin_right = 156.0 7 | margin_bottom = 20.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | 13 | [node name="Label" type="Label" parent="."] 14 | margin_top = 3.0 15 | margin_right = 52.0 16 | margin_bottom = 17.0 17 | text = "#TODO:" 18 | 19 | [node name="TODOColourPickerButton" type="ColorPickerButton" parent="."] 20 | margin_left = 56.0 21 | margin_right = 156.0 22 | margin_bottom = 20.0 23 | rect_min_size = Vector2( 100, 0 ) 24 | color = Color( 1, 1, 1, 1 ) 25 | -------------------------------------------------------------------------------- /addons/Todo_Manager/UI/Pattern.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/Todo_Manager/Pattern.gd" type="Script" id=1] 4 | 5 | [node name="Pattern" type="HBoxContainer"] 6 | margin_right = 228.0 7 | margin_bottom = 24.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | 13 | [node name="LineEdit" type="LineEdit" parent="."] 14 | margin_right = 200.0 15 | margin_bottom = 24.0 16 | rect_min_size = Vector2( 200, 0 ) 17 | size_flags_horizontal = 0 18 | text = "\\bTODO\\b.*" 19 | 20 | [node name="RemoveButton" type="Button" parent="."] 21 | margin_left = 204.0 22 | margin_right = 228.0 23 | margin_bottom = 24.0 24 | rect_min_size = Vector2( 24, 24 ) 25 | text = "-" 26 | -------------------------------------------------------------------------------- /scenes/FloatButton.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | var instrument 4 | var sample 5 | 6 | signal released 7 | 8 | func _input(event: InputEvent) -> void: 9 | if event is InputEventScreenDrag or event is InputEventPanGesture or event is InputEventMouseMotion: 10 | global_position = get_global_mouse_position() 11 | else: 12 | if $Area2D.get_overlapping_areas(): 13 | var collided_tile = $Area2D.get_overlapping_areas()[0].get_parent() 14 | var collided_column = collided_tile.get_parent() 15 | 16 | if collided_tile.get_meta("instrument") != instrument: 17 | emit_signal("released") 18 | queue_free() 19 | return 20 | collided_column.set_tile(instrument, sample) 21 | BoomBox.song.set_tile(instrument, collided_column.column_no, sample) 22 | 23 | emit_signal("released") 24 | queue_free() 25 | -------------------------------------------------------------------------------- /assets/themes/dark/delte.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/delte.png-64074d71b2659c916983b6750af77925.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/delte.png" 13 | dest_files=[ "res://.import/delte.png-64074d71b2659c916983b6750af77925.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://icon.png" 13 | dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/drum.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/drum.png-e641c621d676c74c27d6604439414f99.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/drum.png" 13 | dest_files=[ "res://.import/drum.png-e641c621d676c74c27d6604439414f99.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/piano.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/piano.png-636ea56561dc65334248f1afebd5337c.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/piano.png" 13 | dest_files=[ "res://.import/piano.png-636ea56561dc65334248f1afebd5337c.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/guitar.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/guitar.png-c66c400b7fc051574e0c1fcc53f7e159.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/guitar.png" 13 | dest_files=[ "res://.import/guitar.png-c66c400b7fc051574e0c1fcc53f7e159.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/icon/icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon.png-a4526fa92b2aba1f7632c2adbeba4a08.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/icon/icon.png" 13 | dest_files=[ "res://.import/icon.png-a4526fa92b2aba1f7632c2adbeba4a08.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/trumpet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/trumpet.png-bc945c4c6933f92645fcfb4c678d1da0.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/trumpet.png" 13 | dest_files=[ "res://.import/trumpet.png-bc945c4c6933f92645fcfb4c678d1da0.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/add.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/add.svg-2ac0c6ccb56c16d22b40ca44e7d7f33a.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/add.svg" 13 | dest_files=[ "res://.import/add.svg-2ac0c6ccb56c16d22b40ca44e7d7f33a.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/link.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/link.svg-d0c43a62c520a87ff01fb342a9973d7e.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/link.svg" 13 | dest_files=[ "res://.import/link.svg-d0c43a62c520a87ff01fb342a9973d7e.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/more.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/more.svg-7e4872da474e7dab18f492cee28b8ab1.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/more.svg" 13 | dest_files=[ "res://.import/more.svg-7e4872da474e7dab18f492cee28b8ab1.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/add.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/add.svg-d43e551e3d173b8279ab6f2daf92d147.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/add.svg" 13 | dest_files=[ "res://.import/add.svg-d43e551e3d173b8279ab6f2daf92d147.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/share.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/share.svg-eadb0508d2726cc9790568fe981b50a1.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/share.svg" 13 | dest_files=[ "res://.import/share.svg-eadb0508d2726cc9790568fe981b50a1.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/link.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/link.svg-e2637457e77a051dd300b9c5cc0b57ec.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/link.svg" 13 | dest_files=[ "res://.import/link.svg-e2637457e77a051dd300b9c5cc0b57ec.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/more.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/more.svg-3e9ca08bb44b8a8738d2e12ce08bea07.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/more.svg" 13 | dest_files=[ "res://.import/more.svg-3e9ca08bb44b8a8738d2e12ce08bea07.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/tutorial/follow.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/follow.jpg-0ac1d9219a5e421bda585b923f970b31.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/tutorial/follow.jpg" 13 | dest_files=[ "res://.import/follow.jpg-0ac1d9219a5e421bda585b923f970b31.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/delete.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/delete.svg-2f0aa2e26078a4af8101383f1f7728fd.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/delete.svg" 13 | dest_files=[ "res://.import/delete.svg-2f0aa2e26078a4af8101383f1f7728fd.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/delete.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/delete.svg-3064e3332ad43af86d2e218d61f90aa6.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/delete.svg" 13 | dest_files=[ "res://.import/delete.svg-3064e3332ad43af86d2e218d61f90aa6.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/share.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/share.svg-28711fb84fba672122fb1d0b5c0a1c82.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/share.svg" 13 | dest_files=[ "res://.import/share.svg-28711fb84fba672122fb1d0b5c0a1c82.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /scenes/dialogs/custom_dialog/anim_fade_out.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Animation" format=2] 2 | 3 | [resource] 4 | resource_name = "fade_out" 5 | length = 0.07 6 | step = 0.01 7 | tracks/0/type = "value" 8 | tracks/0/path = NodePath(".:modulate") 9 | tracks/0/interp = 1 10 | tracks/0/loop_wrap = true 11 | tracks/0/imported = false 12 | tracks/0/enabled = true 13 | tracks/0/keys = { 14 | "times": PoolRealArray( 0, 0.07 ), 15 | "transitions": PoolRealArray( 1, 1 ), 16 | "update": 0, 17 | "values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] 18 | } 19 | tracks/1/type = "value" 20 | tracks/1/path = NodePath(".:visible") 21 | tracks/1/interp = 1 22 | tracks/1/loop_wrap = true 23 | tracks/1/imported = false 24 | tracks/1/enabled = true 25 | tracks/1/keys = { 26 | "times": PoolRealArray( 0, 0.07 ), 27 | "transitions": PoolRealArray( 1, 1 ), 28 | "update": 1, 29 | "values": [ true, false ] 30 | } 31 | -------------------------------------------------------------------------------- /assets/themes/dark/download.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/download.svg-39507200d987df2bade24614145deff7.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/download.svg" 13 | dest_files=[ "res://.import/download.svg-39507200d987df2bade24614145deff7.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/open_file.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/open_file.svg-544df966ef43a8e0afd6ff82dbcfaf4a.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/open_file.svg" 13 | dest_files=[ "res://.import/open_file.svg-544df966ef43a8e0afd6ff82dbcfaf4a.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/download.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/download.svg-f29e96ced56f0e9f1324fd74a96bf1e4.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/download.svg" 13 | dest_files=[ "res://.import/download.svg-f29e96ced56f0e9f1324fd74a96bf1e4.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/open_file.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/open_file.svg-1406787a09f3dc1560eded5093a47b0e.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/open_file.svg" 13 | dest_files=[ "res://.import/open_file.svg-1406787a09f3dc1560eded5093a47b0e.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/icon/android/background.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/background.png-0caf66e27e9068788817690c9a7ab081.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/icon/android/background.png" 13 | dest_files=[ "res://.import/background.png-0caf66e27e9068788817690c9a7ab081.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/icon/android/foreground.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/foreground.png-aaf4f5820df38e7cadc6c40a35d332ea.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/icon/android/foreground.png" 13 | dest_files=[ "res://.import/foreground.png-aaf4f5820df38e7cadc6c40a35d332ea.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/checked_box.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/checked_box.svg-89434749fb09c0cff05171bf6176858e.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/checked_box.svg" 13 | dest_files=[ "res://.import/checked_box.svg-89434749fb09c0cff05171bf6176858e.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/column_tear.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/column_tear.png-3cc1c85ee61cdca4219bea3443a855d5.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/column_tear.png" 13 | dest_files=[ "res://.import/column_tear.png-3cc1c85ee61cdca4219bea3443a855d5.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/open_folder.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/open_folder.svg-caec39e6ae49291cf0ebea9af1a396e1.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/open_folder.svg" 13 | dest_files=[ "res://.import/open_folder.svg-caec39e6ae49291cf0ebea9af1a396e1.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/radio_check.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/radio_check.svg-c475af8fdc6bff904e520305114fed7d.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/radio_check.svg" 13 | dest_files=[ "res://.import/radio_check.svg-c475af8fdc6bff904e520305114fed7d.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/checked_box.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/checked_box.svg-2a411612a2befafa690be257fd44b520.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/checked_box.svg" 13 | dest_files=[ "res://.import/checked_box.svg-2a411612a2befafa690be257fd44b520.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/column_tear.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/column_tear.png-4d412fddd07354793ad92fab050ca8c7.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/column_tear.png" 13 | dest_files=[ "res://.import/column_tear.png-4d412fddd07354793ad92fab050ca8c7.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/open_folder.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/open_folder.svg-f9bc5db9ec149becb6aae35006b64e7e.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/open_folder.svg" 13 | dest_files=[ "res://.import/open_folder.svg-f9bc5db9ec149becb6aae35006b64e7e.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/radio_check.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/radio_check.svg-259c0c77f35e22cfbffbfef952ccb3b1.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/radio_check.svg" 13 | dest_files=[ "res://.import/radio_check.svg-259c0c77f35e22cfbffbfef952ccb3b1.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/radio_uncheck.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/radio_uncheck.svg-8d06067269edf0c24372142a08c20c8d.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/radio_uncheck.svg" 13 | dest_files=[ "res://.import/radio_uncheck.svg-8d06067269edf0c24372142a08c20c8d.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/dark/unchecked_box.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/unchecked_box.svg-b54008225742a77990ff472efe79b0ec.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/dark/unchecked_box.svg" 13 | dest_files=[ "res://.import/unchecked_box.svg-b54008225742a77990ff472efe79b0ec.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/radio_uncheck.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/radio_uncheck.svg-51a110b01c6fb039b713ca09c98f67de.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/radio_uncheck.svg" 13 | dest_files=[ "res://.import/radio_uncheck.svg-51a110b01c6fb039b713ca09c98f67de.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /assets/themes/white/unchecked_box.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/unchecked_box.svg-6421880513eed4c57226c5ae2de89ec1.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://assets/themes/white/unchecked_box.svg" 13 | dest_files=[ "res://.import/unchecked_box.svg-6421880513eed4c57226c5ae2de89ec1.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /scenes/dialogs/custom_dialog/anim_fade_in.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Animation" format=2] 2 | 3 | [resource] 4 | resource_name = "fade_in" 5 | length = 0.15 6 | step = 0.01 7 | tracks/0/type = "value" 8 | tracks/0/path = NodePath(".:modulate") 9 | tracks/0/interp = 1 10 | tracks/0/loop_wrap = true 11 | tracks/0/imported = false 12 | tracks/0/enabled = true 13 | tracks/0/keys = { 14 | "times": PoolRealArray( 0, 0.05 ), 15 | "transitions": PoolRealArray( 1, 1 ), 16 | "update": 0, 17 | "values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ] 18 | } 19 | tracks/1/type = "value" 20 | tracks/1/path = NodePath(".:rect_scale") 21 | tracks/1/interp = 1 22 | tracks/1/loop_wrap = true 23 | tracks/1/imported = false 24 | tracks/1/enabled = true 25 | tracks/1/keys = { 26 | "times": PoolRealArray( 0, 0.15 ), 27 | "transitions": PoolRealArray( 0.5, 0.5 ), 28 | "update": 0, 29 | "values": [ Vector2( 0.8, 0.8 ), Vector2( 1, 1 ) ] 30 | } 31 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yaml: -------------------------------------------------------------------------------- 1 | name: Feature Request 2 | description: Propose a feature 3 | title: "" 4 | labels: [enhancement] 5 | 6 | body: 7 | - type: textarea 8 | id: problem 9 | attributes: 10 | label: Describe the problem you're having 11 | description: Is your feature request related to a problem? Please describe. 12 | placeholder: E.g. I'm always frustrated when [...] 13 | validations: 14 | required: true 15 | - type: textarea 16 | id: solution 17 | attributes: 18 | label: Describe the solution you'd like 19 | description: A clear and concise description of what you want to happen. 20 | validations: 21 | required: true 22 | - type: textarea 23 | id: media 24 | attributes: 25 | label: Screenshots 26 | description: Add any other context or screenshots about the feature request here. 27 | validations: 28 | required: false 29 | -------------------------------------------------------------------------------- /addons/metadata_inspector/CustomInspectorPlugin.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends EditorInspectorPlugin 3 | 4 | 5 | # this faux EditorInspectorPlugin is necessary to update the real EditorPlugin at the right time 6 | func can_handle(object): 7 | if object.is_class("Node"): 8 | var metadata_inspector 9 | for n0 in object.get_tree().get_root().get_children(): 10 | for n1 in n0.get_children(): 11 | if n1.is_class("EditorPlugin"): 12 | if "is_metadata_inspector" in n1: 13 | metadata_inspector = n1 14 | if object.get_filename().length() > 0 and object.get_filename() != object.get_tree().edited_scene_root.filename: 15 | metadata_inspector.set_nonodelabel("Please edit the metadata from inside the scene of this instance.") 16 | else: 17 | metadata_inspector.update_node(object, ["load"], {}, [[], "new"]) 18 | #else: 19 | # metadata_inspector.set_nonodelabel("Select a single node to edit and view its metadata.") 20 | return false 21 | -------------------------------------------------------------------------------- /assets/themes/dark/share.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/themes/white/share.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scenes/dialogs/ConfirmationDialog.gd: -------------------------------------------------------------------------------- 1 | extends CustomDialog 2 | 3 | signal chose 4 | 5 | func _ready() -> void: 6 | if !OS.is_ok_left_and_cancel_right(): 7 | $VBoxContainer/HBoxContainer.move_child( 8 | $VBoxContainer/HBoxContainer/CancelButton, 9 | 0 10 | ) 11 | dim = false 12 | 13 | func alert(_title, _subtitle): 14 | $VBoxContainer/Title.text = _title 15 | $VBoxContainer/Subtitle.bbcode_text = _subtitle 16 | popup_centered() 17 | 18 | 19 | func _on_OKButton_pressed(): 20 | emit_signal("chose", true) 21 | hide() 22 | 23 | 24 | func _on_CancelButton_pressed(): 25 | emit_signal("chose", false) 26 | hide() 27 | 28 | 29 | func _on_ConfirmationDialog_about_to_show(): 30 | about_to_show() 31 | $BackPanel.modulate = Color(1, 1, 1, 1) 32 | yield(get_tree(), "idle_frame") 33 | rect_min_size.x = $VBoxContainer.rect_size.x 34 | 35 | 36 | func _on_ConfirmationDialog_popup_hide(): 37 | popup_hide() 38 | yield(get_tree().create_timer(0.1), "timeout") 39 | queue_free() 40 | -------------------------------------------------------------------------------- /scenes/dialogs/custom_dialog/CustomDialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://scenes/dialogs/custom_dialog/DialogScript.gd" type="Script" id=1] 4 | [ext_resource path="res://scenes/dialogs/custom_dialog/anim_fade_in.tres" type="Animation" id=2] 5 | [ext_resource path="res://scenes/dialogs/custom_dialog/anim_reset.tres" type="Animation" id=3] 6 | [ext_resource path="res://scenes/dialogs/custom_dialog/anim_fade_out.tres" type="Animation" id=4] 7 | 8 | [node name="CustomDialog" type="PopupDialog"] 9 | margin_right = 40.0 10 | margin_bottom = 40.0 11 | input_pass_on_modal_close_click = false 12 | script = ExtResource( 1 ) 13 | 14 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 15 | anims/RESET = ExtResource( 3 ) 16 | anims/anim_fade_in = ExtResource( 2 ) 17 | anims/anim_fade_out = ExtResource( 4 ) 18 | 19 | [connection signal="about_to_show" from="." to="." method="about_to_show"] 20 | [connection signal="popup_hide" from="." to="." method="popup_hide"] 21 | -------------------------------------------------------------------------------- /scenes/Toast.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://scenes/Toast.gd" type="Script" id=1] 4 | 5 | [node name="Toast" type="Popup"] 6 | anchor_left = 0.5 7 | anchor_top = 1.0 8 | anchor_right = 0.5 9 | anchor_bottom = 1.0 10 | margin_left = -512.0 11 | margin_top = -120.0 12 | margin_right = 512.0 13 | margin_bottom = -49.0 14 | theme_type_variation = "Toast" 15 | script = ExtResource( 1 ) 16 | __meta__ = { 17 | "_edit_group_": true 18 | } 19 | 20 | [node name="HBoxContainer" type="HBoxContainer" parent="."] 21 | anchor_right = 1.0 22 | anchor_bottom = 1.0 23 | alignment = 1 24 | 25 | [node name="Panel" type="PanelContainer" parent="HBoxContainer"] 26 | margin_left = 458.0 27 | margin_right = 566.0 28 | margin_bottom = 40.0 29 | size_flags_vertical = 0 30 | theme_type_variation = "Toast" 31 | 32 | [node name="Label" type="Label" parent="HBoxContainer/Panel"] 33 | unique_name_in_owner = true 34 | margin_left = 8.0 35 | margin_top = 8.0 36 | margin_right = 100.0 37 | margin_bottom = 32.0 38 | theme_type_variation = "Text" 39 | text = "Lorem ipsum" 40 | align = 1 41 | valign = 1 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 pattlebass 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /scenes/dialogs/custom_dialog/anim_reset.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Animation" format=2] 2 | 3 | [resource] 4 | resource_name = "RESET" 5 | length = 0.001 6 | tracks/0/type = "value" 7 | tracks/0/path = NodePath(".:modulate") 8 | tracks/0/interp = 1 9 | tracks/0/loop_wrap = true 10 | tracks/0/imported = false 11 | tracks/0/enabled = true 12 | tracks/0/keys = { 13 | "times": PoolRealArray( 0 ), 14 | "transitions": PoolRealArray( 1 ), 15 | "update": 0, 16 | "values": [ Color( 1, 1, 1, 1 ) ] 17 | } 18 | tracks/1/type = "value" 19 | tracks/1/path = NodePath(".:rect_scale") 20 | tracks/1/interp = 1 21 | tracks/1/loop_wrap = true 22 | tracks/1/imported = false 23 | tracks/1/enabled = true 24 | tracks/1/keys = { 25 | "times": PoolRealArray( 0 ), 26 | "transitions": PoolRealArray( 1 ), 27 | "update": 0, 28 | "values": [ Vector2( 1, 1 ) ] 29 | } 30 | tracks/2/type = "value" 31 | tracks/2/path = NodePath(".:visible") 32 | tracks/2/interp = 1 33 | tracks/2/loop_wrap = true 34 | tracks/2/imported = false 35 | tracks/2/enabled = true 36 | tracks/2/keys = { 37 | "times": PoolRealArray( 0 ), 38 | "transitions": PoolRealArray( 1 ), 39 | "update": 1, 40 | "values": [ false ] 41 | } 42 | -------------------------------------------------------------------------------- /scenes/dialogs/custom_dialog/DialogScript.gd: -------------------------------------------------------------------------------- 1 | extends Popup 2 | class_name CustomDialog 3 | 4 | onready var main = get_parent() 5 | onready var anim_player 6 | var dim := true 7 | var pivot_manual := false 8 | 9 | 10 | func _init(): 11 | # Classes cannot have children so I have to add them in code. 12 | # The animation player in the scene is there to make animation easier 13 | 14 | anim_player = AnimationPlayer.new() 15 | anim_player.add_animation("fade_in", preload("res://scenes/dialogs/custom_dialog/anim_fade_in.tres")) 16 | anim_player.add_animation("fade_out", preload("res://scenes/dialogs/custom_dialog/anim_fade_out.tres")) 17 | anim_player.add_animation("reset", preload("res://scenes/dialogs/custom_dialog/anim_reset.tres")) 18 | add_child(anim_player) 19 | 20 | connect("about_to_show", self, "about_to_show") 21 | connect("popup_hide", self, "popup_hide") 22 | 23 | 24 | func about_to_show(): 25 | if not pivot_manual: 26 | rect_pivot_offset = rect_size / 2 27 | 28 | if dim: 29 | main.show_shadow() 30 | 31 | anim_player.play("fade_in") 32 | 33 | 34 | func popup_hide(): 35 | anim_player.play("fade_out") 36 | 37 | if dim: 38 | main.hide_shadow() 39 | -------------------------------------------------------------------------------- /assets/themes/svg_import.py: -------------------------------------------------------------------------------- 1 | from os import listdir 2 | from os.path import isfile, join 3 | from os import getcwd 4 | from bs4 import BeautifulSoup 5 | import argparse 6 | 7 | parser = argparse.ArgumentParser(description='Provide all the SVG attributes needed for MusicDJ.') 8 | parser.add_argument('--fill', type=str, default="#000000", metavar="COLOR", help='adds the fill attribute with the specified color (in HEX, with #)') 9 | 10 | args = parser.parse_args() 11 | 12 | 13 | for path in listdir(getcwd()): 14 | if isfile(join(getcwd(), path)) and path.endswith(".svg"): 15 | file = open(path, "r") 16 | svg_string = file.read() 17 | file.close() 18 | 19 | soup = BeautifulSoup(svg_string, "xml") 20 | svg = soup.find("svg") 21 | 22 | svg["fill"] = args.fill 23 | 24 | if not "viewBox" in svg.attrs: 25 | svg["viewBox"] = "0 0 24 24" 26 | print(path + ": added viewbox") 27 | 28 | if svg["height"] != "36" or svg["width"] != "36": 29 | svg["height"] = "36" 30 | svg["width"] = "36" 31 | print(path + ": set dimentions") 32 | 33 | file = open(path, "w") 34 | file.write(str(svg)) 35 | file.close() 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yaml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: File a bug report 3 | title: "" 4 | labels: [bug] 5 | 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | Thanks for taking the time to fill out this bug report! 11 | - type: textarea 12 | id: what-happened 13 | attributes: 14 | label: What happened? 15 | description: Also tell us, what did you expect to happen? 16 | placeholder: Tell us what you see! 17 | validations: 18 | required: true 19 | - type: input 20 | id: version 21 | attributes: 22 | label: Version 23 | description: What version of MusicDJ are you running? 24 | placeholder: Eg. v1.2.2-beta 25 | validations: 26 | required: true 27 | - type: input 28 | id: os-version 29 | attributes: 30 | label: OS/Browser version 31 | placeholder: Eg. Chrome 92 on Windows 10 19043 32 | validations: 33 | required: true 34 | - type: input 35 | id: device 36 | attributes: 37 | label: Device information (phone model or PC specs) 38 | placeholder: Eg. Pixel 4 39 | validations: 40 | required: false 41 | - type: textarea 42 | id: media 43 | attributes: 44 | label: Screenshots / Videos 45 | description: You can upload screenshots or videos showing the issue. 46 | -------------------------------------------------------------------------------- /scenes/dialogs/AboutDialog.gd: -------------------------------------------------------------------------------- 1 | extends CustomDialog 2 | 3 | 4 | onready var rich_text = $VBoxContainer/ScrollContainer/RichTextLabel 5 | onready var scroll_container = $VBoxContainer/ScrollContainer 6 | 7 | var open_meta := true 8 | 9 | 10 | func _ready() -> void: 11 | # RichTextLabel.append_bbcode() doesn't work 12 | # See https://github.com/godotengine/godot/issues/18413 13 | rich_text.bbcode_text = "Version: %s\n\n" % Variables.VERSION + rich_text.bbcode_text 14 | 15 | 16 | func _on_RichTextLabel_meta_clicked(meta) -> void: 17 | if open_meta: 18 | OS.shell_open(meta) 19 | 20 | 21 | func about_to_show() -> void: 22 | scroll_container.scroll_vertical = 0 23 | .about_to_show() 24 | 25 | 26 | func _on_CloseButton_pressed() -> void: 27 | hide() 28 | 29 | 30 | func _on_ScrollContainer_scroll_started() -> void: 31 | open_meta = false 32 | 33 | 34 | func _on_ScrollContainer_scroll_ended() -> void: 35 | open_meta = true 36 | 37 | 38 | func _on_ScrollContainer_gui_input(event: InputEvent) -> void: 39 | if event.is_action_pressed("ui_down", true) or event.is_action_pressed("ui_page_down", true): 40 | scroll_container.scroll_vertical += 2000 * get_process_delta_time() 41 | elif event.is_action_pressed("ui_up", true) or event.is_action_pressed("ui_page_up", true): 42 | scroll_container.scroll_vertical -= 2000 * get_process_delta_time() 43 | -------------------------------------------------------------------------------- /scenes/Song.gd: -------------------------------------------------------------------------------- 1 | class_name Song 2 | 3 | var format := 1 4 | var bpm := 80 5 | var data := [[], [], [], []] 6 | var used_columns := [-1] 7 | 8 | 9 | func convert_to_json() -> String: 10 | return to_json( 11 | { 12 | "format": format, 13 | "bpm": bpm, 14 | "data": data 15 | } 16 | ) 17 | 18 | 19 | func from(song: Dictionary): 20 | if song.has("format"): 21 | format = song.format 22 | if song.has("bpm"): 23 | bpm = song.bpm 24 | if song.has("data"): 25 | data = song.data 26 | 27 | return self 28 | 29 | 30 | func set_tile(instrument: int, column_no:int, sample_index: int) -> void: 31 | data[instrument][column_no] = sample_index 32 | 33 | if sample_index == 0: 34 | # If all buttons in a column are clear remove that column from the play list 35 | var uses = 0 36 | for i in 4: 37 | if data[i][column_no]: 38 | uses += 1 39 | break 40 | if uses == 0: 41 | used_columns.erase(column_no) 42 | else: 43 | if not used_columns.has(column_no): 44 | used_columns.append(column_no) 45 | 46 | 47 | func add_column() -> void: 48 | for i in data: 49 | i.append(0) 50 | 51 | 52 | func remove_column(column_no: int) -> void: 53 | for i in 4: 54 | data[i].pop_back() 55 | used_columns.erase(column_no) 56 | 57 | 58 | func clear_column(column_no: int) -> void: 59 | used_columns.erase(column_no) 60 | for i in 4: 61 | data[i][column_no] = 0 62 | -------------------------------------------------------------------------------- /addons/Todo_Manager/Current.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Panel 3 | 4 | signal tree_built # used for debugging 5 | 6 | const Todo := preload("res://addons/Todo_Manager/todo_class.gd") 7 | const TodoItem := preload("res://addons/Todo_Manager/todoItem_class.gd") 8 | 9 | var sort_alphabetical := true 10 | 11 | onready var tree := $Tree as Tree 12 | 13 | func build_tree(todo_item : TodoItem, patterns : Array) -> void: 14 | tree.clear() 15 | var root := tree.create_item() 16 | root.set_text(0, "Scripts") 17 | var script := tree.create_item(root) 18 | script.set_text(0, todo_item.get_short_path() + " -------") 19 | script.set_metadata(0, todo_item) 20 | for todo in todo_item.todos: 21 | var item := tree.create_item(script) 22 | var content_header : String = todo.content 23 | if "\n" in todo.content: 24 | content_header = content_header.split("\n")[0] + "..." 25 | item.set_text(0, "(%0) - %1".format([todo.line_number, content_header], "%_")) 26 | item.set_tooltip(0, todo.content) 27 | item.set_metadata(0, todo) 28 | for pattern in patterns: 29 | if pattern[0] == todo.pattern: 30 | item.set_custom_color(0, pattern[1]) 31 | emit_signal("tree_built") 32 | 33 | 34 | func sort_alphabetical(a, b) -> bool: 35 | if a.script_path > b.script_path: 36 | return true 37 | else: 38 | return false 39 | 40 | func sort_backwards(a, b) -> bool: 41 | if a.script_path < b.script_path: 42 | return true 43 | else: 44 | return false 45 | 46 | -------------------------------------------------------------------------------- /scenes/dialogs/load_dialog/LoadItem.gd: -------------------------------------------------------------------------------- 1 | extends VBoxContainer 2 | 3 | 4 | onready var button = $Button 5 | onready var open_button = $ActionsContainer/OpenButton 6 | onready var download_button = $ActionsContainer/DownloadButton 7 | onready var share_button = $ActionsContainer/ShareButton 8 | onready var link_button = $ActionsContainer/LinkButton 9 | onready var delete_button = $ActionsContainer/DeleteButton 10 | 11 | signal expanded 12 | 13 | 14 | func _ready() -> void: 15 | var theme_path = "res://assets/themes/%s/" % Variables.options.theme 16 | 17 | open_button.get_node("VBox/Icon").texture = load(theme_path + "open_file.svg") 18 | download_button.get_node("VBox/Icon").texture = load(theme_path + "download.svg") 19 | share_button.get_node("VBox/Icon").texture = load(theme_path + "share.svg") 20 | link_button.get_node("VBox/Icon").texture = load(theme_path + "link.svg") 21 | delete_button.get_node("VBox/Icon").texture = load(theme_path + "delete.svg") 22 | 23 | $ActionsContainer.hide() 24 | 25 | func _on_Button_toggled(button_pressed: bool) -> void: 26 | if button_pressed: 27 | $ActionsContainer.modulate = Color.transparent 28 | var tween = create_tween() 29 | tween.tween_property( 30 | self, 31 | "rect_min_size:y", 32 | button.rect_size.y + get("custom_constants/separation") + $ActionsContainer.rect_size.y, 33 | 0.1 34 | ) 35 | tween.tween_callback($ActionsContainer, "show") 36 | tween.tween_callback(self, "emit_signal", ["expanded"]) 37 | tween.tween_property($ActionsContainer, "modulate", Color.white, 0.1) 38 | 39 | open_button.call_deferred("grab_focus") 40 | else: 41 | var tween = create_tween() 42 | tween.tween_property($ActionsContainer, "modulate", Color.transparent, 0.1) 43 | tween.tween_callback($ActionsContainer, "hide") 44 | tween.tween_property(self, "rect_min_size:y", 0.0, 0.1) 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MusicDJ recreated 2 | 3 | This is a recreation of the app with the same name found on Sony Ericsson devices of the 2000s. 4 | 5 | ![MusicDJ image](https://user-images.githubusercontent.com/49322676/198876697-d3a7e75d-c21b-44d5-90d2-3104591055af.jpg) 6 | 7 | 8 | ## Features 9 | * Create songs using the original samples 10 | * Open original MusicDJ MIDI files 11 | * Export the songs to the .wav format 12 | * Both a Dark and a White theme are available, more in the future 13 | 14 | ## To be added 15 | * Higher quality samples 16 | * Custom tempo 17 | 18 | ## Download 19 | 20 | * [Android (64bit)](https://github.com/pattlebass/Music-Dj/releases/latest/download/MusicDJ_64bit.apk) - Recommended 21 | * [Android (32bit)](https://github.com/pattlebass/Music-Dj/releases/latest/download/MusicDJ_32bit.apk) 22 | * [Windows](https://github.com/pattlebass/Music-Dj/releases/latest/download/MusicDJ.Windows.zip) 23 | * [Linux](https://github.com/pattlebass/Music-Dj/releases/latest/download/MusicDJ.Linux.zip) (You may have to give it executable permissions) 24 | * [HTML5 (Browser)](https://pattlebass.itch.io/musicdj) (Can be buggy on mobile devices) 25 | 26 | You might get warnings about this app not being safe. That's because I'm not a verified publisher and there is nothing I can do at the moment. 27 | 28 | On Android, you'll need to allow apps from unknown sources. If you don't know how to do that, search a tutorial for your specific Android version. 29 | 30 | ## Contributing 31 | See [contributing.md](https://github.com/pattlebass/Music-DJ/blob/main/CONTRIBUTING.md) for instructions. 32 | 33 | ## Donate 34 | If you appreciate the work that has been put into making this app, consider donating. 35 | [Donate](https://www.paypal.me/pattlebass) 36 | 37 | ## Credit for icons and fonts 38 | Icons made by [Freepik](https://www.flaticon.com/authors/freepik) from [www.flaticon.com](https://www.flaticon.com/). 39 | 40 | Gidole Font by [Andreas Larsen](https://twitter.com/larsenwork). [License](/assets/fonts/GidoleFont/License.txt) 41 | 42 | ## Social media 43 | * Twitter [@pattlebass_dev](https://twitter.com/pattlebass_dev). 44 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | Here are the rules if you want to contribute to this repository. 3 | 4 | 1. You should first open an issue describing the changes you want. You should also mention that you want to open a pull request. 5 | 2. One feature per issue/PR. It makes reviewing and merging easier. 6 | 3. When writing code, make sure to follow the [style guide](#gdscript-style-guide). 7 | 8 | ## GDScript style guide 9 | It's basically [this](https://docs.godotengine.org/en/3.6/tutorials/scripting/gdscript/gdscript_styleguide.html) but with a few changes. 10 | 11 | ### Summary 12 | 1. Use snake_case for variable names, functions and signals. 13 | 2. Signals should be in the past tense. 14 | 3. Nodes, classes and file names should use PascalCase. 15 | 4. Use 2 newlines between functions, unless they are short. 16 | 5. Use static typing as much as you can. 17 | 18 | ## Adding a new language 19 | 1. Open an issue with the `localization` label. 20 | 3. Download [this spreadsheet](https://docs.google.com/spreadsheets/d/1VEE4aROwNFXsZTRbMOShlv2E8XcYVBYYEVsRbFYKBog/edit?usp=sharing) and add your translations. 21 | 4. Export to CSV. I recommend Google Sheets or LibreOffice. Microsoft Excel doesn't support UTF-8 encoding. 22 | 5. Fork this repository and then clone your fork. If you don't want to clone it or download Godot, you can skip steps 7 and 8 and modify these files manually: `languages/text.csv`, `languages/text.csv.import` and `project.godot`. See [this commit](https://github.com/pattlebass/Music-DJ/commit/0f731ceb8ef40bb3e9e6b50cb445cd1630486db5) and [this one](https://github.com/pattlebass/Music-DJ/commit/1951c9809aba8a980f3357f04870d24ce758394e) (ignore line 87). 23 | 6. Replace `languages/text.csv` with the file you exported. 24 | 7. Open the project with the Godot version mentioned in [this file](https://github.com/pattlebass/Music-DJ/blob/main/android/.build_version). 25 | 8. In the top left, Project > Project Settings > Localization > Add > Select the language you added. 26 | 9. Commit and push the changes to your fork. 27 | 10. That's it. Now all you have to do is open a Pull Request which mentions that it fixes the issue you opened (e.g. Fixes #10). 28 | 11. Optional: If you want to update the translation whenever there are changes, I suggest subscribing to [this discussion](https://github.com/pattlebass/Music-DJ/discussions/9). 29 | -------------------------------------------------------------------------------- /scenes/dialogs/UpdateDialog.gd: -------------------------------------------------------------------------------- 1 | extends CustomDialog 2 | 3 | var asking_permission := true 4 | 5 | func _ready() -> void: 6 | if not OS.has_feature("standalone") or OS.get_name() == "HTML5": 7 | return 8 | 9 | if !OS.is_ok_left_and_cancel_right(): 10 | $VBoxContainer/HBoxContainer.move_child( 11 | $VBoxContainer/HBoxContainer/CloseButton, 12 | 0 13 | ) 14 | 15 | if Variables.options.check_updates == null: 16 | $VBoxContainer/Title.text = "DIALOG_UPDATE_TITLE_ASK" 17 | $VBoxContainer/Body.bbcode_text = tr("DIALOG_UPDATE_BODY_ASK") % "https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement" 18 | $VBoxContainer/HBoxContainer/OkButton.text = "DIALOG_UPDATE_BTN_ACCEPT" 19 | $VBoxContainer/HBoxContainer/CloseButton.text = "DIALOG_UPDATE_BTN_DENY" 20 | call_deferred("popup_centered") 21 | elif OS.get_name() != "HTML5" and Variables.options.check_updates: 22 | asking_permission = false 23 | $HTTPRequest.request("https://api.github.com/repos/pattlebass/Music-DJ/releases/latest") 24 | 25 | 26 | func _on_HTTPRequest_request_completed(_result: int, response_code: int, _headers: PoolStringArray, body: PoolByteArray) -> void: 27 | print("Received response code %s from Github" % response_code) 28 | 29 | var json_result = JSON.parse(body.get_string_from_utf8()).result 30 | 31 | if Variables.VERSION != json_result.tag_name: 32 | $VBoxContainer/Body.text = tr("DIALOG_UPDATE_BODY") % json_result.tag_name 33 | popup_centered() 34 | 35 | 36 | func _on_OkButton_pressed() -> void: 37 | if asking_permission: 38 | Variables.options.check_updates = true 39 | Variables.save_options() 40 | else: 41 | OS.shell_open("https://www.github.com/pattlebass/Music-DJ/releases/latest") 42 | hide() 43 | 44 | 45 | func _on_CloseButton_pressed(): 46 | if asking_permission: 47 | Variables.options.check_updates = false 48 | Variables.save_options() 49 | hide() 50 | 51 | 52 | func _on_Body_meta_clicked(meta) -> void: 53 | OS.shell_open(meta) 54 | 55 | 56 | func about_to_show() -> void: 57 | yield(get_tree(), "idle_frame") 58 | rect_size.y = $VBoxContainer.rect_size.y 59 | .about_to_show() 60 | 61 | 62 | func popup_hide() -> void: 63 | if asking_permission and Variables.options.check_updates == null: 64 | Variables.options.check_updates = false 65 | Variables.save_options() 66 | .popup_hide() 67 | -------------------------------------------------------------------------------- /addons/Todo_Manager/Project.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Panel 3 | 4 | signal tree_built # used for debugging 5 | 6 | const Todo := preload("res://addons/Todo_Manager/todo_class.gd") 7 | 8 | var _sort_alphabetical := true 9 | var _full_path := false 10 | 11 | onready var tree := $Tree as Tree 12 | 13 | func build_tree(todo_items : Array, ignore_paths : Array, patterns : Array, sort_alphabetical : bool, full_path : bool) -> void: 14 | _full_path = full_path 15 | tree.clear() 16 | if sort_alphabetical: 17 | todo_items.sort_custom(self, "sort_alphabetical") 18 | else: 19 | todo_items.sort_custom(self, "sort_backwards") 20 | var root := tree.create_item() 21 | root.set_text(0, "Scripts") 22 | for todo_item in todo_items: 23 | var ignore := false 24 | for ignore_path in ignore_paths: 25 | var script_path : String = todo_item.script_path 26 | if script_path.begins_with(ignore_path) or script_path.begins_with("res://" + ignore_path) or script_path.begins_with("res:///" + ignore_path): 27 | ignore = true 28 | break 29 | if ignore: 30 | continue 31 | var script := tree.create_item(root) 32 | if full_path: 33 | script.set_text(0, todo_item.script_path + " -------") 34 | else: 35 | script.set_text(0, todo_item.get_short_path() + " -------") 36 | script.set_metadata(0, todo_item) 37 | for todo in todo_item.todos: 38 | var item := tree.create_item(script) 39 | var content_header : String = todo.content 40 | if "\n" in todo.content: 41 | content_header = content_header.split("\n")[0] + "..." 42 | item.set_text(0, "(%0) - %1".format([todo.line_number, content_header], "%_")) 43 | item.set_tooltip(0, todo.content) 44 | item.set_metadata(0, todo) 45 | for pattern in patterns: 46 | if pattern[0] == todo.pattern: 47 | item.set_custom_color(0, pattern[1]) 48 | emit_signal("tree_built") 49 | 50 | 51 | func sort_alphabetical(a, b) -> bool: 52 | if _full_path: 53 | if a.script_path < b.script_path: 54 | return true 55 | else: 56 | return false 57 | else: 58 | if a.get_short_path() < b.get_short_path(): 59 | return true 60 | else: 61 | return false 62 | 63 | func sort_backwards(a, b) -> bool: 64 | if _full_path: 65 | if a.script_path > b.script_path: 66 | return true 67 | else: 68 | return false 69 | else: 70 | if a.get_short_path() > b.get_short_path(): 71 | return true 72 | else: 73 | return false 74 | -------------------------------------------------------------------------------- /scenes/dialogs/UpdateDialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://scenes/dialogs/UpdateDialog.gd" type="Script" id=1] 4 | 5 | [node name="UpdateDialog" type="PopupDialog"] 6 | margin_right = 395.0 7 | margin_bottom = 209.0 8 | input_pass_on_modal_close_click = false 9 | script = ExtResource( 1 ) 10 | 11 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 12 | anchor_right = 1.0 13 | anchor_bottom = 1.0 14 | 15 | [node name="Title" type="Label" parent="VBoxContainer"] 16 | margin_right = 473.0 17 | margin_bottom = 55.0 18 | text = "DIALOG_UPDATE_TITLE" 19 | 20 | [node name="HSeparator" type="HSeparator" parent="VBoxContainer"] 21 | margin_top = 59.0 22 | margin_right = 473.0 23 | margin_bottom = 79.0 24 | custom_constants/separation = 20 25 | 26 | [node name="Body" type="RichTextLabel" parent="VBoxContainer"] 27 | margin_top = 83.0 28 | margin_right = 473.0 29 | margin_bottom = 141.0 30 | size_flags_vertical = 3 31 | theme_type_variation = "Text" 32 | bbcode_enabled = true 33 | fit_content_height = true 34 | 35 | [node name="Control" type="Control" parent="VBoxContainer"] 36 | margin_top = 145.0 37 | margin_right = 473.0 38 | margin_bottom = 155.0 39 | rect_min_size = Vector2( 0, 10 ) 40 | 41 | [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] 42 | margin_top = 159.0 43 | margin_right = 473.0 44 | margin_bottom = 209.0 45 | rect_pivot_offset = Vector2( -258, 63 ) 46 | custom_constants/separation = 20 47 | alignment = 1 48 | 49 | [node name="OkButton" type="Button" parent="VBoxContainer/HBoxContainer"] 50 | margin_right = 309.0 51 | margin_bottom = 50.0 52 | rect_min_size = Vector2( 100, 50 ) 53 | text = "DIALOG_UPDATE_BTN_OK" 54 | 55 | [node name="CloseButton" type="Button" parent="VBoxContainer/HBoxContainer"] 56 | margin_left = 329.0 57 | margin_right = 473.0 58 | margin_bottom = 50.0 59 | rect_min_size = Vector2( 80, 50 ) 60 | text = "BTN_CLOSE" 61 | 62 | [node name="HTTPRequest" type="HTTPRequest" parent="."] 63 | body_size_limit = 20000 64 | timeout = 10.0 65 | 66 | [connection signal="meta_clicked" from="VBoxContainer/Body" to="." method="_on_Body_meta_clicked"] 67 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/OkButton" to="." method="_on_OkButton_pressed"] 68 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/CloseButton" to="." method="_on_CloseButton_pressed"] 69 | [connection signal="request_completed" from="HTTPRequest" to="." method="_on_HTTPRequest_request_completed"] 70 | -------------------------------------------------------------------------------- /scenes/dialogs/ColumnDialog.gd: -------------------------------------------------------------------------------- 1 | extends CustomDialog 2 | 3 | onready var play_button: Button = $"%PlayButton" 4 | onready var play_column_button: Button = $"%PlayColumnButton" 5 | onready var clear_button: Button = $"%ClearButton" 6 | onready var remove_button: Button = $"%RemoveButton" 7 | 8 | var column 9 | var column_no 10 | 11 | 12 | func _ready() -> void: 13 | Variables.connect("theme_changed", self, "on_theme_changed") 14 | 15 | 16 | func on_theme_changed(new_theme): 17 | var path = "res://assets/themes/%s/" % new_theme 18 | $Tear.texture = load(path.plus_file("column_tear.png")) 19 | 20 | 21 | func on_Column_Button_pressed(_column_no, _column): 22 | column = _column 23 | column_no = _column_no 24 | 25 | # var tear = get_node("Tear") 26 | # var tear_pos_x = _column.column_button.rect_global_position.x + \ 27 | # _column.column_button.rect_size.x/2 28 | # tear.global_position.x = tear_pos_x 29 | 30 | popup() 31 | 32 | 33 | func about_to_show(): 34 | var has_tiles_set := false 35 | for i in 4: 36 | if BoomBox.song.data[i][column.column_no]: 37 | has_tiles_set = true 38 | break 39 | 40 | remove_button.disabled = column_no != main.available_columns - 1 or main.available_columns == 15 41 | play_button.disabled = !has_tiles_set || BoomBox.is_playing 42 | play_column_button.disabled = !has_tiles_set || BoomBox.is_playing 43 | clear_button.disabled = !has_tiles_set 44 | 45 | set_as_minsize() 46 | 47 | # TODO: Clean-up 48 | var pos = column.column_button.rect_global_position 49 | pos.x -= rect_size.x/2 - column.column_button.rect_size.x/2 50 | pos.y += column.column_button.rect_size.x 51 | var viewport_size = get_viewport().get_visible_rect().size 52 | var pos_plus_size = pos+rect_size+Vector2(16,16) 53 | if pos_plus_size.x > viewport_size.x: 54 | pos.x -= pos_plus_size.x - viewport_size.x 55 | elif pos.x < 0: 56 | pos.x = 0 + 16 57 | 58 | rect_global_position = pos 59 | 60 | var tear_pos_x = column.column_button.rect_global_position.x + \ 61 | column.column_button.rect_size.x/2 62 | $Tear.global_position.x = tear_pos_x 63 | 64 | .about_to_show() 65 | 66 | rect_pivot_offset = Vector2(tear_pos_x - pos.x, 0) 67 | 68 | 69 | func _on_ClearButton_pressed(): 70 | column.clear() 71 | BoomBox.song.remove_column(column.column_no) 72 | 73 | hide() 74 | 75 | 76 | func _on_RemoveButton_pressed(): 77 | column.remove() 78 | main.remove_column(column.column_no) 79 | 80 | hide() 81 | 82 | 83 | func _on_PlayButton_pressed(): 84 | BoomBox.play_from_column(column_no) 85 | hide() 86 | 87 | 88 | func _on_PlayColumnButton_pressed(): 89 | BoomBox.play_column(column_no) 90 | hide() 91 | -------------------------------------------------------------------------------- /scenes/dialogs/ColumnDialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://scenes/dialogs/ColumnDialog.gd" type="Script" id=1] 4 | [ext_resource path="res://assets/themes/white/column_tear.png" type="Texture" id=2] 5 | 6 | [node name="ColumnDialog" type="PopupDialog"] 7 | anchor_top = -0.001 8 | anchor_bottom = -0.001 9 | margin_top = 0.6 10 | margin_right = 466.0 11 | margin_bottom = 50.6 12 | input_pass_on_modal_close_click = false 13 | size_flags_horizontal = 3 14 | size_flags_vertical = 3 15 | script = ExtResource( 1 ) 16 | __meta__ = { 17 | "_editor_description_": "" 18 | } 19 | 20 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 21 | anchor_right = 1.0 22 | anchor_bottom = 1.0 23 | size_flags_horizontal = 13 24 | 25 | [node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer"] 26 | margin_right = 466.0 27 | margin_bottom = 230.0 28 | custom_constants/separation = 10 29 | alignment = 1 30 | 31 | [node name="PlayButton" type="Button" parent="VBoxContainer/VBoxContainer2"] 32 | unique_name_in_owner = true 33 | margin_right = 466.0 34 | margin_bottom = 50.0 35 | rect_min_size = Vector2( 80, 50 ) 36 | disabled = true 37 | text = "BTN_PLAY" 38 | 39 | [node name="PlayColumnButton" type="Button" parent="VBoxContainer/VBoxContainer2"] 40 | unique_name_in_owner = true 41 | margin_top = 60.0 42 | margin_right = 466.0 43 | margin_bottom = 110.0 44 | rect_min_size = Vector2( 80, 50 ) 45 | disabled = true 46 | text = "BTN_PLAY_COLUMN" 47 | 48 | [node name="ClearButton" type="Button" parent="VBoxContainer/VBoxContainer2"] 49 | unique_name_in_owner = true 50 | margin_top = 120.0 51 | margin_right = 466.0 52 | margin_bottom = 170.0 53 | rect_min_size = Vector2( 80, 50 ) 54 | disabled = true 55 | text = "BTN_CLEAR" 56 | 57 | [node name="RemoveButton" type="Button" parent="VBoxContainer/VBoxContainer2"] 58 | unique_name_in_owner = true 59 | margin_top = 180.0 60 | margin_right = 466.0 61 | margin_bottom = 230.0 62 | rect_min_size = Vector2( 80, 50 ) 63 | disabled = true 64 | text = "BTN_REMOVE" 65 | 66 | [node name="Tear" type="Sprite" parent="."] 67 | position = Vector2( 25, -16.3455 ) 68 | texture = ExtResource( 2 ) 69 | 70 | [connection signal="pressed" from="VBoxContainer/VBoxContainer2/PlayButton" to="." method="_on_PlayButton_pressed"] 71 | [connection signal="pressed" from="VBoxContainer/VBoxContainer2/PlayColumnButton" to="." method="_on_PlayColumnButton_pressed"] 72 | [connection signal="pressed" from="VBoxContainer/VBoxContainer2/ClearButton" to="." method="_on_ClearButton_pressed"] 73 | [connection signal="pressed" from="VBoxContainer/VBoxContainer2/RemoveButton" to="." method="_on_RemoveButton_pressed"] 74 | -------------------------------------------------------------------------------- /scenes/dialogs/ConfirmationDialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://scenes/dialogs/ConfirmationDialog.gd" type="Script" id=1] 4 | 5 | [sub_resource type="StyleBoxEmpty" id=1] 6 | 7 | [node name="ConfirmationDialog" type="PopupDialog"] 8 | margin_left = 316.0 9 | margin_top = 201.0 10 | margin_right = 752.0 11 | margin_bottom = 402.0 12 | popup_exclusive = true 13 | script = ExtResource( 1 ) 14 | 15 | [node name="BackPanel" type="Panel" parent="."] 16 | modulate = Color( 1, 1, 1, 0 ) 17 | show_behind_parent = true 18 | margin_right = 40.0 19 | margin_bottom = 40.0 20 | theme_type_variation = "ShadowPanel" 21 | 22 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 23 | anchor_right = 1.0 24 | anchor_bottom = 1.0 25 | __meta__ = { 26 | "_edit_use_anchors_": false 27 | } 28 | 29 | [node name="Title" type="Label" parent="VBoxContainer"] 30 | margin_right = 436.0 31 | margin_bottom = 55.0 32 | text = "Are you sure?" 33 | 34 | [node name="HSeparator2" type="HSeparator" parent="VBoxContainer"] 35 | margin_top = 59.0 36 | margin_right = 436.0 37 | margin_bottom = 79.0 38 | size_flags_vertical = 3 39 | custom_styles/separator = SubResource( 1 ) 40 | 41 | [node name="Subtitle" type="RichTextLabel" parent="VBoxContainer"] 42 | margin_top = 83.0 43 | margin_right = 436.0 44 | margin_bottom = 123.0 45 | rect_min_size = Vector2( 0, 40 ) 46 | bbcode_enabled = true 47 | text = "This file will be deleted." 48 | fit_content_height = true 49 | scroll_active = false 50 | 51 | [node name="HSeparator" type="HSeparator" parent="VBoxContainer"] 52 | margin_top = 127.0 53 | margin_right = 436.0 54 | margin_bottom = 147.0 55 | size_flags_vertical = 3 56 | custom_styles/separator = SubResource( 1 ) 57 | 58 | [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] 59 | margin_top = 151.0 60 | margin_right = 436.0 61 | margin_bottom = 201.0 62 | size_flags_vertical = 3 63 | custom_constants/separation = 20 64 | alignment = 2 65 | 66 | [node name="OKButton" type="Button" parent="VBoxContainer/HBoxContainer"] 67 | margin_left = 216.0 68 | margin_right = 316.0 69 | margin_bottom = 50.0 70 | rect_min_size = Vector2( 100, 50 ) 71 | text = "OK" 72 | 73 | [node name="CancelButton" type="Button" parent="VBoxContainer/HBoxContainer"] 74 | margin_left = 336.0 75 | margin_right = 436.0 76 | margin_bottom = 50.0 77 | rect_min_size = Vector2( 100, 50 ) 78 | text = "Cancel" 79 | 80 | [connection signal="about_to_show" from="." to="." method="_on_ConfirmationDialog_about_to_show"] 81 | [connection signal="popup_hide" from="." to="." method="_on_ConfirmationDialog_popup_hide"] 82 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/OKButton" to="." method="_on_OKButton_pressed"] 83 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/CancelButton" to="." method="_on_CancelButton_pressed"] 84 | -------------------------------------------------------------------------------- /.github/workflows/itch-release.yml: -------------------------------------------------------------------------------- 1 | name: Itch.io release 2 | 3 | on: 4 | release: 5 | types: [published] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | itch-release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Fetch Github Release Asset 13 | id: fetch-release 14 | uses: dsaltares/fetch-gh-release-asset@1.0.0 15 | with: 16 | repo: "pattlebass/Music-DJ" 17 | regex: true 18 | file: "MusicDJ.*" 19 | target: "./" 20 | token: ${{ secrets.GITHUB_TOKEN }} 21 | 22 | - name: Echo files 23 | run: | 24 | echo "Files:" 25 | ls 26 | echo "Version name: ${{ steps.fetch-release.outputs.version }}" 27 | echo "Release name: ${{ steps.fetch-release.outputs.name }}" 28 | echo "Body: ${{ steps.fetch-release.outputs.body }}" 29 | 30 | - name: Butler Push Linux 31 | uses: manleydev/butler-publish-itchio-action@v1.0.3 32 | env: 33 | BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }} 34 | CHANNEL: linux 35 | VERSION: ${{ steps.fetch-release.outputs.version }} 36 | ITCH_GAME: musicdj 37 | ITCH_USER: pattlebass 38 | PACKAGE: MusicDJ.Linux.zip 39 | 40 | - name: Butler Push Windows 41 | uses: manleydev/butler-publish-itchio-action@v1.0.3 42 | env: 43 | BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }} 44 | CHANNEL: windows 45 | VERSION: ${{ steps.fetch-release.outputs.version }} 46 | ITCH_GAME: musicdj 47 | ITCH_USER: pattlebass 48 | PACKAGE: MusicDJ.Windows.zip 49 | 50 | - name: Butler Push Android 32bit 51 | uses: manleydev/butler-publish-itchio-action@v1.0.3 52 | env: 53 | BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }} 54 | CHANNEL: android-32bit 55 | VERSION: ${{ steps.fetch-release.outputs.version }} 56 | ITCH_GAME: musicdj 57 | ITCH_USER: pattlebass 58 | PACKAGE: MusicDJ_32bit.apk 59 | 60 | - name: Butler Push Android 64bit 61 | uses: manleydev/butler-publish-itchio-action@v1.0.3 62 | env: 63 | BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }} 64 | CHANNEL: android-64bit 65 | VERSION: ${{ steps.fetch-release.outputs.version }} 66 | ITCH_GAME: musicdj 67 | ITCH_USER: pattlebass 68 | PACKAGE: MusicDJ_64bit.apk 69 | 70 | - name: Butler Push HTML5 71 | uses: manleydev/butler-publish-itchio-action@v1.0.3 72 | env: 73 | BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }} 74 | CHANNEL: html5 75 | VERSION: ${{ steps.fetch-release.outputs.version }} 76 | ITCH_GAME: musicdj 77 | ITCH_USER: pattlebass 78 | PACKAGE: MusicDJ.HTML5.zip 79 | -------------------------------------------------------------------------------- /scenes/dialogs/SettingsDialog.gd: -------------------------------------------------------------------------------- 1 | extends CustomDialog 2 | 3 | onready var lang_container = $"%LangContainer" 4 | 5 | 6 | func _ready() -> void: 7 | for i in $"%ThemeContainer".get_children(): 8 | if i.has_meta("theme_name"): 9 | if i.get_meta("theme_name") == Variables.options.theme: 10 | i.set_pressed_no_signal(true) 11 | break 12 | 13 | $"%LabelVersion".text = Variables.VERSION 14 | 15 | if Variables.options.check_updates != null: 16 | $"%CheckUpdates".set_pressed_no_signal(Variables.options.check_updates) 17 | 18 | 19 | # Languages 20 | var lang_btn_group = ButtonGroup.new() 21 | 22 | # Work-around for https://github.com/godotengine/godot-proposals/issues/2378 23 | var locale_names = { 24 | "en": "English", 25 | "ro": "Română", 26 | "id": "Bahasa Indonesia", 27 | "pl": "Polski", 28 | } 29 | 30 | var lang_auto_btn = lang_container.get_node("Auto") 31 | lang_auto_btn.text = tr("SETTING_LANG_AUTO") % locale_names[OS.get_locale_language()] 32 | lang_auto_btn.group = lang_btn_group 33 | lang_auto_btn.connect("pressed", self, "on_lang_chosen", [""]) 34 | 35 | if Variables.options.language == "": 36 | lang_auto_btn.set_pressed_no_signal(true) 37 | 38 | for i in TranslationServer.get_loaded_locales(): 39 | var check_box = CheckBox.new() 40 | check_box.text = locale_names[i] 41 | check_box.group = lang_btn_group 42 | check_box.mouse_filter = Control.MOUSE_FILTER_PASS 43 | check_box.connect("pressed", self, "on_lang_chosen", [i]) 44 | 45 | if Variables.options.language == i: 46 | check_box.set_pressed_no_signal(true) 47 | 48 | lang_container.add_child(check_box) 49 | 50 | if OS.get_name() == "HTML5": 51 | # Hide Check for update 52 | $"%CheckUpdates".hide() 53 | 54 | # Warning for HTML5 55 | var label_web_disable = Label.new() 56 | label_web_disable.text = "SETTING_WEB_WARNING" 57 | label_web_disable.autowrap = true 58 | label_web_disable.theme_type_variation = "LabelSubtitle" 59 | $"%SettingsContainer".add_child_below_node( 60 | $VBoxContainer/ScrollContainer/SettingsContainer/HSeparator2, 61 | label_web_disable 62 | ) 63 | 64 | 65 | func _on_CloseButton_pressed(): 66 | hide() 67 | 68 | 69 | func about_to_show(): 70 | $VBoxContainer/ScrollContainer.scroll_vertical = 0 71 | .about_to_show() 72 | 73 | 74 | func _on_theme_chosen(button_pressed, theme_name): 75 | if button_pressed: 76 | Variables.change_theme(theme_name) 77 | Variables.options.theme = theme_name 78 | Variables.save_options() 79 | 80 | 81 | func on_lang_chosen(lang): 82 | Variables.options.language = lang 83 | Variables.save_options() 84 | 85 | if lang: 86 | TranslationServer.set_locale(lang) 87 | else: 88 | TranslationServer.set_locale(OS.get_locale_language()) 89 | 90 | 91 | func _on_CheckUpdates_toggled(button_pressed: bool) -> void: 92 | Variables.options.check_updates = button_pressed 93 | Variables.save_options() 94 | -------------------------------------------------------------------------------- /scenes/dialogs/ProgressDialog.gd: -------------------------------------------------------------------------------- 1 | extends CustomDialog 2 | 3 | onready var progress_bar = get_node("VBoxContainer/HBoxContainer2/VBoxContainer/ProgressBar") 4 | onready var title: Label = $VBoxContainer/Title 5 | onready var body: Label = $VBoxContainer/Body 6 | onready var open_button: Button = $VBoxContainer/HBoxContainer/OpenButton 7 | onready var cancel_button: Button = $VBoxContainer/HBoxContainer/CancelButton 8 | onready var download_button: Button = $VBoxContainer/HBoxContainer/DownloadButton 9 | onready var share_button: Button = $VBoxContainer/HBoxContainer/ShareButton 10 | 11 | var path = "" 12 | var after_saving = "stay" 13 | var type_of_save := "" 14 | 15 | signal cancelled 16 | 17 | # TODO: Refactor 18 | 19 | func about_to_show() -> void: 20 | progress_bar.value = 0 21 | progress_bar.show() 22 | 23 | open_button.disabled = true 24 | share_button.disabled = true 25 | title.text = "DIALOG_PROGRESS_TITLE" 26 | body.text = "" 27 | cancel_button.text = "BTN_CANCEL" 28 | 29 | set_process(true) 30 | 31 | if OS.get_name() == "Android": 32 | # share_button.show() 33 | open_button.hide() 34 | download_button.hide() 35 | elif OS.get_name() == "HTML5": 36 | share_button.hide() 37 | open_button.hide() 38 | download_button.show() 39 | after_saving = "stay" 40 | 41 | if type_of_save == "project": 42 | body.text = "DIALOG_PROGRESS_AFTER_PROJECT" 43 | else: 44 | body.text = "DIALOG_PROGRESS_KEEP_FOCUSED" 45 | 46 | $VBoxContainer.rect_size = rect_size 47 | 48 | .about_to_show() 49 | 50 | 51 | func error(code: int) -> void: 52 | body.text = tr("DIALOG_PROGRESS_ERROR") % code 53 | progress_bar.hide() 54 | 55 | share_button.hide() 56 | open_button.hide() 57 | download_button.hide() 58 | 59 | set_process(false) 60 | 61 | 62 | func _on_CancelButton_pressed() -> void: 63 | emit_signal("cancelled") 64 | hide() 65 | 66 | 67 | func _process(delta) -> void: 68 | if progress_bar.value >= progress_bar.max_value: 69 | # share_button.disabled = false 70 | open_button.disabled = false 71 | download_button.disabled = false 72 | title.text = "DIALOG_PROGRESS_TITLE_DONE" 73 | cancel_button.text = "BTN_CLOSE" 74 | 75 | progress_bar.hide() 76 | 77 | if after_saving == "close": 78 | hide() 79 | 80 | if type_of_save == "export": 81 | if OS.get_name() != "HTML5": 82 | body.text = tr("DIALOG_PROGRESS_AFTER_EXPORT") % ProjectSettings.globalize_path(path) 83 | 84 | set_process(false) 85 | else: 86 | progress_bar.value += delta 87 | 88 | 89 | func _on_OpenButton_pressed() -> void: 90 | OS.shell_open(ProjectSettings.globalize_path(Variables.saves_dir)) 91 | 92 | 93 | func _on_DownloadButton_pressed() -> void: 94 | var file_name = path.get_file() 95 | Variables.download_file(path, file_name) 96 | 97 | 98 | func _on_ShareButton_pressed() -> void: 99 | Variables.share_file(path, "", "", "", "audio/wav") 100 | -------------------------------------------------------------------------------- /scenes/dialogs/SoundDialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://scenes/dialogs/SoundDialog.gd" type="Script" id=1] 4 | 5 | [node name="SoundDialog" type="PopupDialog"] 6 | margin_right = 447.0 7 | margin_bottom = 519.0 8 | input_pass_on_modal_close_click = false 9 | script = ExtResource( 1 ) 10 | __meta__ = { 11 | "_editor_description_": "" 12 | } 13 | 14 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 15 | anchor_right = 1.0 16 | anchor_bottom = 1.0 17 | size_flags_horizontal = 3 18 | size_flags_vertical = 3 19 | alignment = 1 20 | __meta__ = { 21 | "_edit_use_anchors_": false 22 | } 23 | 24 | [node name="Label" type="Label" parent="VBoxContainer"] 25 | margin_right = 447.0 26 | margin_bottom = 55.0 27 | text = "Bass, column 0" 28 | 29 | [node name="HSeparator" type="HSeparator" parent="VBoxContainer"] 30 | margin_top = 59.0 31 | margin_right = 447.0 32 | margin_bottom = 61.0 33 | 34 | [node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] 35 | margin_top = 65.0 36 | margin_right = 447.0 37 | margin_bottom = 445.0 38 | size_flags_horizontal = 3 39 | size_flags_vertical = 3 40 | follow_focus = true 41 | scroll_horizontal_enabled = false 42 | __meta__ = { 43 | "_edit_use_anchors_": false 44 | } 45 | 46 | [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer"] 47 | margin_right = 447.0 48 | size_flags_horizontal = 3 49 | 50 | [node name="HSeparator2" type="HSeparator" parent="VBoxContainer"] 51 | modulate = Color( 1, 1, 1, 0 ) 52 | margin_top = 449.0 53 | margin_right = 447.0 54 | margin_bottom = 455.0 55 | custom_constants/separation = 6 56 | 57 | [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] 58 | margin_top = 459.0 59 | margin_right = 447.0 60 | margin_bottom = 519.0 61 | rect_min_size = Vector2( 0, 25 ) 62 | size_flags_horizontal = 3 63 | custom_constants/separation = 20 64 | alignment = 1 65 | 66 | [node name="OkButton" type="Button" parent="VBoxContainer/HBoxContainer"] 67 | margin_right = 100.0 68 | margin_bottom = 60.0 69 | rect_min_size = Vector2( 100, 60 ) 70 | text = "OK" 71 | 72 | [node name="ClearButton" type="Button" parent="VBoxContainer/HBoxContainer"] 73 | margin_left = 120.0 74 | margin_right = 265.0 75 | margin_bottom = 60.0 76 | rect_min_size = Vector2( 100, 60 ) 77 | text = "BTN_CLEAR" 78 | 79 | [node name="CancelButton" type="Button" parent="VBoxContainer/HBoxContainer"] 80 | margin_left = 285.0 81 | margin_right = 447.0 82 | margin_bottom = 60.0 83 | rect_min_size = Vector2( 100, 60 ) 84 | text = "BTN_CANCEL" 85 | 86 | [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] 87 | 88 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/OkButton" to="." method="_on_OkButton_pressed"] 89 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/ClearButton" to="." method="_on_ClearButton_pressed"] 90 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/CancelButton" to="." method="_on_CancelButton_pressed"] 91 | -------------------------------------------------------------------------------- /scenes/dialogs/SaveDialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://scenes/dialogs/SaveDialog.gd" type="Script" id=1] 4 | 5 | [node name="SaveDialog" type="PopupDialog"] 6 | margin_left = 300.0 7 | margin_top = 100.0 8 | margin_right = 739.0 9 | margin_bottom = 365.0 10 | input_pass_on_modal_close_click = false 11 | script = ExtResource( 1 ) 12 | __meta__ = { 13 | "_editor_description_": "" 14 | } 15 | 16 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 17 | anchor_right = 1.0 18 | anchor_bottom = 1.0 19 | size_flags_horizontal = 5 20 | 21 | [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer"] 22 | margin_right = 439.0 23 | margin_bottom = 211.0 24 | size_flags_vertical = 3 25 | 26 | [node name="Label" type="Label" parent="VBoxContainer/VBoxContainer"] 27 | margin_right = 439.0 28 | margin_bottom = 55.0 29 | text = "Save as" 30 | 31 | [node name="Control" type="Control" parent="VBoxContainer/VBoxContainer"] 32 | margin_top = 59.0 33 | margin_right = 439.0 34 | margin_bottom = 89.0 35 | rect_min_size = Vector2( 0, 30 ) 36 | 37 | [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/VBoxContainer"] 38 | margin_top = 93.0 39 | margin_right = 439.0 40 | margin_bottom = 143.0 41 | alignment = 1 42 | 43 | [node name="LineEdit" type="LineEdit" parent="VBoxContainer/VBoxContainer/HBoxContainer"] 44 | margin_left = 19.0 45 | margin_right = 419.0 46 | margin_bottom = 50.0 47 | rect_min_size = Vector2( 400, 50 ) 48 | custom_colors/cursor_color = Color( 0, 0, 0, 0.5 ) 49 | max_length = 100 50 | placeholder_text = "File name here" 51 | placeholder_alpha = 0.2 52 | caret_blink = true 53 | 54 | [node name="LabelError" type="Label" parent="VBoxContainer/VBoxContainer"] 55 | margin_top = 147.0 56 | margin_right = 439.0 57 | margin_bottom = 185.0 58 | theme_type_variation = "LabelSubtitle" 59 | custom_colors/font_color = Color( 1, 0.2, 0.290196, 1 ) 60 | text = "Error" 61 | 62 | [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] 63 | margin_top = 215.0 64 | margin_right = 439.0 65 | margin_bottom = 265.0 66 | custom_constants/separation = 20 67 | alignment = 2 68 | 69 | [node name="OkButton" type="Button" parent="VBoxContainer/HBoxContainer"] 70 | margin_left = 26.0 71 | margin_right = 257.0 72 | margin_bottom = 50.0 73 | rect_min_size = Vector2( 100, 50 ) 74 | text = "DIALOG_SAVE_BTN" 75 | 76 | [node name="CancelButton" type="Button" parent="VBoxContainer/HBoxContainer"] 77 | margin_left = 277.0 78 | margin_right = 439.0 79 | margin_bottom = 50.0 80 | rect_min_size = Vector2( 100, 50 ) 81 | text = "BTN_CANCEL" 82 | 83 | [connection signal="text_changed" from="VBoxContainer/VBoxContainer/HBoxContainer/LineEdit" to="." method="_on_LineEdit_text_changed"] 84 | [connection signal="text_entered" from="VBoxContainer/VBoxContainer/HBoxContainer/LineEdit" to="." method="_on_LineEdit_text_entered"] 85 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/OkButton" to="." method="_on_OkButton_pressed"] 86 | [connection signal="pressed" from="VBoxContainer/HBoxContainer/CancelButton" to="." method="_on_CancelButton_pressed"] 87 | -------------------------------------------------------------------------------- /scenes/Column.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://scenes/Column.gd" type="Script" id=1] 4 | 5 | [sub_resource type="RectangleShape2D" id=1] 6 | extents = Vector2( 40, 40 ) 7 | 8 | [sub_resource type="Animation" id=2] 9 | resource_name = "fade_in" 10 | length = 0.1 11 | tracks/0/type = "value" 12 | tracks/0/path = NodePath(".:modulate") 13 | tracks/0/interp = 1 14 | tracks/0/loop_wrap = true 15 | tracks/0/imported = false 16 | tracks/0/enabled = true 17 | tracks/0/keys = { 18 | "times": PoolRealArray( 0, 0.1 ), 19 | "transitions": PoolRealArray( 1, 1 ), 20 | "update": 0, 21 | "values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ] 22 | } 23 | 24 | [node name="Column" type="VBoxContainer"] 25 | margin_right = 40.0 26 | margin_bottom = 40.0 27 | theme_type_variation = "ColumnContainer" 28 | script = ExtResource( 1 ) 29 | 30 | [node name="ColumnButton" type="Button" parent="."] 31 | margin_right = 80.0 32 | margin_bottom = 59.0 33 | rect_min_size = Vector2( 40, 59 ) 34 | mouse_filter = 1 35 | theme_type_variation = "ListItem" 36 | text = "0" 37 | 38 | [node name="Button1" type="Button" parent="."] 39 | margin_top = 69.0 40 | margin_right = 80.0 41 | margin_bottom = 149.0 42 | rect_min_size = Vector2( 80, 80 ) 43 | mouse_filter = 1 44 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 45 | shortcut_in_tooltip = false 46 | 47 | [node name="Area2D" type="Area2D" parent="Button1"] 48 | position = Vector2( 40, 40 ) 49 | monitoring = false 50 | 51 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Button1/Area2D"] 52 | shape = SubResource( 1 ) 53 | 54 | [node name="Button2" type="Button" parent="."] 55 | margin_top = 159.0 56 | margin_right = 80.0 57 | margin_bottom = 239.0 58 | rect_min_size = Vector2( 80, 80 ) 59 | mouse_filter = 1 60 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 61 | shortcut_in_tooltip = false 62 | 63 | [node name="Area2D" type="Area2D" parent="Button2"] 64 | position = Vector2( 40, 40 ) 65 | monitoring = false 66 | 67 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Button2/Area2D"] 68 | shape = SubResource( 1 ) 69 | 70 | [node name="Button3" type="Button" parent="."] 71 | margin_top = 249.0 72 | margin_right = 80.0 73 | margin_bottom = 329.0 74 | rect_min_size = Vector2( 80, 80 ) 75 | mouse_filter = 1 76 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 77 | shortcut_in_tooltip = false 78 | 79 | [node name="Area2D" type="Area2D" parent="Button3"] 80 | position = Vector2( 40, 40 ) 81 | monitoring = false 82 | 83 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Button3/Area2D"] 84 | shape = SubResource( 1 ) 85 | 86 | [node name="Button4" type="Button" parent="."] 87 | margin_top = 339.0 88 | margin_right = 80.0 89 | margin_bottom = 419.0 90 | rect_min_size = Vector2( 80, 80 ) 91 | mouse_filter = 1 92 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 93 | shortcut_in_tooltip = false 94 | 95 | [node name="Area2D" type="Area2D" parent="Button4"] 96 | position = Vector2( 40, 40 ) 97 | monitoring = false 98 | 99 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Button4/Area2D"] 100 | shape = SubResource( 1 ) 101 | 102 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 103 | anims/fade_in = SubResource( 2 ) 104 | -------------------------------------------------------------------------------- /addons/AutoExportVersion/AutoExportVersion.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends EditorPlugin 3 | 4 | ## Path to the version script file (bruh). 5 | const VERSION_SCRIPT_PATH = "res://version.gd" 6 | 7 | ## Change the code of this method to return a String that will identify your version. 8 | ## Two example ways of doing so are provided, just uncomment one of them. 9 | ## You can use the arguments to customize your version based on selected platform or something. 10 | func _fetch_version(features: PoolStringArray, is_debug: bool, path: String, flags: int) -> String: 11 | ### Git version 12 | # Version is number of commits. Requires git installed 13 | # and project inside git repository with at least 1 commit. 14 | 15 | # var output := [] 16 | # OS.execute("git", PoolStringArray(["rev-list", "--count", "HEAD"]), true, output) 17 | # if output.empty() or output[0].empty(): 18 | # push_error("Failed to fetch version. Make sure you have git installed and project is inside valid git directory.") 19 | # else: 20 | # return output[0].trim_suffix("\n") 21 | 22 | ### Profile version 23 | # Extracts version from an export profile. Requires export_presets.cfg to exist. 24 | # The version will be taken from the first profile that contains non-empty value 25 | # in one of the version_keys. 26 | 27 | var version_keys := ["file_version", "product_version", "version/name"] 28 | 29 | var config := ConfigFile.new() 30 | if config.load("res://export_presets.cfg") == OK: 31 | var version := "" 32 | for section in config.get_sections(): 33 | if section.ends_with(".options"): 34 | for key in config.get_section_keys(section): 35 | for check_key in version_keys: 36 | if key.ends_with(check_key): 37 | version = str(config.get_value(section, key)) 38 | 39 | if not version.empty(): 40 | break 41 | if not version.empty(): 42 | break 43 | if not version.empty(): 44 | break 45 | 46 | if version.empty(): 47 | push_error("Failed to fetch version. No valid version key found in export profiles.") 48 | else: 49 | return version 50 | else: 51 | push_error("Failed to fetch version. export_presets.cfg does not exist.") 52 | 53 | return "" 54 | 55 | ### Unimportant stuff here. 56 | 57 | var exporter: AEVExporter 58 | 59 | func _enter_tree() -> void: 60 | exporter = AEVExporter.new() 61 | exporter.plugin = self 62 | add_export_plugin(exporter) 63 | 64 | if not File.new().file_exists(VERSION_SCRIPT_PATH): 65 | exporter.store_version(_fetch_version(PoolStringArray(), true, "", 0)) 66 | 67 | func _exit_tree() -> void: 68 | remove_export_plugin(exporter) 69 | 70 | class AEVExporter extends EditorExportPlugin: 71 | var plugin 72 | 73 | func _export_begin(features: PoolStringArray, is_debug: bool, path: String, flags: int): 74 | var version: String = plugin._fetch_version(features, is_debug, path, flags) 75 | if version.empty(): 76 | push_error("Version string is empty. Make sure your _fetch_version() is configured properly.") 77 | 78 | store_version(version) 79 | 80 | func store_version(version: String): 81 | var script = GDScript.new() 82 | script.source_code = str("extends Reference\nconst VERSION = \"", version, "\"\n") 83 | if ResourceSaver.save(VERSION_SCRIPT_PATH, script) != OK: 84 | push_error("Failed to save version file. Make sure the path is valid.") 85 | --------------------------------------------------------------------------------