diff --git a/app/app_icon/README.md b/app/app_icon/README.md new file mode 100644 index 0000000..8fa4049 --- /dev/null +++ b/app/app_icon/README.md @@ -0,0 +1,12 @@ +## Application icon for Windows + +* To create *.ico file from icon_256.png use https://redketchup.io/icon-converter
+**Icon** in windows export preset
+`icon.ico - 16x16, 32x32, 48x48, 64x64, 128x128, 256x256`
+ +* You should use different icon for taskbar. +Otherwise Windows will downscale 32x32 image to 24x24
+**Windows Native Icon** in project settings
+`toolbar_icon.ico - 16x16, 24x24, 32x32`
+ +Refer to: https://learn.microsoft.com/en-us/windows/win32/uxguide/vis-icons \ No newline at end of file diff --git a/app/app_icon/create_icon.gd b/app/app_icon/create_icon.gd deleted file mode 100644 index e8ec576..0000000 --- a/app/app_icon/create_icon.gd +++ /dev/null @@ -1,263 +0,0 @@ -class_name CreateIcon -extends SceneTree - -# /home/nordup/projects/godot/godot-the-gates/bin/godot.linuxbsd.editor.x86_64 -s create_icon.gd icon.ico icon_256.png icon_128.png icon_64.png icon_48.png icon_32.png icon_16.png -func _init() -> void: - var arguments = OS.get_cmdline_args() - if arguments.size() != 4 and arguments.size() != 9: - print( - "Usage:\n godot -s CreateIcon.gd name ...\n", - "\n", - "Creates uncompressed windows ico file.\n", - "Add --headless to hide Godot console.\n", - "\n", - "Arguments:\n", - " godot path to Godot 4 beta2+ executable\n", - " name path to created icon\n", - " provide one or six files. If one provided it will be scaled for all\n", - " icon resolutions. Multiple files should be 16x16, 32x32, 48x48, 64x64,\n", - " 128x128\n and 256x256 pixels big." - ) - quit() - return - var images := [] - if arguments.size() == 9: - var names := [arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8]] - var check_names := {} - for name in names: - if check_names.has(name): - printerr("File ", name, " was added more than once") - return - check_names[name] = true - images = load_images(names) - else: - images = prepare_images(arguments[3]) - if not images.is_empty(): - save_icon(arguments[2], images) - quit() - - -func load_images(paths: Array) -> Array: - var images := [] - for path in paths: - var image := Image.new() - var error = image.load(path) - if error: - printerr("Could not load image: ", path) - return [] - image.convert(Image.FORMAT_RGBA8) - images.append(image) - images.sort_custom(sort_images_by_size) - var index := 0 - for size in [16, 32, 48, 64, 128, 256]: - var image: Image = images[index] - if image.get_width() != size: - printerr("Image has incorrect width: ", image.get_width(), " expected: ", size) - return [] - if image.get_height() != size: - printerr("Image has incorrect height: ", image.get_height(), " expected: ", size) - return [] - index += 1 - return images - - -func prepare_images(path: String) -> Array: - var images := [] - for size in [16, 32, 48, 64, 128, 256]: - var image := Image.new() - var error = image.load(path) - if error: - printerr("Could not load image: ", path) - return [] - image.convert(Image.FORMAT_RGBA8) - image.resize(size, size) - images.append(image) - return images - - -func save_icon(destination_path: String, images: Array) -> void: - var file = FileAccess.open(destination_path, FileAccess.WRITE) - if not file: - print("Could not open file for writing!\n", file.get_open_error()) - return - var icon_creator := IconCreator.new() - file.store_buffer(icon_creator.generate_icon(images)) - - -static func sort_images_by_size(a: Image, b: Image) -> bool: - return a.get_width() < b.get_width() - - -class IconCreator: - const ADLER_MOD := 65521 - const ZLIB_BLOCK_SIZE := 16384 - const CRC_TABLE_SIZE := 256 - const ICON_ENTRY_SIZE := 16 - var PNG_SIGNATURE := PackedByteArray([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0a]) - var IHDR_SIGNATURE := PackedByteArray([0x49, 0x48, 0x44, 0x52]) - var IDAT_SIGNATURE := PackedByteArray([0x49, 0x44, 0x41, 0x54]) - var IEND_SIGNATURE := PackedByteArray([0x49, 0x45, 0x4e, 0x44]) - - var crc_table: Array - - - func _init() -> void: - crc_table = generate_crc_table() - - - func generate_icon(images: Array) -> PackedByteArray: - var result := PackedByteArray() - result.append_array(generate_icon_header(images.size())) - var offset := result.size() + images.size() * ICON_ENTRY_SIZE - var pngs := [] - for image in images: - assert(image.get_format() == Image.FORMAT_RGBA8) - var png := generate_png(image) - pngs.append(png) - var icon_entry := generate_icon_entry(image, png.size(), offset) - result.append_array(icon_entry) - offset += png.size() - for png in pngs: - result.append_array(png) - return result - - - func generate_icon_header(size: int) -> PackedByteArray: - var result := PackedByteArray() - result.append_array(lsb_first(0x0, 2)) # reserved - result.append_array(lsb_first(0x1, 2)) # icon type - result.append_array(lsb_first(size, 2)) # image count - return result - - - func generate_icon_entry(image: Image, size: int, offset: int) -> PackedByteArray: - var result := PackedByteArray() - result.append(image.get_width()) # width - result.append(image.get_height()) # height - result.append(0x0) # size of color palette - result.append(0x0) # reserved - result.append_array(lsb_first(0, 2)) # no color planes - result.append_array(lsb_first(32, 2)) # bits per pixel - result.append_array(lsb_first(size)) # size of embedded png - result.append_array(lsb_first(offset)) - return result - - - func generate_png(image: Image) -> PackedByteArray: - var result := PackedByteArray() - var header_chunk := generate_header_chunk(image.get_width(), image.get_height()) - var data_chunk := generate_data_chunk(image) - var end_chunk := generate_end_chunk() - result.append_array(PNG_SIGNATURE) - result.append_array(generate_chunk(header_chunk)) - result.append_array(generate_chunk(data_chunk)) - result.append_array(generate_chunk(end_chunk)) - return result - - - func generate_chunk(chunk: PackedByteArray) -> PackedByteArray: - var result := PackedByteArray() - result.append_array(msb_first(chunk.size() - 4)) - result.append_array(chunk) - result.append_array(msb_first(crc(chunk))) - return result - - - func generate_header_chunk(width: int, height: int) -> PackedByteArray: - var result = PackedByteArray() - result.append_array(IHDR_SIGNATURE) - result.append_array(msb_first(width)) - result.append_array(msb_first(height)) - result.append(0x8) # bit depth - result.append(0x6) # color type 32bit RGBA - result.append(0x0) # compression method - result.append(0x0) # filter method - result.append(0x0) # interlace method - return result - - - func generate_data_chunk(image: Image) -> PackedByteArray: - var filtered_pixels := filtered_pixels(image.get_width(), image.get_height(), image.get_data()) - var zlib_block_count := filtered_pixels.size() / ZLIB_BLOCK_SIZE + (1 if filtered_pixels.size() % ZLIB_BLOCK_SIZE else 0) - var result := PackedByteArray() - result.append_array(IDAT_SIGNATURE) - result.append(0x78) # CMF - result.append(0x1) # FLG - for i in range(zlib_block_count): - var last_block := i == zlib_block_count - 1 - result.append(0x1 if last_block else 0x0) - var block_size := filtered_pixels.size() % ZLIB_BLOCK_SIZE if last_block else ZLIB_BLOCK_SIZE - result.append_array(block_size(block_size)) - for b in range(block_size): - result.append(filtered_pixels[i * ZLIB_BLOCK_SIZE + b]) - result.append_array(msb_first(adler(filtered_pixels))) - return result - - - func generate_end_chunk() -> PackedByteArray: - return IEND_SIGNATURE - - - func filtered_pixels(width: int, height: int, pixels: PackedByteArray) -> PackedByteArray: - var result = PackedByteArray() - for row in range(height): - result.append(0x0) - for column in range(width * 4): - result.append(pixels[row * width * 4 + column]) - return result - - - func generate_crc_table() -> Array: - var result = [] - var c: int - for n in range(CRC_TABLE_SIZE): - c = n - for _i in range(8): - if (c & 1) != 0: - c = 0xedb88320 ^ (c >> 1) - else: - c = c >> 1 - result.append(c) - return result - - - func crc(bytes: PackedByteArray) -> int: - var c := 0xffffffff - for i in range(bytes.size()): - c = crc_table[(c ^ bytes[i]) & 0xff] ^ (c >> 8) - return c ^ 0xffffffff - - - func adler(bytes: PackedByteArray) -> int: - var a := 1 - var b := 0 - for byte in bytes: - a = (a + byte) % ADLER_MOD - b = (a + b) % ADLER_MOD - return b << 16 | a - - - func msb_first(i: int) -> PackedByteArray: - var result := PackedByteArray() - result.append((i >> 24) & 0xff) - result.append((i >> 16) & 0xff) - result.append((i >> 8) & 0xff) - result.append(i & 0xff) - return result - - - func lsb_first(i: int, size = 4) -> PackedByteArray: - var result := PackedByteArray() - for _s in range(size): - result.append(i & 0xff) - i = i >> 8 - return result - - - func block_size(i: int) -> PackedByteArray: - var result := PackedByteArray() - result.append(i & 0xff) - result.append((i >> 8) & 0xff) - result.append((i & 0xff) ^ 0xff) - result.append(((i >> 8) & 0xff) ^ 0xff) - return result diff --git a/app/app_icon/icon.ico b/app/app_icon/icon.ico index af0626b..24d4d63 100644 Binary files a/app/app_icon/icon.ico and b/app/app_icon/icon.ico differ diff --git a/app/app_icon/icon_128.png b/app/app_icon/icon_128.png deleted file mode 100644 index 8a6ae70..0000000 Binary files a/app/app_icon/icon_128.png and /dev/null differ diff --git a/app/app_icon/icon_128.png.import b/app/app_icon/icon_128.png.import deleted file mode 100644 index 367d336..0000000 --- a/app/app_icon/icon_128.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b6obl18d4rst8" -path="res://.godot/imported/icon_128.png-dd149ee4a813c6f15a713cf4e76f2636.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://app_icon/icon_128.png" -dest_files=["res://.godot/imported/icon_128.png-dd149ee4a813c6f15a713cf4e76f2636.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/app/app_icon/icon_16.png b/app/app_icon/icon_16.png deleted file mode 100644 index ce30616..0000000 Binary files a/app/app_icon/icon_16.png and /dev/null differ diff --git a/app/app_icon/icon_16.png.import b/app/app_icon/icon_16.png.import deleted file mode 100644 index 1a15d1e..0000000 --- a/app/app_icon/icon_16.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cabc07y323y18" -path="res://.godot/imported/icon_16.png-114e9c962c662dd89e2e26b3fda184b9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://app_icon/icon_16.png" -dest_files=["res://.godot/imported/icon_16.png-114e9c962c662dd89e2e26b3fda184b9.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/app/app_icon/icon_32.png b/app/app_icon/icon_32.png deleted file mode 100644 index e887a86..0000000 Binary files a/app/app_icon/icon_32.png and /dev/null differ diff --git a/app/app_icon/icon_32.png.import b/app/app_icon/icon_32.png.import deleted file mode 100644 index cdb4885..0000000 --- a/app/app_icon/icon_32.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b34pepmam8xma" -path="res://.godot/imported/icon_32.png-22ff4c1638b937182c8c48e9e54ecd00.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://app_icon/icon_32.png" -dest_files=["res://.godot/imported/icon_32.png-22ff4c1638b937182c8c48e9e54ecd00.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/app/app_icon/icon_48.png b/app/app_icon/icon_48.png deleted file mode 100644 index 8914de0..0000000 Binary files a/app/app_icon/icon_48.png and /dev/null differ diff --git a/app/app_icon/icon_48.png.import b/app/app_icon/icon_48.png.import deleted file mode 100644 index ce05569..0000000 --- a/app/app_icon/icon_48.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://4islpl4ygsxu" -path="res://.godot/imported/icon_48.png-b9419b8036bb3d47c1d5cd47a8cdbf6d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://app_icon/icon_48.png" -dest_files=["res://.godot/imported/icon_48.png-b9419b8036bb3d47c1d5cd47a8cdbf6d.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/app/app_icon/icon_64.png b/app/app_icon/icon_64.png deleted file mode 100644 index ca90783..0000000 Binary files a/app/app_icon/icon_64.png and /dev/null differ diff --git a/app/app_icon/icon_64.png.import b/app/app_icon/icon_64.png.import deleted file mode 100644 index bce88b2..0000000 --- a/app/app_icon/icon_64.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bspjfnilokiqb" -path="res://.godot/imported/icon_64.png-c35eee1ed6b5f2fe2c5000b91086f71d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://app_icon/icon_64.png" -dest_files=["res://.godot/imported/icon_64.png-c35eee1ed6b5f2fe2c5000b91086f71d.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/app/app_icon/replace_icon.gd b/app/app_icon/replace_icon.gd deleted file mode 100644 index 52d7978..0000000 --- a/app/app_icon/replace_icon.gd +++ /dev/null @@ -1,196 +0,0 @@ -class_name ReplaceIcon -extends SceneTree - -const ICON_SIZE := 359559 - - -func _init() -> void: - var arguments = OS.get_cmdline_args() - if arguments.size() != 4: - print( - "Usage:\n", - " godot -s ReplaceIcon.gd icon name\n", - "\n", - "Replaces ico file in windows PE32+ executable.\n", - "Add --headless to hide Godot console.\n", - "\n", - "Arguments:\n", - " godot path to Godot 4 beta2+ executable\n", - " icon path to new icon\n", - " name path to modified PE32+ executable\n" - ) - quit() - return - replace_icon(arguments[3], arguments[2]) - quit() - - -func replace_icon(executable_path: String, icon_path: String) -> void: - var icon_replacer := IconReplacer.new() - - var images := get_images(icon_path) - - var executable_file := FileAccess.open(executable_path, FileAccess.READ_WRITE) - if not executable_file: - printerr("Could not open executable file!") - return - var headers := executable_file.get_buffer(2048) - var resources_section_entry := icon_replacer.find_resources_section_entry(headers) - if not resources_section_entry: - return - if resources_section_entry.size_of_raw_data < 359559: - printerr("Could not find icons in executable. Wrong template?") - return - - executable_file.seek(resources_section_entry.pointer_to_raw_data) - var resources := executable_file.get_buffer(resources_section_entry.size_of_raw_data) - - resources = icon_replacer.replace_icons(resources, resources_section_entry.virtual_address, images) - if not resources.is_empty(): - executable_file.seek(resources_section_entry.pointer_to_raw_data) - executable_file.store_buffer(resources) - - -func get_images(icon_path: String) -> Dictionary: - var file := FileAccess.open(icon_path, FileAccess.READ) - if not file: - printerr("Could not open icon file!\n", file.get_open_error()) - return {} - return Icon.new(file.get_buffer(ICON_SIZE)).images - - -class IconReplacer: - enum ImageType {PE32 = 0x10b, PE32_PLUS = 0x20b} - - const PE_HEADER_ADDRESS_OFFSET := 0x3c - const NUMBER_OF_SECTIONS_OFFSET := 0x6 - const SIZE_OF_OPTIONAL_HEADER_OFFSET := 0x14 - const MAGIC_OFFSET := 0x18 - const COFF_HEADER_SIZE := 24 - const SECTION_SIZE := 40 - const SIZE_OF_RAW_DATA_OFFSET := 0x10 - const POINTER_TO_RAW_DATA_OFFSET := 0x14 - const DATA_ENTRY_SIZE := 16 - - - func replace_icons(resources: PackedByteArray, rva_offset: int, images: Dictionary) -> PackedByteArray: - var data_entries := find_data_entries(resources) - for data_size in images.keys(): - var icon_offset := find_icon_offset(data_entries, data_size, rva_offset) - if resources.slice(icon_offset + 1, icon_offset + 4).get_string_from_ascii() != "PNG": - printerr("Wrong icon type, PNG signature missing") - return PackedByteArray() - resources = replace(resources, images[data_size], icon_offset) - return resources - - - func find_icon_offset(data_entries: Array, data_size: int, rva_offset: int) -> int: - for data_entry in data_entries: - if data_entry.size == data_size: - return data_entry.rva - rva_offset - return -1 - - - func find_resources_section_entry(headers: PackedByteArray) -> SectionEntry: - var header_offset := lsb_first(headers, PE_HEADER_ADDRESS_OFFSET, 2) - var image_type := lsb_first(headers, header_offset + MAGIC_OFFSET, 2) - if not image_type == ImageType.PE32_PLUS: - printerr("Only PE32+ executables are handled.") - return null - var sections_size := lsb_first(headers, header_offset + NUMBER_OF_SECTIONS_OFFSET, 2) - var size_of_optional_header := lsb_first(headers, header_offset + SIZE_OF_OPTIONAL_HEADER_OFFSET, 2) - var sections_offset := header_offset + COFF_HEADER_SIZE + size_of_optional_header - for _i in range(sections_size): - var section_name = headers.slice(sections_offset, sections_offset + 8).get_string_from_ascii() - if section_name == ".rsrc": - return SectionEntry.new(headers.slice(sections_offset, sections_offset + SECTION_SIZE)) - sections_offset += SECTION_SIZE - return null - - - func find_data_entries(resources: PackedByteArray) -> Array: - var result := [] - parse_table(resources, 0, result) - return result - - - func parse_table(resources: PackedByteArray, offset: int, data_entries: Array) -> void: - var entry_count := lsb_first(resources, offset + 14, 2) - offset += 16 - for _i in range(entry_count): - parse_entry(resources, offset, data_entries) - offset += 8 - - - func parse_entry(resources: PackedByteArray, offset: int, data_entries: Array) -> void: - var entry_offset := lsb_first(resources, offset + 4) - if entry_offset & 0x80000000: - parse_table(resources, entry_offset & 0x7fffffff, data_entries) - else: - parse_data_entry(resources, entry_offset, data_entries) - - - func parse_data_entry(resources: PackedByteArray, offset: int, data_entries: Array) -> void: - data_entries.append(DataEntry.new(resources.slice(offset, offset + DATA_ENTRY_SIZE))) - - - static func lsb_first(bytes: PackedByteArray, offset: int, byte_count = 4) -> int: - var result := 0 - for i in range(byte_count, 0, -1): - result = (result << 8) + bytes[offset + i - 1] - return result - - - static func replace(bytes: PackedByteArray, replacement: PackedByteArray, index: int) -> PackedByteArray: - for i in range(replacement.size()): - bytes.set(index + i, replacement[i]) - return bytes - - -class SectionEntry: - const VIRTUAL_ADDRESS_OFFSET := 0x0c - const SIZE_OF_RAW_DATA_OFFSET = 0x10 - const POINTER_TO_RAW_DATA_OFFSET = 0x14 - - var virtual_address: int - var pointer_to_raw_data: int - var size_of_raw_data: int - - - func _init(bytes: PackedByteArray) -> void: - virtual_address = IconReplacer.lsb_first(bytes, VIRTUAL_ADDRESS_OFFSET) - size_of_raw_data = IconReplacer.lsb_first(bytes, SIZE_OF_RAW_DATA_OFFSET) - pointer_to_raw_data = IconReplacer.lsb_first(bytes, POINTER_TO_RAW_DATA_OFFSET) - - -class DataEntry: - const RVA_OFFSET := 0 - const SIZE_OFFSET := 4 - - var rva: int - var size: int - - - func _init(bytes: PackedByteArray) -> void: - rva = IconReplacer.lsb_first(bytes, RVA_OFFSET) - size = IconReplacer.lsb_first(bytes, SIZE_OFFSET) - - -class Icon: - const IMAGE_COUNT_OFFSET := 0x4 - const IMAGES_OFFSET := 0x6 - const ICON_ENTRY_SIZE := 16 - const SIZE_OFFSET := 0x8 - const DATA_OFFSET := 0xc - - var images := {} - - - func _init(bytes: PackedByteArray) -> void: - var image_count := IconReplacer.lsb_first(bytes, IMAGE_COUNT_OFFSET, 2) - var offset := IMAGES_OFFSET - for i in image_count: - var size := IconReplacer.lsb_first(bytes, offset + SIZE_OFFSET) - var data_offset := IconReplacer.lsb_first(bytes, offset + DATA_OFFSET) - images[size] = bytes.slice(data_offset, data_offset + size) - offset += ICON_ENTRY_SIZE diff --git a/app/app_icon/toolbar_icon.ico b/app/app_icon/toolbar_icon.ico new file mode 100644 index 0000000..a67787a Binary files /dev/null and b/app/app_icon/toolbar_icon.ico differ diff --git a/app/export_presets.cfg b/app/export_presets.cfg index 83b8f2b..3b02ea4 100644 --- a/app/export_presets.cfg +++ b/app/export_presets.cfg @@ -74,10 +74,10 @@ codesign/description="" codesign/custom_options=PackedStringArray() application/modify_resources=true application/icon="res://app_icon/icon.ico" -application/console_wrapper_icon="res://app_icon/icon.ico" +application/console_wrapper_icon="" application/icon_interpolation=4 application/file_version="" -application/product_version="0.7.0.0" +application/product_version="0.8.1.0" application/company_name="TheGates" application/product_name="TheGates" application/file_description="TheGates - Building new Internet" diff --git a/app/project.godot b/app/project.godot index 44b82c0..4877d97 100644 --- a/app/project.godot +++ b/app/project.godot @@ -19,7 +19,7 @@ run/max_fps=144 boot_splash/bg_color=Color(0.156863, 0.156863, 0.156863, 1) boot_splash/show_image=false config/icon="res://app_icon/icon.svg" -config/windows_native_icon="res://app_icon/icon.ico" +config/windows_native_icon="res://app_icon/toolbar_icon.ico" [audio]