From 031879cf4610b188702386e0a9b8859bc9cccbc5 Mon Sep 17 00:00:00 2001 From: Matt Jenkins Date: Mon, 6 May 2024 15:02:56 +0100 Subject: [PATCH] Added import and export for the level designer --- ExportPanel.gd | 15 ++++ Fonts/Ac437_Trident_8x8.ttf | Bin 0 -> 23912 bytes Fonts/Ac437_Trident_8x8.ttf.import | 33 +++++++ Icons/Internal.png | Bin 0 -> 593 bytes icon.svg.import => Icons/Internal.png.import | 11 +-- Icons/User.png | Bin 0 -> 586 bytes Icons/User.png.import | 34 +++++++ ImportPanel.gd | 18 ++++ LevelEditor.gd | 49 +++++++---- LevelEditor.tscn | 88 ++++++++++++++++++- LoadPanel.gd | 25 +++--- MainTheme.tres | 9 +- export_presets.cfg | 10 +-- icon.ico | Bin 0 -> 105746 bytes icon.png | Bin 0 -> 1306 bytes icon.png.import | 34 +++++++ icon.svg | 1 - project.godot | 5 +- 18 files changed, 291 insertions(+), 41 deletions(-) create mode 100644 ExportPanel.gd create mode 100644 Fonts/Ac437_Trident_8x8.ttf create mode 100644 Fonts/Ac437_Trident_8x8.ttf.import create mode 100644 Icons/Internal.png rename icon.svg.import => Icons/Internal.png.import (63%) create mode 100644 Icons/User.png create mode 100644 Icons/User.png.import create mode 100644 ImportPanel.gd create mode 100644 icon.ico create mode 100644 icon.png create mode 100644 icon.png.import delete mode 100644 icon.svg diff --git a/ExportPanel.gd b/ExportPanel.gd new file mode 100644 index 0000000..b97b689 --- /dev/null +++ b/ExportPanel.gd @@ -0,0 +1,15 @@ +extends PanelContainer + +func _ready() -> void: + pass + +func show_panel(ob : Dictionary) -> void: + var text = JSON.stringify(ob, " ") + var b64 = Marshalls.utf8_to_base64(text) + $VBoxContainer/ExportedCode.text = b64 + visible = true + $VBoxContainer/ExportedCode.select_all() + $VBoxContainer/ExportedCode.copy() + +func _on_close_pressed() -> void: + visible = false diff --git a/Fonts/Ac437_Trident_8x8.ttf b/Fonts/Ac437_Trident_8x8.ttf new file mode 100644 index 0000000000000000000000000000000000000000..481524b10b4581380fbf467339f151a70713e696 GIT binary patch literal 23912 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 literal 0 HcmV?d00001 diff --git a/Fonts/Ac437_Trident_8x8.ttf.import b/Fonts/Ac437_Trident_8x8.ttf.import new file mode 100644 index 0000000..2ca8e16 --- /dev/null +++ b/Fonts/Ac437_Trident_8x8.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://c7hlot6dsm01s" +path="res://.godot/imported/Ac437_Trident_8x8.ttf-700703d9d4f422a555a6606f86fe6f3a.fontdata" + +[deps] + +source_file="res://Fonts/Ac437_Trident_8x8.ttf" +dest_files=["res://.godot/imported/Ac437_Trident_8x8.ttf-700703d9d4f422a555a6606f86fe6f3a.fontdata"] + +[params] + +Rendering=null +antialiasing=0 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Icons/Internal.png b/Icons/Internal.png new file mode 100644 index 0000000000000000000000000000000000000000..d14a8b1f97daebb09b27c046ff35e4f53d355e91 GIT binary patch literal 593 zcmV-X0EX>4Tx04R}tkv&MmKpe$iQ)@*k4t5Z6h)~7BE-K;vxAeOiZLMN=c5CXT3@PWeK{ zW0mt3XRTai&3p0}hI0DKGS_JiBY{OML4pVcRg_SMjVP@;DHc++AMfBFa{Usy6mpfo z$gzM5G{~+W{11M2YvrdVy`)ea2)sDX$0!io1sXNS`95}>#tGnm2Cnp$zfuQgKS{5( zw8#V$mfCgGy0}1FmMa>u6eyR_i_3Fq^Yaq4RCM> zj1?$*y~DeE+I#!=OtZfqjaPE9up4Jw00006VoOIv0LlQE07%i{YwrL6010qNS#tmY z4#WTe4#WYKD-Ig~000McNliru=miE1D=e2d;W_{S02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{001dTL_t&-(_>&D02mn<7#P;ATlXJbA}A<`5koaLg-nF3 fpj-iIj>HB4dxZ-U4Pn^d00000NkvXXu0mjf(hu-7 literal 0 HcmV?d00001 diff --git a/icon.svg.import b/Icons/Internal.png.import similarity index 63% rename from icon.svg.import rename to Icons/Internal.png.import index 6f5a69f..c57ec79 100644 --- a/icon.svg.import +++ b/Icons/Internal.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://yd2mphfafhah" -path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +uid="uid://cxjq8xhs0a7lg" +path="res://.godot/imported/Internal.png-271ce861b95dc4d3723bafb9fe9d4a5d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://icon.svg" -dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] +source_file="res://Icons/Internal.png" +dest_files=["res://.godot/imported/Internal.png-271ce861b95dc4d3723bafb9fe9d4a5d.ctex"] [params] @@ -32,6 +32,3 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/Icons/User.png b/Icons/User.png new file mode 100644 index 0000000000000000000000000000000000000000..841586691f0486e713690991b341d809bd29f301 GIT binary patch literal 586 zcmV-Q0=4~#P)EX>4Tx04R}tkv&MmKpe$iQ)@*k4t5Z6h)~7BE-K;vxAeOiZLMN=c5CXT3@PWeK{ zW0mt3XRTai&3p0}hI0DKGS_JiBY{OML4pVcRg_SMjVP@;DHc++AMfBFa{Usy6mpfo z$gzM5G{~+W{11M2YvrdVy`)ea2)sDX$0!io1sXNS`95}>#tGnm2Cnp$zfuQgKS{5( zw8#V$mfCgGy0}1FmMa>u6eyR_i_3Fq^Yaq4RCM> zj1?$*y~DeE+I#!=OtZfqjaPE9up4Jw00006VoOIv0LlQE07%i{YwrL6010qNS#tmY z4#WTe4#WYKD-Ig~000McNliru=miE1EDYlpS2X|t02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{001IML_t&-(_>&D2CQ4R?msR*6CurXP{4@IVL?Gbj10sA Y0Qu_*96%VSH2?qr07*qoM6N<$f@Xg29RL6T literal 0 HcmV?d00001 diff --git a/Icons/User.png.import b/Icons/User.png.import new file mode 100644 index 0000000..87b096a --- /dev/null +++ b/Icons/User.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhp4jjlq62fmu" +path="res://.godot/imported/User.png-6910c28b928ba74ae97b734bee82a7d1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Icons/User.png" +dest_files=["res://.godot/imported/User.png-6910c28b928ba74ae97b734bee82a7d1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/ImportPanel.gd b/ImportPanel.gd new file mode 100644 index 0000000..2d23b36 --- /dev/null +++ b/ImportPanel.gd @@ -0,0 +1,18 @@ +extends PanelContainer + +signal object_imported(data : Dictionary) + +func show_panel() -> void: + $VBoxContainer/ImportedCode.text = "" + $VBoxContainer/ImportedCode.grab_focus() + visible = true + +func _on_import_pressed() -> void: + var text = Marshalls.base64_to_utf8($VBoxContainer/ImportedCode.text) + var ob = JSON.parse_string(text) + if ob != null: + object_imported.emit(ob) + visible = false + +func _on_cancel_pressed() -> void: + visible = false diff --git a/LevelEditor.gd b/LevelEditor.gd index fff048e..f5c3912 100644 --- a/LevelEditor.gd +++ b/LevelEditor.gd @@ -4,10 +4,7 @@ extends Node2D func _on_background_item_selected(index: int) -> void: $Background.texture = load($VBoxContainer/Background.get_item_metadata(index)) - -func _on_save_pressed() -> void: - if $VBoxContainer/Name.text == "": - return +func get_level_object() -> Dictionary: var data : Dictionary = { "name": $VBoxContainer/Name.text, "left": $VBoxContainer/Left.get_selected_text(), @@ -21,6 +18,12 @@ func _on_save_pressed() -> void: var brick = get_node("Bricks/Row%d/Col%d" % [row, col]) s += brick.type data.data.push_back(s) + return data + +func _on_save_pressed() -> void: + if $VBoxContainer/Name.text == "": + return + var data : Dictionary = get_level_object() DirAccess.make_dir_recursive_absolute("user://Levels") var f = FileAccess.open("user://Levels/%s.json" % data.name, FileAccess.WRITE) f.store_string(JSON.stringify(data, " ")) @@ -43,17 +46,20 @@ func _on_load_pressed() -> void: func _on_load_panel_load_file(filename: String) -> void: if FileAccess.file_exists(filename): var data = JSON.parse_string(FileAccess.get_file_as_string(filename)) - if data != null: - $VBoxContainer/Name.text = data.name - $VBoxContainer/Left.select_by_name(data.left) - $VBoxContainer/Right.select_by_name(data.right) - $VBoxContainer/Background.select_by_name(data.background) - $Background.texture = load($VBoxContainer/Background.get_selected_filename()) - for row in 18: - for col in 13: - var brick = get_node("Bricks/Row%d/Col%d" % [row, col]) - var c = data.data[row].substr(col, 1) - brick.set_brick_type(c) + load_level_from_object(data) + +func load_level_from_object(data : Dictionary) -> void: + if data != null: + $VBoxContainer/Name.text = data.name + $VBoxContainer/Left.select_by_name(data.left) + $VBoxContainer/Right.select_by_name(data.right) + $VBoxContainer/Background.select_by_name(data.background) + $Background.texture = load($VBoxContainer/Background.get_selected_filename()) + for row in 18: + for col in 13: + var brick = get_node("Bricks/Row%d/Col%d" % [row, col]) + var c = data.data[row].substr(col, 1) + brick.set_brick_type(c) func _on_new_pressed() -> void: @@ -66,3 +72,16 @@ func _on_new_pressed() -> void: for col in 13: var brick = get_node("Bricks/Row%d/Col%d" % [row, col]) brick.set_brick_type(" ") + + +func _on_export_pressed() -> void: + $ExportPanel.show_panel(get_level_object()) + + +func _on_import_pressed() -> void: + $ImportPanel.show_panel() + + +func _on_import_panel_object_imported(data: Dictionary) -> void: + load_level_from_object(data) + pass # Replace with function body. diff --git a/LevelEditor.tscn b/LevelEditor.tscn index 5912dfb..f1ef717 100644 --- a/LevelEditor.tscn +++ b/LevelEditor.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://bxkneahqum6hb"] +[gd_scene load_steps=11 format=3 uid="uid://bxkneahqum6hb"] [ext_resource type="Script" path="res://LevelEditor.gd" id="1_p7hit"] [ext_resource type="Script" path="res://LevelEditCell.gd" id="2_ayd4g"] @@ -8,6 +8,8 @@ [ext_resource type="Script" path="res://LevelSelector.gd" id="6_brm2b"] [ext_resource type="Script" path="res://BackgroundSelector.gd" id="7_x1vot"] [ext_resource type="Script" path="res://LoadPanel.gd" id="8_0o6x4"] +[ext_resource type="Script" path="res://ExportPanel.gd" id="9_nmcps"] +[ext_resource type="Script" path="res://ImportPanel.gd" id="10_q6s0l"] [node name="LevelEditor" type="Node2D"] texture_filter = 1 @@ -2027,6 +2029,23 @@ focus_mode = 0 theme = ExtResource("4_usb0o") text = "SAVE" +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Import" type="Button" parent="VBoxContainer/HBoxContainer3"] +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 0 +theme = ExtResource("4_usb0o") +text = "IMPORT" + +[node name="Export" type="Button" parent="VBoxContainer/HBoxContainer3"] +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 0 +theme = ExtResource("4_usb0o") +text = "EXPORT" + [node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] layout_mode = 2 @@ -2075,10 +2094,77 @@ focus_mode = 0 theme = ExtResource("4_usb0o") text = "CANCEL" +[node name="ExportPanel" type="PanelContainer" parent="."] +visible = false +offset_left = 464.0 +offset_top = 16.0 +offset_right = 624.0 +offset_bottom = 344.0 +theme = ExtResource("4_usb0o") +script = ExtResource("9_nmcps") + +[node name="VBoxContainer" type="VBoxContainer" parent="ExportPanel"] +layout_mode = 2 + +[node name="ExportedCode" type="TextEdit" parent="ExportPanel/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme = ExtResource("4_usb0o") +text = "ewogICJiYWNrZ3JvdW5kIjogIlJlZEJveGVzIiwKICAiZGF0YSI6IFsKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgIHNzcyAgICAgIiwKICAgICIgICAgIENDQyAgICAgIiwKICAgICIgICAgIEdHRyAgICAgIiwKICAgICIgICAgIFJSUiAgICAgIiwKICAgICIgICAgIEJCQiAgICAgIiwKICAgICIgICAgIE1NTSAgICAgIiwKICAgICIgICAgIHNzcyAgICAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgIGcgICBnICAgZyAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgICAgICAgICAgIiwKICAgICIgICAgICAgICAgICAgIgogIF0sCiAgImxlZnQiOiAiRFVOS0FOT0lEIiwKICAibmFtZSI6ICJUT1dFUiIsCiAgInJpZ2h0IjogIkRVTktBTk9JRCIKfQ==" +editable = false +wrap_mode = 1 +autowrap_mode = 1 + +[node name="Close" type="Button" parent="ExportPanel/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("4_usb0o") +text = "CLOSE" + +[node name="ImportPanel" type="PanelContainer" parent="."] +visible = false +offset_left = 464.0 +offset_top = 16.0 +offset_right = 624.0 +offset_bottom = 344.0 +theme = ExtResource("4_usb0o") +script = ExtResource("10_q6s0l") + +[node name="VBoxContainer" type="VBoxContainer" parent="ImportPanel"] +layout_mode = 2 + +[node name="ImportedCode" type="TextEdit" parent="ImportPanel/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme = ExtResource("4_usb0o") +placeholder_text = "Paste code here" +wrap_mode = 1 +autowrap_mode = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ImportPanel/VBoxContainer"] +layout_mode = 2 + +[node name="Import" type="Button" parent="ImportPanel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme = ExtResource("4_usb0o") +text = "IMPORT" + +[node name="Cancel" type="Button" parent="ImportPanel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme = ExtResource("4_usb0o") +text = "CANCEL" + [connection signal="item_selected" from="VBoxContainer/Background" to="." method="_on_background_item_selected"] [connection signal="pressed" from="VBoxContainer/HBoxContainer/Load" to="." method="_on_load_pressed"] [connection signal="pressed" from="VBoxContainer/HBoxContainer/Save" to="." method="_on_save_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer3/Import" to="." method="_on_import_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer3/Export" to="." method="_on_export_pressed"] [connection signal="pressed" from="VBoxContainer/HBoxContainer2/New" to="." method="_on_new_pressed"] [connection signal="pressed" from="VBoxContainer/HBoxContainer2/Exit" to="." method="_on_exit_pressed"] [connection signal="load_file" from="LoadPanel" to="." method="_on_load_panel_load_file"] [connection signal="pressed" from="LoadPanel/VBoxContainer/HBoxContainer/Cancel" to="LoadPanel" method="_on_cancel_pressed"] +[connection signal="pressed" from="ExportPanel/VBoxContainer/Close" to="ExportPanel" method="_on_close_pressed"] +[connection signal="object_imported" from="ImportPanel" to="." method="_on_import_panel_object_imported"] +[connection signal="pressed" from="ImportPanel/VBoxContainer/HBoxContainer/Import" to="ImportPanel" method="_on_import_pressed"] +[connection signal="pressed" from="ImportPanel/VBoxContainer/HBoxContainer/Cancel" to="ImportPanel" method="_on_cancel_pressed"] diff --git a/LoadPanel.gd b/LoadPanel.gd index 45123a7..4254ee3 100644 --- a/LoadPanel.gd +++ b/LoadPanel.gd @@ -9,26 +9,31 @@ func update_level_list() -> void: vb.remove_child(k) k.queue_free() - for file in DirAccess.get_files_at("res://Levels"): - if file.ends_with(".json"): - var data = JSON.parse_string(FileAccess.get_file_as_string("res://Levels/%s" % file)) - var b = Button.new() - b.theme = load("res://MainTheme.tres") - b.text = data.name - b.size_flags_horizontal = Control.SIZE_EXPAND_FILL - b.pressed.connect(_on_load_file_pressed.bind(b)) - b.set_meta("filename", "res://Levels/%s" % file) - vb.add_child(b) for file in DirAccess.get_files_at("user://Levels"): if file.ends_with(".json"): var data = JSON.parse_string(FileAccess.get_file_as_string("user://Levels/%s" % file)) var b = Button.new() b.theme = load("res://MainTheme.tres") b.text = data.name + b.theme_type_variation = "UserFile" b.size_flags_horizontal = Control.SIZE_EXPAND_FILL b.pressed.connect(_on_load_file_pressed.bind(b)) b.set_meta("filename", "user://Levels/%s" % file) + b.icon = load("res://Icons/User.png") vb.add_child(b) + for file in DirAccess.get_files_at("res://Levels"): + if file.ends_with(".json"): + var data = JSON.parse_string(FileAccess.get_file_as_string("res://Levels/%s" % file)) + var b = Button.new() + b.theme = load("res://MainTheme.tres") + b.theme_type_variation = "InternalFile" + b.text = data.name + b.size_flags_horizontal = Control.SIZE_EXPAND_FILL + b.pressed.connect(_on_load_file_pressed.bind(b)) + b.set_meta("filename", "res://Levels/%s" % file) + b.icon = load("res://Icons/Internal.png") + vb.add_child(b) + func show_panel() -> void: update_level_list() diff --git a/MainTheme.tres b/MainTheme.tres index 091a2d8..5957631 100644 --- a/MainTheme.tres +++ b/MainTheme.tres @@ -1,8 +1,9 @@ -[gd_resource type="Theme" load_steps=14 format=3 uid="uid://cfvww0geatnnk"] +[gd_resource type="Theme" load_steps=15 format=3 uid="uid://cfvww0geatnnk"] [ext_resource type="FontFile" uid="uid://dfkm2dibf0c3b" path="res://Fonts/fonts-DSEG_v046/DSEG7-Classic-MINI/DSEG7ClassicMini-Italic.ttf" id="1_17to7"] [ext_resource type="FontFile" uid="uid://bx41ej4o03nbx" path="res://Fonts/arkanoid/Arka_solid.ttf" id="1_s07ae"] [ext_resource type="FontFile" uid="uid://by778rb8miy2e" path="res://Fonts/Ac437_Trident_9x16.ttf" id="2_7inlg"] +[ext_resource type="FontFile" uid="uid://c7hlot6dsm01s" path="res://Fonts/Ac437_Trident_8x8.ttf" id="4_btndm"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tyvdl"] content_margin_left = 3.0 @@ -102,6 +103,8 @@ Button/styles/hover = SubResource("StyleBoxFlat_l4f7v") Button/styles/normal = SubResource("StyleBoxFlat_ibocc") Button/styles/pressed = SubResource("StyleBoxFlat_ebwwv") HSeparator/styles/separator = SubResource("StyleBoxEmpty_y3y82") +InternalFile/base_type = &"Button" +InternalFile/colors/font_color = Color(0.670588, 0.458824, 0.52549, 1) Label/font_sizes/font_size = 20 Label/fonts/font = ExtResource("2_7inlg") LineEdit/font_sizes/font_size = 20 @@ -120,8 +123,12 @@ Numbers/constants/shadow_outline_size = 3 Numbers/font_sizes/font_size = 18 Numbers/fonts/font = ExtResource("1_17to7") PanelContainer/styles/panel = SubResource("StyleBoxFlat_sf0ln") +TextEdit/font_sizes/font_size = 9 +TextEdit/fonts/font = ExtResource("4_btndm") Upgrade/base_type = &"Label" Upgrade/colors/font_color = Color(0, 0, 0, 1) Upgrade/font_sizes/font_size = 16 Upgrade/fonts/font = ExtResource("2_7inlg") +UserFile/base_type = &"Button" +UserFile/colors/font_color = Color(0.439216, 0.603922, 0.529412, 1) VSeparator/styles/separator = SubResource("StyleBoxEmpty_m7r63") diff --git a/export_presets.cfg b/export_presets.cfg index 43e3ac8..19eeb69 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -109,16 +109,16 @@ codesign/timestamp_server_url="" codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PackedStringArray() -application/modify_resources=false -application/icon="" -application/console_wrapper_icon="" +application/modify_resources=true +application/icon="res://icon.ico" +application/console_wrapper_icon="res://icon.ico" application/icon_interpolation=4 application/file_version="" application/product_version="" application/company_name="Majenko Technologies" application/product_name="Dunkanoid" -application/file_description="" -application/copyright="" +application/file_description="Dunkanoid" +application/copyright="2024 Majenko Technologies" application/trademarks="" application/export_angle=0 ssh_remote_deploy/enabled=false diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ae3ac007fa252f37f95c5045a371be6667505f63 GIT binary patch literal 105746 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 literal 0 HcmV?d00001 diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..92fef5cf73c8a54a59544fc62435737e5c7a1b0b GIT binary patch literal 1306 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZY*#J5GJ(R5fTIWXv>rvQ4rt+87?yGM;FC-G8J8w3*}mF%>$h$>A$VawZ%oW~lT`j4cNp2`^W2;gd(uDn#Pi1Q#=n;77!+`SSy#E&^n2ki zh9xUkKjAGX;OG(6sNQ>cclE96-`{;U@0aflFWR_4Iz0v$Eo@2N?k)_c7-ledTzr`Q z9w@?D;1OBOz`%C|gc+x5^GO2**-JcqUD;o-vhipeH2uEr1Qe1iag8W(&d<$F%`0JW zE=o--Nlj5G&n(GMaQE~L2yf&QXJBCZB58A;+Hd5lF9rby76wKKhAG9O0;$`wMHPT-nN{Q^vWW|} z-uZU7?6$T(P}!2bTq`PTRe^@h4|TX}`66JwH_SAsp(IfUHUz|$@mcBUgG`yIrSL~` z#Z?uc;R||Vc3%6XUT^dN(9WwlzpuW&xzJWIwQ^pw)N~dD&M$dg-_~vCdU5b?wf}Fc zf8XYwR%;AkOxoY_IEc|UslKjm-|M&9+S;-2qqkWFFlr@i==l5Jdp}6>gnMnEsfg@i zCV}-JKQ^#vuy0?NFQ{;IMz7fKdZW124UFsg&M*orW(w-~D}22C(E7ZP19JTGbI)zd zzgKbldTp&tkA&z1r#JC?zbt+I_VVS)iAnLSUl#m(QnPLE&YP#UrThD(-##C|C5FA@ z*sEJqc z`w_t}=f70DA^UgXvDHi=4!<_u?_Ih0G5a_Bnmc#z|0?d$))gZ z_vU^7D!)Jfoi*ukD5I8wn!Q`?_ACu6HBH8Ei_>qUU9W%rb5G^ diff --git a/project.godot b/project.godot index 6461776..7cf7e4e 100644 --- a/project.godot +++ b/project.godot @@ -11,11 +11,14 @@ config_version=5 [application] config/name="Dunkanoid" +config/version="0.5.2" run/main_scene="res://Intro.tscn" config/features=PackedStringArray("4.2", "Forward Plus") run/max_fps=30 boot_splash/show_image=false -config/icon="res://icon.svg" +config/icon="res://icon.png" +config/macos_native_icon="res://icon.png" +config/windows_native_icon="res://icon.ico" [autoload]